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.
Perché ricevo l'errore "S3 error: Access Denied" in CloudFormation?
Desidero risolvere l'errore "Access Denied" di Amazon Simple Storage Service (Amazon S3) che ricevo quando creo o aggiorno stack in AWS CloudFormation.
Risoluzione
Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Risolvi i problemi relativi alla policy dell'utente o del ruolo IAM
Assicurati che l'utente o il ruolo AWS Identity and Access Management (AWS IAM) utilizzato con CreateChangeSet o CreateStack abbia le autorizzazioni necessarie. Potrebbe essere necessario collegare una policy che fornisca l'autorizzazione GetObject all'identità IAM. Il seguente esempio di policy include l'autorizzazione GetObject:
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetObject", "s3:GetObjectVersion" ], "Resource":"arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
Nota: sostituisci amzn-s3-demo-bucket con il tuo bucket.
Verifica che il file modello esista e non contenga errori di battitura
Per verificare se il file modello esiste e non contiene errori di battitura, esegui il comando AWS CLI list-objects:
aws s3 list-objects --bucket amzn-s3-demo-bucket --prefix file-path/template-file.json
Nota: sostituisci amzn-s3-demo-bucket con il tuo bucket e file-path/template-file.json con il percorso del file e il file modello. Assicurati che l'URL del modello non contenga spazi aggiuntivi. L’errore "S3 Access Denied" potrebbe essere causato da errori di battitura.
Verifica che il file modello non sia vuoto
Se il file modello esiste ma è vuoto, potresti ricevere l'errore "S3 Access Denied". Per verificare se il file modello è vuoto, esegui il comando AWS CLI get-object:
aws s3api get-object --bucket amzn-s3-demo-bucket --key key-name template-file.txt
Nota: sostituisci amzn-s3-demo-bucket con il tuo bucket, key-name con il nome della tua chiave e template-file.txt con il tuo file modello.
Quindi apri il file modello.
Controlla se sono presenti istruzioni Deny esplicite nella policy di bucket S3
Per verificare se il bucket S3 ha un'istruzione Deny esplicita per il ruolo IAM, completa i seguenti passaggi:
- Apri la console Amazon S3.
- Nel pannello di navigazione, scegli Bucket.
- Nell'elenco a discesa Bucket, seleziona il bucket che contiene il file modello.
- Scegli la scheda Autorizzazioni.
- In Policy di bucket, scegli Modifica.
- Cerca le istruzioni che contengono "Effect": "Deny".
- Aggiorna le istruzioni "Effect": "Deny" che negano al ruolo IAM l'accesso a s3:GetObject o s3:GetObjectVersion.
- Rimuovi il ruolo IAM che utilizzi con CloudFormation.
- Scegli Salva modifiche.
- Crea o aggiorna lo stack.
Per ulteriori informazioni, consulta Esempi di policy di bucket Amazon S3.
Convalida le impostazioni di crittografia del bucket S3 e attiva l'accesso KMS per il ruolo IAM
Potresti ricevere l'errore "S3 Access Denied" quando il bucket utilizza una chiave del Servizio AWS di gestione delle chiavi (KMS) gestita dal cliente per attivare la crittografia. Se hai crittografato il bucket, aggiorna la policy della chiave per consentire all'identità IAM di accedere alla chiave KMS.
Completa i seguenti passaggi:
- Apri la console AWS KMS.
- Nel pannello di navigazione, scegli Chiavi gestite dal cliente.
- Nell'elenco delle chiavi KMS, seleziona l'alias o l'ID chiave della chiave che crittografa gli oggetti s3, quindi scegli la scheda Policy della chiave.
- Utilizza la seguente istruzione per aggiornare la policy:
{ "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/IDENTITY" }, "Resource": "arn:aws:kms:aa-example-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd" }
Nota: sostituisci arn:aws:iam::111122223333:user/IDENTITY con il nome della risorsa Amazon (ARN) del tuo utente IAM e arn:aws:kms:aa-example-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd con l'ARN della tua chiave KMS. Se l'identità IAM si trova in un altro account AWS, consulta Il mio bucket Amazon S3 dispone di una crittografia predefinita che utilizza una chiave AWS KMS personalizzata. Come posso consentire agli utenti di scaricare e caricare contenuti nel bucket?
Controlla le autorizzazioni ACL dell'oggetto per il file modello
Quando un account di destinazione carica un file modello di proprietà dell'account di origine, l'utente dell'account di destinazione non può accedere al modello nell'account di origine. Per risolvere il problema, copia il file modello nel bucket S3 per dare al proprietario del bucket l'accesso completo al modello.
Per dare accesso al bucket, esegui questo comando AWS CLI put-object:
aws s3api put-object --bucket amzn-s3-demo-bucket --key key-name --body path-to-file --acl bucket-owner-full-control
Nota: sostituisci amzn-s3-demo-bucket con il tuo bucket, key-name con il nome della tua chiave e path-to-file con il percorso del tuo file.
Per ulteriori informazioni sulle liste di controllo degli accessi (ACL), consulta Controllo della proprietà degli oggetti e disattivazione delle ACL del bucket.
- Argomenti
- Management & Governance
- Lingua
- Italiano
