Autorisations nécessaires à l'utilisation de AWS Lambda avec Ground Truth - Amazon SageMaker

Autorisations nécessaires à l'utilisation de AWS Lambda avec Ground Truth

Vous devrez peut-être configurer tout ou partie des éléments suivants pour créer et utiliser AWS Lambda avec Ground Truth.

  • Vous devez accorder à un rôle IAM ou à un utilisateur (collectivement, une entité IAM) l'autorisation de créer les fonctions Lambda de pré-annotation et de post-annotation à l'aide de AWS Lambda et de les choisir lors de la création de la tâche d'étiquetage.

  • Le rôle d'exécution IAM spécifié, lorsque la tâche d'étiquetage est configurée, doit être autorisé à invoquer les fonctions Lambda de pré-annotation et de post-annotation.

  • Les fonctions Lambda post-annotation peuvent avoir besoin d'une autorisation pour accéder à Amazon S3.

Utilisez les sections suivantes pour apprendre comment créer les entités IAM et accorder des autorisations décrites ci-dessus.

Accorder l'autorisation de créer et de sélectionner une fonction AWS Lambda

Si vous n'avez pas besoin d'autorisations détaillées pour développer des fonctions Lambda de pré-annotation et de post-annotation, vous pouvez attacher la stratégie AWSLambda_FullAccess gérée par AWS à un rôle ou à un utilisateur IAM. Cette stratégie accorde des autorisations étendues pour utiliser toutes les fonctionnalités Lambda, ainsi que l'autorisation d'effectuer des actions dans d'autres services AWS avec lesquels Lambda interagit.

Pour créer une stratégie plus détaillée pour les cas d'utilisation sensibles à la sécurité, reportez-vous à la documentation Stratégies IAM basées sur l'identité pour Lambda dans le Guide du développeur AWS Lambda pour apprendre à créer une stratégie IAM adaptée à votre cas d'utilisation.

Stratégies d'utilisation de la console Lambda

Si vous souhaitez accorder à une entité IAM l'autorisation d'utiliser la console Lambda, veuillez consulter Utilisation de la console Lambda dans le Guide du développeur AWS Lambda.

En outre, si vous souhaitez que l'utilisateur puisse accéder aux fonctions de pré-annotation et de post-annotation de démarrage Ground Truth et les déployer à l'aide de AWS Serverless Application Repository dans la console Lambda, vous devez spécifier la <aws-region> dans laquelle vous souhaitez déployer les fonctions (cela doit être la même région AWS que celle utilisée pour créer la tâche d'étiquetage) et ajoutez la stratégie suivante au rôle IAM.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "serverlessrepo:ListApplicationVersions", "serverlessrepo:GetApplication", "serverlessrepo:CreateCloudFormationTemplate" ], "Resource": "arn:aws:serverlessrepo:<aws-region>:838997950401:applications/aws-sagemaker-ground-truth-recipe" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "serverlessrepo:SearchApplications", "Resource": "*" } ] }

Stratégies accordant l'affichage des fonctions Lambda dans la console Ground Truth

Pour accorder à une entité IAM l'autorisation d'afficher les fonctions Lambda dans la console Ground Truth lorsque l'utilisateur crée une tâche d'étiquetage personnalisée, l'entité doit disposer des autorisations décrites dans Octroi des autorisations IAM requises pour utiliser la console Amazon SageMaker Ground Truth, y compris les autorisations décrites dans la section Autorisations de flux d'étiquetage personnalisées.

Accorder au rôle d'exécution IAM l'autorisation d'invoquer les fonctions AWS Lambda

Si vous ajoutez la stratégie AmazonSageMakerGroundTruthExecution gérée par IAM au rôle d'exécution IAM utilisé pour créer la tâche d'étiquetage, ce rôle a l'autorisation de répertorier et d'appeler les fonctions Lambda dont le nom contient l'une des chaînes suivantes : GtRecipe, SageMaker, Sagemaker, sagemaker ou LabelingFunction.

Si les noms de fonction Lambda de pré-annotation ou de post-annotation n'incluent pas l'un des termes du paragraphe précédent, ou si vous avez besoin d'une autorisation plus détaillée que celles de la stratégie gérée AmazonSageMakerGroundTruthExecution, vous pouvez ajouter une stratégie similaire à la suivante pour donner au rôle d'exécution l'autorisation d'appeler des fonctions de pré-annotation et de post-annotation.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": [ "arn:aws:lambda:<region>:<account-id>:function:<pre-annotation-lambda-name>", "arn:aws:lambda:<region>:<account-id>:function:<post-annotation-lambda-name>" ] } ] }

Accorder des autorisations Lambda de post-annotation pour accéder à l'annotation

Comme décrit dans Lambda de post-annotation, la requête Lambda de post-annotation inclut l'emplacement des données d'annotation dans Amazon S3. Cet emplacement est identifié par la chaîne s3Uri dans l'objet payload. Pour traiter les annotations au fur et à mesure de leur arrivée, même pour une simple fonction de passage, vous devez attribuer les autorisations nécessaires au rôle d'exécution Lambda de post-annotation pour lire les fichiers depuis Amazon S3.

Il existe de nombreuses façons de configurer votre Lambda pour accéder aux données d'annotation dans Amazon S3. Deux façons communes sont :

  • Autorisez le rôle d'exécution Lambda à assumer le rôle d'exécution SageMaker identifié par roleArn dans la requête Lambda de post-annotation. Ce rôle d'exécution SageMaker est celui utilisé pour créer la tâche d'étiquetage et a accès au compartiment de sortie Amazon S3 où les données d'annotation sont stockées.

  • Accordez au rôle d'exécution Lambda l'autorisation d'accéder directement au compartiment de sortie Amazon S3.

Utilisez les sections suivantes pour en savoir plus sur ces options.

Accorder à Lambda l'autorisation d'assumer le rôle d'exécution SageMaker

Pour autoriser une fonction Lambda d'assumer un rôle d'exécution SageMaker, vous devez attacher une stratégie au rôle d'exécution de la fonction Lambda et modifier la relation d'approbation du rôle d'exécution SageMaker pour autoriser Lambda de l'assumer.

  1. Attachez la stratégie IAM suivante au rôle d'exécution de votre fonction Lambda pour assumer le rôle d'exécution SageMaker identifié dans Resource. Remplacez 222222222222 par votre ID de compte AWS. Remplacez sm-execution-role par le nom du rôle assumé.

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::222222222222:role/sm-execution-role" } }
  2. Modifier la stratégie d'approbation du rôle d'exécution SageMaker pour inclure les Statement suivants. Remplacez 222222222222 par votre ID de compte AWS. Remplacez my-lambda-execution-role par le nom du rôle assumé.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::222222222222:role/my-lambda-execution-role" }, "Action": "sts:AssumeRole" } ] }

Accorder au rôle d'exécution Lambda l'autorisation d'accéder à S3

Vous pouvez ajouter une stratégie similaire à la suivante au rôle d'exécution de la fonction Lambda de post-annotation pour lui donner des autorisations de lecture S3. Remplacez DOC-EXEMPLE-BUCKET avec le nom du compartiment de sortie spécifié lorsque vous créez une tâche d'étiquetage.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }

Pour ajouter des autorisations de lecture S3 à un rôle d'exécution Lambda dans la console Lambda, procédez comme suit.

Ajouter des autorisations de lecture S3 à la fonction Lambda de post-annotation :

  1. Ouvrez la page Functions (Fonctions) de la console Lambda.

  2. Choisissez le nom de la fonction de post-annotation.

  3. Choisissez Configuration (Configuration), puis Permissions (Autorisations).

  4. Sélectionnez le Role name (Nom de rôle) et la page de résumé de ce rôle s'ouvre dans la console IAM dans un nouvel onglet.

  5. Sélectionnez Attach policies (Attacher des stratégies).

  6. Effectuez l'une des actions suivantes :

    • Recherchez et sélectionnez AmazonS3ReadOnlyAccess pour donner à la fonction l'autorisation de lire tous les compartiments et objets du compte.

    • Si vous avez besoin d'autorisations plus détaillées, sélectionnez Create policy (Créer une stratégie) et utilisez l'exemple de stratégie de la section précédente pour créer une stratégie. Notez que vous devez revenir à la page récapitulative du rôle d'exécution après avoir créé la stratégie.

  7. Si vous avez utilisé la stratégie gérée par AmazonS3ReadOnlyAccess, sélectionnez Attacher une stratégie.

    Si vous avez créé une nouvelle stratégie, revenez à la page récapitulative du rôle d'exécution Lambda et attachez la stratégie que vous venez de créer.