Come posso risolvere gli errori AccessDenied di Amazon S3 nei processi di addestramento Amazon SageMaker?

3 minuti di lettura
0

Il mio processo di addestramento Amazon SageMaker non è riuscito e ha restituito un errore AccessDenied, anche se la policy AmazonSageMakerFullAccess è associata al ruolo di esecuzione.

Breve descrizione

Gli errori AccessDenied indicano che la tua policy di AWS Identity and Access Management (IAM) non consente una o più delle seguenti azioni di Amazon Simple Storage Service (Amazon S3):

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

Le autorizzazioni necessarie dipendono dall'API SageMaker che stai chiamando. Ad esempio, l'unica azione Amazon S3 richiesta dall'API CreateModel è S3:GetObject. Tuttavia, l'API CreateTrainingJob richiede s3:GetObject, s3:PutObject e s3:ListObject. Per ulteriori informazioni sulle autorizzazioni richieste per ciascuna API, consulta Ruoli SageMaker.

Risoluzione

Gli errori AccessDenied si verificano più comunemente nei seguenti scenari.

Bucket di input crittografato

Se i dati nel bucket S3 sono crittografati con il Servizio di gestione delle chiavi AWS (AWS KMS):

  • Assicurati che la policy IAM associata al ruolo di esecuzione consenta le azioni kms:encrypt e kms:decrypt. Per ulteriori informazioni, consulta la pagina Ruoli SageMaker.
  • Assicurati che la policy della chiave AWS KMS consenta l'accesso al ruolo IAM. Per ulteriori informazioni, consulta Utilizzo delle policy delle chiavi in AWS KMS.
  • Se utilizzi una chiave AWS KMS per il volume di archiviazione di machine learning (ML) nella configurazione delle risorse del tuo lavoro, la policy IAM deve consentire l'azione di kms:CreateGrant. Per ulteriori informazioni, vedi Utilizzo delle concessioni. Per ulteriori informazioni sulla crittografia del volume di archiviazione ML, consulta Proteggere i dati a riposo utilizzando la crittografia.
  • Quando si utilizza Python SDK e si implementa un'astrazione della classe estimator.EstimatorBase, è necessario passare i parametri output_kms_key e volume_kms_key tramite gli argomenti della parola chiave kwargs. Questo deve essere fatto indipendentemente dalla loro presenza documentata nella classe ereditaria. Per ulteriori informazioni, consulta Estimators.

Limiti delle autorizzazioni

Se definisci i limiti delle autorizzazioni per il ruolo di esecuzione, SageMaker può eseguire solo le azioni consentite sia dalla policy IAM che dai limiti delle autorizzazioni. Assicurati che la policy IAM e i limiti delle autorizzazioni consentano le azioni Amazon S3 richieste.

Politicy di bucket

Se il bucket di input utilizza una policy di bucket, assicurati che la policy di bucket consenta al ruolo di esecuzione di eseguire le azioni Amazon S3 richieste. Per ulteriori informazioni sulle policy di bucket, consulta Politicy e autorizzazioni in Amazon S3.

Ecco un esempio di policy di bucket che nega l'accesso al ruolo di esecuzione SageMaker e causa un errore 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"
      ]
    }
  ]
}

Accesso multi-account Amazon S3

Se un altro account AWS possiede i dati Amazon S3:

  • Assicurati che entrambi gli account abbiano accesso alla chiave AWS KMS. Se non specifichi una chiave AWS KMS per il processo di addestramento, SageMaker utilizza per impostazione predefinita una chiave di crittografia lato server Amazon S3. Una chiave di crittografia lato server Amazon S3 predefinita non può essere condivisa o utilizzata da un altro account AWS.
  • Assicurati che la policy IAM per il ruolo di esecuzione SageMaker e la policy di bucket S3 dispongano di autorizzazioni multi-account.

Per ulteriori informazioni, consulta Come posso implementare un modello Amazon SageMaker su un altro account AWS?


Informazioni correlate

Come faccio a risolvere gli errori 403 Access Denied di Amazon S3?

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa