Joindre une politique de projet (SDK) - Rekognition

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Joindre une politique de projet (SDK)

Vous associez une politique de projet à un projet Amazon Rekognition Custom Labels en appelant l'PutProjectpolicyopération.

Associez plusieurs politiques de projet à un projet enPutProjectPolicy appelant chaque politique de projet que vous souhaitez ajouter. Vous pouvez associer jusqu'à cinq politiques de projet à un projet. Si vous devez ajouter d'autres stratégies de projet, vous pouvez demander une augmentation de limite.

Lorsque vous associez pour la première fois une politique de projet unique à un projet, ne spécifiez pas d'ID de révision dans le paramètrePolicyRevisionId d'entrée. Le formulaire de réponsePutProjectPolicy est un identifiant de révision pour la politique de projet qu'Amazon Rekognition Custom Labels crée pour vous. Vous pouvez utiliser l'ID de révision pour mettre à jour ou supprimer la dernière révision d'une politique de projet. Amazon Rekognition Custom Labels conserve uniquement la dernière révision de la politique de projet. Si vous essayez de mettre à jour ou de supprimer une version précédente d'une politique de projet, vous obtenez unInvalidPolicyRevisionIdException message d'erreur.

Pour mettre à jour une politique de projet existante, spécifiez l'ID de révision de la politique de projet dans le paramètrePolicyRevisionId d'entrée. Vous pouvez obtenir les ID de révision des politiques de projet d'un projet en appelant ListProjectPolicies.

Après avoir associé une politique de projet à un projet source, vous pouvez copier le modèle du projet source vers le projet de destination. Pour plus d'informations, veuillez consulter Copier un modèle (SDK).

Pour supprimer une politique de projet d'un projet, appelez DeleteProjectPolicy. Pour obtenir la liste des politiques de projet associées à un projet, appelez ListProjectPolicies.

Pour associer une politique de projet à un projet (SDK)
  1. Si vous ne l'avez pas déjà fait, installez et configurez lesAWS SDKAWS CLI et. Pour plus d'informations, veuillez consulter Étape 4 : Configuration des AWS SDK AWS CLI et.

  2. Créez un document de politique de projet.

  3. Utilisez le code suivant pour joindre la politique du projet au projet, dans leAWS compte de confiance, qui contient la version du modèle que vous souhaitez copier. Pour obtenir l'ARN du projet, appelez DescribeProjects. Pour obtenir la version du modèle ARN appelez DescribeProjectVersions.

    AWS CLI

    Modifiez les valeurs suivantes :

    • project-arnà l'ARN du projet source dans leAWS compte de confiance qui contient la version du modèle que vous souhaitez copier.

    • policy-nameau nom de la politique que vous choisissez.

    • principalAu principal auquel vous souhaitez autoriser ou refuser l'accès aux versions du modèle que vous spécifiezModel version ARN.

    • project-version-arnà l'ARN de la version du modèle que vous voulez copier.

    Si vous souhaitez mettre à jour une politique de projet existante, spécifiez lepolicy-revision-id paramètre et fournissez l'ID de révision de la politique de projet souhaitée.

    aws rekognition put-project-policy \ --project-arn project-arn \ --policy-name policy-name \ --policy-document '{ "Version":"2012-10-17", "Statement":[{ "Effect":"ALLOW or DENY", "Principal":{ "AWS":"principal" }, "Action":"rekognition:CopyProjectVersion", "Resource":"project-version-arn" }]}' \ --profile custom-labels-access
    Python

    Utilisez le code suivant : Fournissez les paramètres de ligne de commande suivants :

    • project_arn— L'ARN du projet source auquel vous souhaitez associer la politique de projet.

    • policy_name— Un nom de politique que vous choisissez.

    • project_policy— Le fichier qui contient le document de politique du projet,.

    • policy_revision_id— (Facultatif). Si vous souhaitez mettre à jour une révision existante d'une politique de projet, spécifiez l'ID de révision de la politique de projet.

    # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 """ Purpose Amazon Rekognition Custom Labels model example used in the service documentation: https://docs.aws.amazon.com/rekognition/latest/customlabels-dg/md-copy-model-sdk.html Shows how to attach a project policy to an Amazon Rekognition Custom Labels project. """ import boto3 import argparse import logging import json from botocore.exceptions import ClientError logger = logging.getLogger(__name__) def put_project_policy(rek_client, project_arn, policy_name, policy_document_file, policy_revision_id=None): """ Attaches a project policy to an Amazon Rekognition Custom Labels project. :param rek_client: The Amazon Rekognition Custom Labels Boto3 client. :param policy_name: A name for the project policy. :param project_arn: The Amazon Resource Name (ARN) of the source project that you want to attach the project policy to. :param policy_document_file: The JSON project policy document to attach to the source project. :param policy_revision_id: (Optional) The revision of an existing policy to update. Pass None to attach new policy. :return The revision ID for the project policy. """ try: policy_document_json = "" response = None with open(policy_document_file, 'r') as policy_document: policy_document_json = json.dumps(json.load(policy_document)) logger.info( "Attaching %s project_policy to project %s.", policy_name, project_arn) if policy_revision_id is None: response = rek_client.put_project_policy(ProjectArn=project_arn, PolicyName=policy_name, PolicyDocument=policy_document_json) else: response = rek_client.put_project_policy(ProjectArn=project_arn, PolicyName=policy_name, PolicyDocument=policy_document_json, PolicyRevisionId=policy_revision_id) new_revision_id = response['PolicyRevisionId'] logger.info( "Finished creating project policy %s. Revision ID: %s", policy_name, new_revision_id) return new_revision_id except ClientError as err: logger.exception( "Couldn't attach %s project policy to project %s: %s }", policy_name, project_arn, err.response['Error']['Message'] ) raise def add_arguments(parser): """ Adds command line arguments to the parser. :param parser: The command line parser. """ parser.add_argument( "project_arn", help="The Amazon Resource Name (ARN) of the project " "that you want to attach the project policy to." ) parser.add_argument( "policy_name", help="A name for the project policy." ) parser.add_argument( "project_policy", help="The file containing the project policy JSON" ) parser.add_argument( "--policy_revision_id", help="The revision of an existing policy to update. " "If you don't supply a value, a new project policy is created.", required=False ) def main(): logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") try: # get command line arguments parser = argparse.ArgumentParser(usage=argparse.SUPPRESS) add_arguments(parser) args = parser.parse_args() print(f"Attaching policy to {args.project_arn}") session = boto3.Session(profile_name='custom-labels-access') rekognition_client = session.client("rekognition") # Attach a new policy or update an existing policy. response = put_project_policy(rekognition_client, args.project_arn, args.policy_name, args.project_policy, args.policy_revision_id) print( f"project policy {args.policy_name} attached to project {args.project_arn}") print(f"Revision ID: {response}") except ClientError as err: print("Problem attaching project policy: %s", err) if __name__ == "__main__": main()
    Java V2

    Utilisez le code suivant : Fournissez les paramètres de ligne de commande suivants :

    • project_arn— L'ARN du projet source auquel vous souhaitez associer la politique de projet.

    • project_policy_name— Un nom de politique que vous choisissez.

    • project_policy_document— Le fichier qui contient le document de politique du projet.

    • project_policy_revision_id— (Facultatif). Si vous souhaitez mettre à jour une révision existante d'une politique de projet, spécifiez l'ID de révision de la politique de projet.

    /* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: Apache-2.0 */ package com.example.rekognition; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.logging.Level; import java.util.logging.Logger; import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.rekognition.RekognitionClient; import software.amazon.awssdk.services.rekognition.model.PutProjectPolicyRequest; import software.amazon.awssdk.services.rekognition.model.RekognitionException; public class PutProjectPolicy { public static final Logger logger = Logger.getLogger(PutProjectPolicy.class.getName()); public static void putMyProjectPolicy(RekognitionClient rekClient, String projectArn, String projectPolicyName, String projectPolicyFileName, String projectPolicyRevisionId) throws IOException { try { Path filePath = Path.of(projectPolicyFileName); String policyDocument = Files.readString(filePath); String[] logArguments = new String[] { projectPolicyFileName, projectPolicyName }; PutProjectPolicyRequest putProjectPolicyRequest = null; logger.log(Level.INFO, "Attaching Project policy: {0} to project: {1}", logArguments); // Attach the project policy. if (projectPolicyRevisionId == null) { putProjectPolicyRequest = PutProjectPolicyRequest.builder().projectArn(projectArn) .policyName(projectPolicyName).policyDocument(policyDocument).build(); } else { putProjectPolicyRequest = PutProjectPolicyRequest.builder().projectArn(projectArn) .policyName(projectPolicyName).policyRevisionId(projectPolicyRevisionId) .policyDocument(policyDocument) .build(); } rekClient.putProjectPolicy(putProjectPolicyRequest); logger.log(Level.INFO, "Attached Project policy: {0} to project: {1}", logArguments); } catch ( RekognitionException e) { logger.log(Level.SEVERE, "Client error occurred: {0}", e.getMessage()); throw e; } } public static void main(String args[]) { final String USAGE = "\n" + "Usage: " + "<project_arn> <project_policy_name> <policy_document> <project_policy_revision_id>\n\n" + "Where:\n" + " project_arn - The ARN of the project that you want to attach the project policy to.\n\n" + " project_policy_name - A name for the project policy.\n\n" + " project_policy_document - The file name of the project policy.\n\n" + " project_policy_revision_id - (Optional) The revision ID of the project policy that you want to update.\n\n"; if (args.length < 3 || args.length > 4) { System.out.println(USAGE); System.exit(1); } String projectArn = args[0]; String projectPolicyName = args[1]; String projectPolicyDocument = args[2]; String projectPolicyRevisionId = null; if (args.length == 4) { projectPolicyRevisionId = args[3]; } try { RekognitionClient rekClient = RekognitionClient.builder() .credentialsProvider(ProfileCredentialsProvider.create("custom-labels-access")) .region(Region.US_WEST_2) .build(); // Attach the project policy. putMyProjectPolicy(rekClient, projectArn, projectPolicyName, projectPolicyDocument, projectPolicyRevisionId); System.out.println( String.format("project policy %s: attached to project: %s", projectPolicyName, projectArn)); rekClient.close(); } catch (RekognitionException rekError) { logger.log(Level.SEVERE, "Rekognition client error: {0}", rekError.getMessage()); System.exit(1); } catch (IOException intError) { logger.log(Level.SEVERE, "Exception while reading policy document: {0}", intError.getMessage()); System.exit(1); } } }
  4. Copiez la version du modèle en suivant les instructions disponibles surCopier un modèle (SDK).