Perché i miei oggetti Amazon S3 non si replicano quando configuro la replica tra i miei bucket?
Ho impostato la replica interregionale (CRR) o la replica nella stessa regione (SRR) tra i miei bucket Amazon Simple Storage Service (Amazon S3). Tuttavia, gli oggetti non si replicano nel bucket di destinazione.
Risoluzione
Per risolvere i problemi relativi a oggetti S3 che non si replicano nel bucket di destinazione, controlla i diversi tipi di autorizzazioni per il bucket. Inoltre, controlla le impostazioni di accesso pubblico e le impostazioni di proprietà del bucket.
Suggerimento:
- carica un oggetto nel bucket di origine per testare la replica dopo ogni modifica apportata alla configurazione. È consigliabile modificare una configurazione alla volta per identificare eventuali problemi di configurazione della replica.
- Attiva la notifica del tipo di evento s3:Replication:OperationFailedReplication per gli errori di replica. Il codice di errore può aiutarti a determinare la causa dell'errore.
Dopo aver risolto i problemi che hanno causato l’errore della replica, potrebbero esserci oggetti nel bucket di origine che non sono stati replicati. Per impostazione predefinita, la replica S3 non replica oggetti esistenti od oggetti con stato di replica FAILED o REPLICA. Per verificare gli stati di replica degli oggetti, consulta Come posso visualizzare gli oggetti non replicati da un bucket Amazon S3 a un altro?Utilizza Replica batch S3 per replicare gli oggetti.
Concedi autorizzazioni minime per Amazon S3
Verifica che il ruolo AWS Identity Access Management (IAM) utilizzato nella regola di replica disponga delle autorizzazioni corrette. Se i bucket di origine e di destinazione si trovano in account AWS diversi, conferma che la policy dei bucket dell'account di destinazione conceda autorizzazioni sufficienti per il ruolo di replica.
Il seguente esempio di policy IAM ha le autorizzazioni minime richieste per la replica:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::SourceBucket" ] }, { "Effect": "Allow", "Action": [ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::SourceBucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:ReplicateObject", "s3:ReplicateTags" ], "Resource": "arn:aws:s3:::DestinationBucket/*" } ] }
Nota: sostituisci a SourceBucket e DestinationBucket i nomi dei tuoi bucket S3.
In base alle opzioni delle regole di replica, potrebbe essere necessario concedere autorizzazioni aggiuntive.
Il ruolo IAM deve avere una policy di attendibilità che consenta ad Amazon S3 di assumere il ruolo di replica degli oggetti:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Autorizzazioni di Amazon S3 aggiuntive
Se imposti la regola di replica su Cambia la proprietà dell'oggetto al proprietario del bucket di destinazione, il ruolo IAM deve disporre delle autorizzazioni s3:ObjectOwnerOverrideToBucketOwner. Inserisci l'autorizzazione nella risorsa oggetto S3:
{ "Effect": "Allow", "Action": [ "s3:ObjectOwnerOverrideToBucketOwner" ], "Resource": "arn:aws:s3:::DestinationBucket/*" }
L'account di destinazione deve inoltre concedere l'autorizzazione s3:ObjectOwnerOverrideToBucketOwner nella policy del bucket:
{ "Sid": "1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::SourceBucket-account-ID:role/service-role/source-account-IAM-role" }, "Action": [ "s3:ObjectOwnerOverrideToBucketOwner" ], "Resource": "arn:aws:s3:::DestinationBucket/*" }
Nota: se la proprietà dell'oggetto del bucket di destinazione è imposta dal proprietario del bucket, non è necessario cambiare la proprietà dell'oggetto al proprietario del bucket di destinazione nella regola di replica. La modifica avviene per impostazione predefinita.
Se hai attivato la replica dei marker di eliminazione nella regola di replica, il ruolo IAM deve disporre delle autorizzazioni s3:ReplicateDelete:
{ "Effect": "Allow", "Action": [ "s3:ReplicateDelete" ], "Resource": "arn:aws:s3:::DestinationBucket/*" }
Se il bucket di destinazione si trova in un altro account, anche il proprietario del bucket di destinazione deve concedere l'autorizzazione nella policy del bucket:
{ "Version": "2012-10-17", "Id": "PolicyForDestinationBucket", "Statement": [ { "Sid": "Stmt1644945277847", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::SourceBucket-account-ID:role/service-role/source-account-IAM-role" }, "Action": [ "s3:ReplicateObject", "s3:ReplicateTags", "s3:ObjectOwnerOverrideToBucketOwner", "s3:ReplicateDelete" ], "Resource": "arn:aws:s3:::DestinationBucket/*" } ] }
Nota: sostituisci ad arn:aws:iam::SourceBucket-account-ID:role/service-role/source-account-IAM-role con l'ARN del tuo ruolo di replica. Sostituisci a DestinationBucket il nome del tuo bucket S3.
Concedi le autorizzazioni di AWS KMS
Se hai crittografato gli oggetti di origine del bucket con una chiave del Servizio AWS di gestione delle chiavi (AWS KMS), la regola di replica deve includere oggetti crittografati di AWS KMS.
Completa i seguenti passaggi:
- Apri la console di Amazon S3.
- Scegli il bucket S3 che contiene gli oggetti di origine.
- Nella scheda Gestione, seleziona una regola di replica.
- Scegli Modifica.
- In Crittografia, scegli Replica oggetti crittografati con AWS KMS.
- Nella chiave AWS KMS per la crittografia degli oggetti di destinazione, seleziona una chiave AWS KMS. L'opzione predefinita consiste nell'utilizzare la chiave AWS KMS (aws/S3).
Per ulteriori informazioni, consulta Esempi di policy: utilizzo di SSE-S3 e SSE-KMS con la replica.
Importante: se il bucket di destinazione si trova in un account diverso, specifica una chiave gestita dal cliente AWS KMS di proprietà dell'account di destinazione. La chiave aws/S3 predefinita crittografa gli oggetti con la chiave gestita da AWS di proprietà dell'account di origine. Poiché non puoi condividere la chiave gestita da AWS con un altro account, l'account di destinazione non può accedere agli oggetti nel bucket di destinazione.
Concedi autorizzazioni AWS KMS aggiuntive per scenari con più account
Per utilizzare la chiave AWS KMS dell'account di destinazione per crittografare gli oggetti di destinazione, l'account di destinazione deve concedere il ruolo di replica nella policy della chiave:
{ "Sid": "AllowS3ReplicationSourceRoleToUseTheKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::SourceBucket-account-ID:role/service-role/source-account-IAM-role" }, "Action": [ "kms:GenerateDataKey", "kms:Encrypt" ], "Resource": "*" }
Nota: se utilizzi un asterisco (\ *) per Risorsa nella policy della chiave AWS KMS, la policy concede l'autorizzazione solo al ruolo di replica. La policy non consente al ruolo di replica di elevare le proprie autorizzazioni.
Inoltre, è necessario aggiungere le seguenti autorizzazioni minime alla policy IAM del ruolo di replica dall'account di origine:
[ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "SourceKmsKeyArn" ] }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Encrypt" ], "Resource": [ "DestinationKmsKeyArn" ] } ]
Per impostazione predefinita, la policy della chiave AWS KMS concede all'utente root autorizzazioni complete per la chiave. Queste autorizzazioni possono essere delegate ad altri utenti dello stesso account. Puoi anche utilizzare una policy IAM per concedere le autorizzazioni del ruolo di replica alla chiave KMS di origine. Ciò è sufficiente a meno che non vi siano dichiarazioni di rifiuto nella policy della chiave KMS di origine.
Verifica la presenza di dichiarazioni esplicite di rifiuto e autorizzazione condizionale
Se i tuoi oggetti continuano a non essere replicati dopo aver convalidato le autorizzazioni, verifica la presenza di dichiarazioni di rifiuto esplicite che possono causare l’errore della replica.
Rimuovi le dichiarazioni di rifiuto nella policy del bucket di destinazione o nella policy della chiave AWS KMS che limitano l'accesso a quanto segue:
- Intervalli CIDR specifici
- Endpoint del cloud privato virtuale (VPC)
- Punti di accesso S3
Rimuovi le dichiarazioni di rifiuto o i limiti delle autorizzazioni associati al ruolo IAM. Inoltre, rimuovi le dichiarazioni di rifiuto nelle policy di controllo dei servizi (SCP) di AWS Organizations collegate agli account di origine o destinazione.
Suggerimento: prima di rimuovere qualsiasi dichiarazione esplicita di rifiuto, conferma il motivo del rifiuto. Inoltre, determina se la dichiarazione influisce sulla sicurezza dei dati.
Verifica la presenza di chiavi del bucket Amazon S3
Se le chiavi KMS di origine o destinazione concedono autorizzazioni in base al contesto di crittografia, controlla se vengono utilizzate le chiavi del bucket S3. Se i bucket utilizzano le chiavi del bucket, il contesto di crittografia deve essere quello della risorsa a livello di bucket:
"kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::SOURCE_BUCKET_NAME" ] "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::DESTINATION_BUCKET_NAME" ]
Nota: sostituisci a SOURCE_BUCKET_NAME e DESTINATION_BUCKET_NAME i nomi dei bucket di origine e destinazione.
Se le chiavi del bucket non sono attivate per i bucket di origine o destinazione, il contesto di crittografia deve essere quello della risorsa a livello di oggetto:
"kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::SOURCE_BUCKET_NAME/*" ] "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::DESTINATION_BUCKET_NAME/*" ]
Nota: sostituisci a SOURCE_BUCKET_NAME e DESTINATION_BUCKET_NAME i nomi dei bucket di origine e destinazione.
Verifica le ACL degli oggetti e blocca l'accesso pubblico
Controlla se i bucket di origine e destinazione utilizzano liste di controllo degli accessi (ACL). Se l'oggetto include un’ACL che consente l'accesso pubblico ma il bucket di destinazione utilizza Block Public Acces, la replica ha esito negativo.
Conferma la proprietà dell'oggetto di origine
Se un altro account ha caricato gli oggetti nel bucket di origine, l'account di origine potrebbe non disporre dell'autorizzazione per tali oggetti. Controlla il bucket di origine per determinare se le ACL sono disattivate.
Se le ACL sono disattivate nel bucket di origine, l'account di origine è il proprietario di tutti gli oggetti nel bucket. Se le ACL non sono disattivate nel bucket di origine, controlla se la proprietà dell'oggetto è impostata su Preferito proprietario dell’oggetto o Preferito proprietario del bucket. Se la proprietà è impostata su Preferito proprietario del bucket, gli oggetti bucket di origine devono disporre dell'autorizzazione ACL bucket-owner-full-control.
L'account di origine può disattivare le ACL per assumere la proprietà di tutti gli oggetti nel relativo bucket. La maggior parte dei casi d'uso non richiede l'uso di ACL per gestire l'accesso. È consigliabile utilizzare le policy IAM e del bucket per gestire l'accesso alle risorse S3. Per disattivare le ACL sul bucket S3, consultaControllo della proprietà degli oggetti e disabilitazione delle ACL per il bucket. Le policy IAM e del bucket devono concedere autorizzazioni sufficienti in modo da non influire sull'accesso ad Amazon S3 quando si disattivano le ACL.
Specifica il filtro regola di replica corretto
Assicurati di aver specificato correttamente il filtro regola di replica.
Se specifichi un filtro regola con una combinazione di un prefisso chiave e tag oggetto, S3 esegue un'operazione logica AND per combinare i filtri. In altre parole, la regola si applica a un sottoinsieme di oggetti con un prefisso chiave specifico e tag specifici.
Informazioni correlate
Video correlati
Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- Come posso visualizzare gli oggetti la cui replica non è riuscita da un bucket Amazon S3 a un altro?AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa