Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Come posso risolvere gli errori AccessDenied di Amazon S3 nei job di addestramento SageMaker AI?
Il mio job di addestramento Amazon SageMaker AI ha dato esito negativo con un errore AccessDenied anche se ho collegato la policy AmazonSageMakerFullAccess al ruolo di esecuzione. Desidero risolvere il problema.
Breve descrizione
Potrebbe verificarsi un errore AccessDenied se la policy AWS Identity and Access Management (AWS IAM) non consente le seguenti azioni di Amazon Simple Storage Service (Amazon S3):
- s3:ListBucket
- s3:GetObject
- s3:PutObject
Le autorizzazioni richieste dipendono dalla chiamata API di SageMaker AI. Ad esempio, l'API CreateModel richiede solo s3:GetObject, ma l'API CreateTrainingJob richiede s3:GetObject, s3:PutObject e s3:ListObject.
Risoluzione
Per risolvere un errore AccessDenied, intraprendi le seguenti azioni in base alla situazione.
Bucket di input crittografato
Se hai crittografato i dati nel bucket S3 con il Servizio AWS di gestione delle chiavi (AWS KMS), controlla le autorizzazioni. La policy IAM associata al ruolo di esecuzione deve consentire le azioni kms:encrypt e kms:decrypt. Verifica che la policy della chiave AWS KMS conceda l'accesso al ruolo di esecuzione.
Potresti utilizzare una chiave AWS KMS per il volume di storage per il machine learning (ML) nella configurazione delle risorse del job. Se utilizzi una chiave AWS KMS, la policy IAM deve consentire l'azione kms:CreateGrant. Per ulteriori informazioni, consulta Concessioni in AWS KMS.
Nota: è consigliabile crittografare il volume di storage per ML.
Quando utilizzi Python SDK e implementi un'astrazione della classe estimator.EstimatorBase, passa i parametri output_kms_key e volume_kms_key tramite gli argomenti delle parole chiave kwargs. Esegui questa azione indipendentemente dalla presenza documentata dei parametri output_kms_key e volume_kms_key nella classe ereditante. Per ulteriori informazioni, consulta Estimators (Stimatori) sul sito web di Amazon SageMaker Python SDK.
Limiti delle autorizzazioni
Se definisci 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.
Policy di bucket
Se il bucket di input utilizza una policy di bucket, la policy di bucket deve consentire al ruolo di esecuzione di eseguire le azioni di Amazon S3 richieste.
Di seguito è riportato un esempio di policy di bucket che nega l'accesso al ruolo di esecuzione di SageMaker AI causando 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" ] } ] }
Nota: per consentire l'accesso al ruolo di esecuzione, sostituisci Deny con Allow nel valore Effect.
Accesso a più account AWS
Se i dati di Amazon S3 sono di proprietà di un account AWS diverso, verifica che entrambi gli account abbiano accesso alla chiave AWS KMS. Se non specifichi una chiave AWS KMS per il job di addestramento, SageMaker AI utilizza per impostazione predefinita una chiave di crittografia lato server Amazon S3. Un altro account non può condividere o utilizzare una chiave di crittografia lato server Amazon S3 predefinita.
Assicurati che la policy IAM per il ruolo di esecuzione di SageMaker AI e la policy di bucket S3 abbiano le autorizzazioni per tutti gli account.
Per ulteriori informazioni, consulta How can I deploy an Amazon SageMaker model to a different AWS account? (Come posso distribuire un modello Amazon SageMaker AI su un altro account AWS?)
Informazioni correlate
Come posso risolvere gli errori 403 di Accesso negato da Amazon S3?
- Argomenti
- Machine Learning & AIStorage
- Lingua
- Italiano
