AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
Perché non riesco a copiare un oggetto tra due bucket Amazon S3?
Desidero copiare un oggetto da un bucket Amazon Simple Storage Service (Amazon S3) a un altro, ma non riesco.
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.
Policy di bucket e policy IAM
Per copiare un oggetto tra bucket, assicurati di aver configurato le autorizzazioni corrette. Per copiare un oggetto tra bucket nello stesso account AWS, utilizza le policy AWS Identity and Access Management (AWS IAM) per impostare le autorizzazioni. Per copiare un oggetto tra bucket in account diversi, devi impostare le autorizzazioni sia nelle policy IAM che nelle policy di bucket pertinenti.
Nota: per istruzioni sulla modifica di una policy di bucket, consulta Aggiunta di una policy di bucket utilizzando la console di Amazon S3. Per istruzioni sulla modifica delle autorizzazioni per un utente IAM, consulta Modificare le autorizzazioni per un utente IAM. Per istruzioni sulla modifica delle autorizzazioni per un ruolo IAM, consulta Aggiornamento delle autorizzazioni per un ruolo.
Verifica le autorizzazioni richieste:
- L'identità IAM (utente o ruolo) deve avere almeno le autorizzazioni per l'azione s3:GetObject sul bucket di origine. Se i bucket si trovano nello stesso account, imposta queste autorizzazioni con le policy dell'identità IAM. Puoi anche consentire esplicitamente l'identità IAM nella policy del bucket S3. Se i bucket si trovano in account diversi, imposta queste autorizzazioni sia con la policy del bucket che con le policy dell'identità IAM.
- L'identità IAM deve avere almeno le autorizzazioni per l'azione s3:PutObject sul bucket di destinazione. Se i bucket si trovano nello stesso account, imposta queste autorizzazioni con le policy dell'identità IAM. Puoi anche consentire esplicitamente l'identità IAM nella policy del bucket S3. Se i bucket si trovano in account diversi, imposta queste autorizzazioni sia con la policy del bucket che con le policy dell'identità IAM.
- Rivedi le policy di bucket e le policy IAM pertinenti per verificare che non vi siano istruzioni di diniego esplicite in conflitto con le autorizzazioni necessarie. Un'istruzione di diniego esplicita prevale su un'istruzione di autorizzazione.
- Per operazioni specifiche, verifica che l'identità IAM abbia le autorizzazioni per tutte le azioni necessarie nel corso dell'operazione. Ad esempio, per eseguire il comando aws s3 cp, serve l'autorizzazione per le azioni s3:GetObject e s3:PutObject. Per eseguire il comando aws s3 cp con l'opzione --recursive, serve l'autorizzazione per le azioni s3:GetObject, s3:PutObject e s3:ListBucket. Per eseguire il comando aws s3 sync, serve l'autorizzazione per le azioni s3:GetObject, s3:PutObject e s3:ListBucket.
Nota: se utilizzi l'operazione API AssumeRole per accedere ad Amazon S3, verifica di aver configurato correttamente la relazione di attendibilità. - Per operazioni riguardanti specificamente una versione, verifica che l'identità IAM abbia le autorizzazioni per le relative azioni. Ad esempio, per copiare una versione specifica di un oggetto, serve l'autorizzazione per le azioni s3:GetObjectVersion e s3:GetObject.
- Per copiare oggetti con tag oggetto, l'identità IAM deve avere le autorizzazioni s3:GetObjectTagging e s3:PutObjectTagging. Serve l'autorizzazione s3:GetObjectTagging per l'oggetto di origine e l'autorizzazione s3:PutObjectTagging per gli oggetti nel bucket di destinazione.
- Rivedi le policy di bucket e le politiche IAM pertinenti per verificare che l'elemento Resource abbia il percorso corretto. Per le autorizzazioni a livello di bucket, l'elemento Resource deve puntare verso un bucket. Per le autorizzazioni a livello di oggetto, l'elemento Resource deve puntare verso uno o più oggetti.
Ad esempio, un'istruzione di policy per un'azione a livello di bucket come s3:ListBucket deve specificare un bucket nell'elemento Resource:
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
Un'istruzione di policy per azioni a livello di oggetto come s3:GetObject o s3:PutObject deve specificare uno o più oggetti nell'elemento Resource:
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
Proprietà dell'oggetto
Se le policy di bucket hanno le autorizzazioni corrette e non riesci ancora a copiare un oggetto tra bucket, controlla a quale account appartiene l'oggetto. La policy del bucket si applica solo agli oggetti che appartengono al proprietario del bucket. Un oggetto che appartiene a un altro account potrebbe avere autorizzazioni in conflitto nella lista di controllo degli accessi (ACL).
Nota: il problema della proprietà degli oggetti e dell'ACL si verifica in genere quando copi log di servizi AWS tra account, ad esempio i log di AWS CloudTrail e i log di accesso di Elastic Load Balancing.
Per individuare l'account a cui appartiene un oggetto, procedi come segue:
- Apri la console Amazon S3.
- Passa all'oggetto che non riesci a copiare tra bucket.
- Scegli la scheda Autorizzazioni dell'oggetto.
- Rivedi i valori in Assegnatario.
Se il tuo account è proprietario dell'oggetto, in Assegnatario, per Proprietario dell'oggetto (il tuo account AWS), l'ID canonico contiene il tuo account AWS. Se l'oggetto è di proprietà di un altro account e puoi accedervi, queste due condizioni sono vere:
- L'ID canonico in Proprietario dell'oggetto (il tuo account AWS) contiene un account esterno.
- L'ID canonico in Authenticated users group (anyone with an AWS account) (Gruppo di utenti autenticati (chiunque abbia un account AWS) contiene il tuo account AWS.
Se un altro account è proprietario di un oggetto a cui non puoi accedere, i campi ID canonico per Proprietario dell'oggetto (il tuo account AWS) e gli altri assegnatari sono vuoti.
Se l'oggetto che non riesci a copiare tra bucket appartiene a un altro account, il proprietario dell'oggetto può eseguire una di queste azioni:
- Il proprietario dell'oggetto può concedere al proprietario del bucket il pieno controllo dell'oggetto. Una volta che l'oggetto appartiene al proprietario del bucket, all'oggetto si applica la policy del bucket. Come best practice di sicurezza, il proprietario del bucket può disattivare le ACL del bucket per impostare la proprietà dell'oggetto su Proprietario del bucket applicato.
- Il proprietario dell'oggetto può mantenerne la proprietà, ma deve modificare l'ACL con le impostazioni necessarie per il caso d'uso.
Crittografia AWS KMS
Un oggetto potrebbe essere crittografato con una chiave del Servizio AWS di gestione delle chiavi (AWS KMS). In questo caso, verifica che l'identità IAM abbia le autorizzazioni corrette per la chiave. Se l'identità IAM e la chiave AWS KMS appartengono allo stesso account, verifica che la policy della chiave conceda le autorizzazioni AWS KMS richieste.
Se l'identità IAM e la chiave AWS KMS appartengono ad account diversi, verifica che sia la chiave che le policy IAM concedano le autorizzazioni richieste.
Ad esempio, se copi oggetti tra due bucket (e ogni bucket ha la propria chiave), l'identità IAM deve specificare queste autorizzazioni:
- Autorizzazioni kms:Decrypt con riferimento alla prima chiave KMS
- Autorizzazioni kms:GenerateDataKey e kms:Decrypt con riferimento alla seconda chiave KMS
Per ulteriori informazioni, consulta Policy della chiave in AWS KMS e Operazioni, risorse e chiavi di condizione per il Servizio AWS di gestione delle chiavi.
Classi di archiviazione Amazon Archive o classi di archiviazione Amazon Glacier e Intelligent Archive
Non puoi copiare un oggetto dalla classe di archiviazione Amazon S3 Glacier. Devi ripristinare l'oggetto da Amazon S3 Glacier prima di poterlo copiare. Per istruzioni, consulta Ripristino di un oggetto archiviato.
Opzione Pagamento a carico del richiedente attivata per il bucket
Se il bucket di origine o di destinazione ha l'opzione Pagamento a carico del richiedente attivata e desideri accedere al bucket da un altro account, controlla la richiesta. Assicurati che la richiesta includa il parametro corretto per l'opzione Pagamento a carico del richiedente:
- Per i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), includi l'opzione --request-payer.
- Per le richieste GET, HEAD e POST, includi x-amz-request-payer : requester.
- Per gli URL firmati, includi x-amz-request-payer=requester.
Policy di controllo dei servizi di AWS Organizations
Se utilizzi AWS Organizations, verifica le policy di controllo dei servizi per accertarti che consentano l'accesso ad Amazon S3.
Ad esempio, questa policy genera un errore 403 Forbidden quando tenti di accedere ad Amazon S3. perché nega esplicitamente l'accesso:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "S3:*", "Resource": "*" } ] }
Per ulteriori informazioni sulle funzionalità di AWS Organizations, consulta Abilitazione di tutte le funzionalità per un'organizzazione con AWS Organizations.
Problemi di richieste tra Regioni con endpoint VPC per Amazon S3
Gli endpoint VPC per Amazon S3 non supportano richieste tra Regioni AWS diverse. Ad esempio, supponiamo di avere un'istanza Amazon Elastic Compute Cloud (Amazon EC2) nella Regione A. Questa istanza ha un endpoint VPC (Virtual Private Cloud) configurato nella tabella di routing associata. L'istanza EC2 non può copiare un oggetto dalla Regione B a un bucket nella Regione A. Ricevi dunque un messaggio di errore simile a questo esempio:
"An error occurred (AccessDenied) when calling the CopyObject operation: VPC endpoints do not support cross-region requests"
Per risolvere il problema relativo alle richieste tra Regioni, utilizza i seguenti metodi:
- Rimuovi l'endpoint VPC dalla tabella di routing. Se rimuovi l'endpoint VPC, l'istanza deve essere in grado di connettersi a Internet.
- Esegui il comando copy da un'altra istanza che non utilizza l'endpoint VPC. Oppure esegui il comando copy da un'istanza che non si trova né nella Regione A né nella Regione B.
- Se devi utilizzare l'endpoint VPC, invia prima una richiesta GET per copiare l'oggetto dal bucket di origine all'istanza EC2. Quindi invia una richiesta PUT per copiare l'oggetto dall'istanza EC2 al bucket di destinazione.
Informazioni correlate
Copia, spostamento e ridenominazione di oggetti
Come posso risolvere gli errori 403 di Accesso negato da Amazon S3?
- Argomenti
- Storage
- Lingua
- Italiano
Video correlati


Contenuto pertinente
AWS UFFICIALEAggiornata 2 anni fa