Come posso copiare oggetti S3 da un altro account AWS?

4 minuti di lettura
0

Voglio copiare oggetti Amazon Simple Storage Service (Amazon S3) tra account AWS e assicurarmi che l'account di destinazione sia il proprietario degli oggetti copiati.

Risoluzione

Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), consulta la sezione Troubleshoot AWS CLI errors. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Importante: gli oggetti in Amazon S3 non sono automaticamente di proprietà dell'account AWS che carica gli oggetti. Quando modifichi l'impostazione Proprietà dell'oggetto S3, è consigliabile utilizzare l'impostazione Proprietario del bucket applicato. Tuttavia, questa opzione disattiva tutte le liste di controllo degli accessi (ACL) del bucket e le ACL su qualsiasi oggetto del bucket.

Quando utilizzi l'impostazione Proprietario del bucket applicato nella Proprietà dell'oggetto S3, lo stesso proprietario del bucket possiede automaticamente tutti gli oggetti in un bucket Amazon S3. L'impostazione Proprietario del bucket applicato semplifica la gestione degli accessi per i dati archiviati in Amazon S3. Per i bucket esistenti, un oggetto S3 è di proprietà dell'account AWS che lo ha caricato, a meno che non disattivi esplicitamente le ACL.

Se il metodo esistente si basa sulle ACL per condividere oggetti, identifica i principali che utilizzano le ACL per accedere agli oggetti. Per altre informazioni, consulta Prerequisites for turning off ACLs.

Se non riesci a disattivare le ACL, completa questi passaggi per avere a proprietà degli oggetti fino a quando non potrai modificare la policy del bucket:

  1. Nell'account di origine, crea una policy AWS Identity and Access Management (IAM) gestita dal cliente che concede a un'identità IAM (utente o ruolo) le autorizzazioni richieste. L'utente IAM deve avere accesso per recuperare oggetti dal bucket di origine e reinserirli nel bucket di destinazione. Puoi utilizzare una policy IAM simile al seguente esempio:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "s3:ListBucket",
            "s3:GetObject"
          ],
          "Resource": [
            "arn:aws:s3:::source-DOC-EXAMPLE-BUCKET",
            "arn:aws:s3:::source-DOC-EXAMPLE-BUCKET/*"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "s3:ListBucket",
            "s3:PutObject",
            "s3:PutObjectAcl"
          ],
          "Resource": [
            "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET",
            "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET/*"
          ]
        }
      ]
    }
    Nota: l'esempio precedente di policy IAM include solo le autorizzazioni minime richieste per elencare oggetti e copiare oggetti tra bucket in account diversi. Personalizza le azioni S3 consentite in base al tuo caso d'uso. Per esempio, se l'utente deve copiare oggetti con tag oggetto, devi concedere anche le autorizzazioni per s3:getObjectTagging. Se riscontri un errore, esegui questi passaggi come utente amministratore.
  2. Nell'account di origine, allega la policy gestita dal cliente all'identità IAM.
  3. Nell'account di destinazione, imposta la Proprietà dell’oggetto S3 sul bucket di destinazione come Proprietario del bucket preferito. I nuovi oggetti caricati con l'ACL impostata su bucket-owner-full-control sono quindi automaticamente di proprietà dell'account del bucket di destinazione.
  4. Nell'account di destinazione, modifica la policy del bucket di destinazione per concedere all'account di origine le autorizzazioni per caricare oggetti. Inoltre, includi una condizione nella policy del bucket che richieda il caricamento degli oggetti per impostare l'ACL bucket-owner-full-control. Puoi utilizzare un'istruzione simile all'esempio seguente:
    {
      "Version": "2012-10-17",
      "Id": "Policy1611277539797",
      "Statement": [
        {
          "Sid": "Stmt1611277535086",
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::222222222222:user/Jane"
          },
          "Action": "s3:PutObject",
          "Resource": "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET/*",
          "Condition": {
            "StringEquals": {
              "s3:x-amz-acl": "bucket-owner-full-control"
            }
          }
        },
        {
          "Sid": "Stmt1611277877767",
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::222222222222:user/Jane"
          },
          "Action": "s3:ListBucket",
          "Resource": "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET"
        }
      ]
    }
    Nota: sostituisci destination-DOC-EXAMPLE-BUCKET con il nome del bucket di destinazione. Sostituisci arn:aws:iam::222222222222:user/Jane con l'ARN dell'identità IAM dall'account di origine.
    L'esempio precedente di policy del bucket include solo le autorizzazioni minime richieste per caricare un oggetto con l'ACL richiesta. Personalizza le azioni S3 consentite in base al tuo caso d'uso.
  5. Assicurati che l'ACL sia impostata su bucket-owner-full-control in modo che l'identità IAM dell'account di origine possa caricare oggetti nel bucket di destinazione. Ad esempio, l'identità IAM di origine deve eseguire il comando AWS CLI cp con l'opzione --acl:
    aws s3 cp s3://source-DOC-EXAMPLE-BUCKET/object.txt s3://destination-DOC-EXAMPLE-BUCKET/object.txt --acl bucket-owner-full-control
    Nell'esempio precedente, il comando copia il file ** object.txt**. Per copiare un'intera cartella, esegui il comando seguente:
    aws s3 cp directory/ s3://bucketname/directory --recursive --acl bucket-owner-full-control

Importante: se il tuo bucket S3 ha una crittografia predefinita con il Servizio AWS di gestione delle chiavi (AWS KMS) attivato, devi modificare anche le autorizzazioni della chiave AWS KMS. Per istruzioni, 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?

Informazioni correlate

Proprietario del bucket che concede autorizzazioni per bucket tra account

Come posso modificare la proprietà degli oggetti per un bucket Amazon S3 quando gli oggetti vengono caricati da altri account AWS?

Utilizzo di una policy basata sulle risorse per delegare l'accesso a un bucket Amazon S3 in un altro account

AWS UFFICIALE
AWS UFFICIALEAggiornata 10 mesi fa