Comment puis-je résoudre des erreurs AccessDenied Amazon S3 dans des tâches de formation Amazon SageMaker ?

Lecture de 3 minute(s)
0

Ma tâche de formation Amazon SageMaker a échoué en raison d'une erreur AccessDenied, même si la politique AmazonSageMakerFullAccess est associée au rôle d'exécution.

Brève description

Les erreurs AccessDenied indiquent que votre politique AWS Identity and Access Management (IAM) n'autorise pas une ou plusieurs des actions Amazon Simple Storage Service (Amazon S3) suivantes :

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

Les autorisations dont vous avez besoin dépendent de l'API SageMaker que vous appelez. Par exemple, la seule action Amazon S3 requise par l'API CreateModel est s3:GetObject. Toutefois, l'API CreateTrainingJob requiert s3:GetObject, s3:PutObject et s3:ListObject. Pour plus d'informations sur les autorisations requises pour chaque API, consultez Rôles SageMaker.

Résolution

Les erreurs AccessDenied surviennent généralement dans les cas suivants.

Compartiment d'entrée chiffré

Si les données du compartiment S3 sont chiffrées à l'aide d'AWS Key Management Service (AWS KMS) :

  • Assurez-vous que la politique IAM jointe au rôle d'exécution autorise les actions kms:encrypt et kms:decrypt. Pour plus d'informations, consultez Rôles SageMaker.
  • Assurez-vous que la politique de clé AWS KMS accorde l'accès au rôle IAM. Pour plus d'informations, consultez Utilisation de politiques de clés dans AWS KMS.
  • Si vous utilisez une clé AWS KMS pour le volume de stockage de machine learning (ML) dans la configuration des ressources de votre tâche, la politique IAM doit autoriser l'action kms:CreateGrant. Pour plus d'informations, consultez Utilisation des autorisations. Pour plus d'informations sur le chiffrement du volume de stockage ML, consultez Protéger les données au repos à l'aide du chiffrement.
  • Lorsque vous utilisez le SDK Python et que vous implémentez une abstraction de la classe estimator.EstimatorBase, vous devez transmettre les paramètres output_kms_key et volume_kms_key via les arguments de mots-clés kwargs. Cela doit être effectué indépendamment de leur présence documentée dans la classe d'héritage. Pour plus d'informations, consultez Estimateurs.

Limites d'autorisations

Si vous définissez des limites d'autorisations pour le rôle d'exécution, SageMaker peut uniquement exécuter les actions autorisées par la politique IAM et 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 d'entrée utilise une politique de compartiment, assurez-vous que la politique de compartiment autorise le rôle d'exécution à effectuer les actions Amazon S3 requises. Pour plus d'informations sur les politiques de compartiment, consultez Politiques et autorisations dans Amazon S3.

Voici un exemple d'une politique de compartiment qui refuse l'accès au rôle d'exécution SageMaker et génère 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"
      ]
    }
  ]
}

Accès à Amazon S3 entre comptes

Si un autre compte AWS possède les données Amazon S3 :

  • Assurez-vous 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 de formation, SageMaker utilise par défaut une clé de chiffrement côté serveur Amazon S3. Une clé de chiffrement côté serveur Amazon S3 par défaut ne peut être partagée ni utilisée par un autre compte AWS.
  • Assurez-vous que la stratégie IAM pour le rôle d'exécution SageMaker et la stratégie de compartiment S3 disposent d'autorisations entre comptes.

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


Informations connexes

Comment éliminer les erreurs 403 Access Denied (Accès refusé) dans Amazon S3 ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an