Comment résoudre les erreurs Amazon S3 AccessDenied dans les tâches de formation Amazon SageMaker ?

Date de la dernière mise à jour : 03/09/2020

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

Brève description

Les erreurs AccessDenied indiquent que votre stratégie AWS Identity and Access Management (IAM) n'autorise pas une ou plusieurs actions Amazon Simple Storage Service (Amazon S3) ci-dessous :

  • 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 nécessite S3:getObject, S3:PutObject et S3:ListObject. Pour plus d'informations sur les autorisations requises pour chaque API, consultez la section Rôles SageMaker.

Résolution

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

Compartiment d'entrée chiffré

Si les données du compartiment S3 sont chiffrées avec AWS Key Management Service (AWS KMS) :

  • Assurez-vous que la stratégie IAM jointe au rôle d'exécution autorise les actions kms:encrypt et kms:decrypt. Pour plus d'informations, consultez la section Rôles SageMaker.
  • Assurez-vous que la stratégie de clé AWS KMS accorde l'accès au rôle IAM. Pour plus d'informations, consultez la section Utilisation de stratégies de clé dans AWS KMS.
  • Si vous spécifiez une clé KMS pour le volume de stockage ML (machine learning) dans la configuration des ressources de votre tâche, la stratégie IAM doit autoriser l'action kms:CreateGrant. Pour plus d'informations, consultez la section Utilisation des autorisations. Pour plus d'informations sur le chiffrement du volume de stockage ML, consultez la section Protéger les données au repos à l'aide du chiffrement.

Limites d'autorisations

Si vous définissez des limites d'autorisations pour le rôle d'exécution, SageMaker ne peut exécuter que les actions autorisées par la stratégie IAM et les limites d'autorisations. Assurez-vous que la stratégie IAM et les limites d'autorisations autorisent les actions Amazon S3 requises.

Stratégies de compartiment

Si le compartiment d'entrée utilise une stratégie de compartiment, assurez-vous que la stratégie de compartiment autorise le rôle d'exécution à effectuer les actions Amazon S3 requises. Pour plus d'informations sur les stratégies de compartiment, consultez Stratégies et autorisations dans Amazon S3.

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

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é principale du client (CMK) AWS KMS. Si vous ne spécifiez pas de clé CMK pour la tâche de formation, SageMaker utilise par défaut une clé de chiffrement sur un serveur Amazon S3. Une clé de chiffrement par défaut sur un serveur Amazon S3 ne peut pas être partagée avec un autre compte AWS, ni utilisée par ce dernier.
  • 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 ?


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?