Allegare una politica di progetto (SDK) - Rekognition

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Allegare una politica di progetto (SDK)

Puoi allegare una politica di progetto a un progetto Amazon Rekognition Custom Labels chiamando l'PutProjectpolicyoperazione.

Allega più politiche di progetto a un progettoPutProjectPolicy richiamando ogni politica di progetto che desideri aggiungere. È possibile allegare fino a cinque politiche di progetto a un progetto. Se è necessario allegare ulteriori policy di progetto, è possibile richiedere un aumento del limite.

Quando allegate per la prima volta una politica di progetto univoca a un progetto, non specificate un ID di revisione nel parametroPolicyRevisionId di input. Il modulo di rispostaPutProjectPolicy è un ID di revisione per la politica del progetto che Amazon Rekognition Custom Labels crea per te. È possibile utilizzare l'ID di revisione per aggiornare o eliminare l'ultima revisione di una politica di progetto. Amazon Rekognition Custom Labels mantiene solo la revisione più recente di una politica di progetto. Se si tenta di aggiornare o eliminare una revisione precedente di una politica di progetto, viene visualizzato unInvalidPolicyRevisionIdException errore.

Per aggiornare una politica di progetto esistente, specificare l'ID di revisione della politica di progetto nel parametroPolicyRevisionId di input. Puoi ottenere gli ID di revisione per le politiche di progetto in un progetto chiamando ListProjectPolicies.

Dopo aver allegato una politica di progetto a un progetto di origine, è possibile copiare il modello dal progetto di origine al progetto di destinazione. Per ulteriori informazioni, consulta Copiare un modello (SDK).

Per rimuovere una politica di progetto da un progetto, chiama DeleteProjectPolicy. Per ottenere un elenco delle politiche di progetto allegate a un progetto, chiama ListProjectPolicies.

Per allegare una politica di progetto a un progetto (SDK)
  1. Se non l'hai ancora fatto, installa e configura l'SDKAWS CLI e gliAWS SDK. Per ulteriori informazioni, consulta Passaggio 4: configura il AWS CLI e AWS SDKs.

  2. Crea un documento sulla politica del progetto.

  3. Utilizza il codice seguente per allegare la politica del progetto al progetto, nell'AWSaccount attendibile, che contiene la versione del modello che desideri copiare. Per ottenere l'ARN del progetto, chiama DescribeProjects. Per ottenere la versione del modello chiama ARN DescribeProjectVersions.

    AWS CLI

    Modificate i seguenti valori:

    • project-arnall'ARN del progetto di origine nell'AWSaccount attendibile che contiene la versione del modello che si desidera copiare.

    • policy-nameal nome di una politica scelto dall'utente.

    • principalAl committente a cui desideri consentire o negare l'accesso alle versioni del modello specificateModel version ARN.

    • project-version-arnall'ARN della versione del modello che si desidera copiare.

    Se desideri aggiornare una politica di progetto esistente, specifica ilpolicy-revision-id parametro e fornisci l'ID di revisione della politica di progetto desiderata.

    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

    Eseguire il il il il il il il il il Fornisci i seguenti parametri della riga di comando:

    • project_arn— L'ARN del progetto di origine a cui collegare la policy del progetto.

    • policy_name— Un nome di polizza a tua scelta.

    • project_policy— Il file che contiene il documento sulla politica del progetto,.

    • policy_revision_id— (Facoltativo). Se desideri aggiornare una revisione esistente di una politica di progetto, specifica l'ID di revisione della politica di progetto.

    # 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

    Eseguire il il il il il il il il il Fornisci i seguenti parametri della riga di comando:

    • project_arn— L'ARN del progetto di origine a cui collegare la policy del progetto.

    • project_policy_name— Un nome di polizza a tua scelta.

    • project_policy_document— Il file che contiene il documento sulla politica del progetto.

    • project_policy_revision_id— (Facoltativo). Se desideri aggiornare una revisione esistente di una politica di progetto, specifica l'ID di revisione della politica di progetto.

    /* 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. Copia la versione del modello seguendo le istruzioni all'indirizzoCopiare un modello (SDK).