Passer au contenu

Comment résoudre les erreurs Amazon S3 AccessDenied dans les tâches d’entraînement de SageMaker AI ?

Lecture de 3 minute(s)
0

Ma tâche de formation Amazon SageMaker AI a échoué avec une erreur AccessDenied, même si j'ai associé la politique AmazonSageMakerFullAccess au rôle d'exécution. Je souhaite résoudre ce problème.

Brève description

Une erreur AccessDenied peut se produire si votre politique de Gestion des identités et des accès AWS (AWS IAM) n'autorise pas les actions Amazon Simple Storage Service (Amazon S3) suivantes :

  • s3:ListBucket
  • s3:GetObject
  • s3:PutObject

Votre appel d'API SageMaker AI détermine les autorisations requises. Par exemple, l'API CreateModel requiert uniquement s3:GetObject, mais l’API CreateTrainingJob requiert s3:GetObject, s3:PutObject et s3:ListObject.

Résolution

Pour résoudre une erreur AccessDenied, effectuez les actions suivantes en fonction de votre scénario.

Compartiment d'entrées chiffré

Si vous avez chiffré les données du compartiment S3 avec AWS Key Management Service (AWS KMS), vérifiez les autorisations. La politique IAM associée au rôle d'exécution doit autoriser les actions kms:encrypt et kms:decrypt. Vérifiez que la politique de clé AWS KMS accorde l'accès au rôle d'exécution.

Vous pouvez utiliser une clé AWS KMS pour le volume de stockage de machine learning (ML) dans la configuration de ressources de votre tâche. Si vous utilisez une clé AWS KMS, la politique IAM doit autoriser l'action kms:CreateGrant. Pour en savoir plus, reportez-vous à la section Octrois dans AWS KMS.

Remarque : Il est recommandé de chiffrer le volume de stockage ML.

Lorsque vous utilisez le SDK Python et implémentez une abstraction de la classe estimator.EstimatorBase, transmettez les paramètres output_kms_key et volume_kms_key via les arguments de mot-clé kwargs. Effectuez cette action indépendamment de la présence documentée des paramètres output_kms_key et volume_kms_key dans la classe héritée. Pour plus d'informations, consultez la section Estimateurs sur le site Web de SDK Amazon SageMaker Python.

Limites des autorisations

Si vous définissez des limites d'autorisations pour le rôle d'exécution, SageMaker AI exécute uniquement les actions autorisées à la fois par la politique IAM et par les limites d'autorisations. Assurez-vous que la politique IAM et les limites d'autorisations autorisent les actions Amazon S3 requises.

Politiques de compartiment

Si le compartiment en entrée utilise une politique de compartiment, celle-ci doit autoriser le rôle d'exécution à effectuer les actions Amazon S3 requises.

Voici un exemple de politique de compartiment qui refuse l'accès au rôle d'exécution de SageMaker AI et provoque une erreur AccessDenied :

{  
  "Version": "2012-10-17",
  "Id": "ExamplePolicy01",
  "Statement": [
    {
      "Sid": "ExampleStatement01",
      "Effect": "Deny",
      "Principal": {
        "AWS": "arn:aws:iam::Account-ID:role/SageMakerExecutionRole"
      },
      "Action": [
        "s3:GetObject",
        "s3:GetBucketLocation",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::awsdoc-example-bucket/*",
        "arn:aws:s3:::awsdoc-example-bucket"
      ]
    }
  ]
}

Remarque : Pour autoriser l'accès au rôle d'exécution, remplacez Refuser par Autoriser pour la valeur Effet.

Accès à plusieurs comptes AWS

Si les données Amazon S3 sont détenues par un autre compte AWS, vérifiez que les deux comptes ont accès à la clé AWS KMS. Si vous ne spécifiez pas de clé AWS KMS pour la tâche d’entraînement, SageMaker AI utilise par défaut une clé de chiffrement côté serveur Amazon S3. Un autre compte ne peut pas partager ni utiliser une clé de chiffrement Amazon S3 côté serveur par défaut.

Assurez-vous que la politique IAM pour le rôle d'exécution de SageMaker AI et la politique de compartiment S3 disposent d'autorisations pour tous les comptes.

Pour plus d'informations, consultez la section Comment déployer un modèle Amazon SageMaker AI sur un autre compte AWS ?

Informations connexes

Comment puis-je résoudre les erreurs 403 Accès refusé renvoyées par Amazon S3 ?

Comment utiliser les rôles d’exécution de SageMaker AI

AWS OFFICIELA mis à jour il y a 9 mois