Come posso copiare oggetti S3 da un altro account AWS?

5 minuti di lettura
0

Voglio copiare gli oggetti di Amazon Simple Storage Service (Amazon S3) su account AWS. Quindi, voglio assicurarmi che l'account di destinazione possieda gli oggetti copiati.

Risoluzione

Importante: Gli oggetti in S3 non sono sempre automaticamente di proprietà dell'account AWS che li carica. Quando modifichi la proprietà dell'oggetto, è consigliabile utilizzare l'impostazione imposizione del proprietario del bucket. Tuttavia, questa opzione disattiva tutte le ACL del bucket e le ACL su qualsiasi oggetto del bucket.

Con l'impostazione imposizione del proprietario del bucket nella proprietà dell’oggetto S3, lo stesso proprietario del bucket possiede automaticamente tutti gli oggetti in un bucket Amazon S3. La funzionalità imposizione del proprietario del bucket disattiva anche tutte le liste di controllo degli accessi (ACL). Questo semplifica la gestione degli accessi per i dati archiviati in Amazon S3. Tuttavia, per i bucket esistenti, un oggetto S3 è ancora di proprietà dell'account AWS che lo ha caricato, a meno che tu non disattivi esplicitamente le ACL.

Se il tuo metodo esistente di condivisione degli oggetti si basa sull'utilizzo delle ACL, identifica i principali che utilizzano le ACL per accedere agli oggetti. Per ulteriori informazioni su come rivedere le autorizzazioni prima di disattivare qualsiasi ACL, vedi Prerequisiti per la disattivazione delle ACL.

Se non riesci a disattivare le ACL, segui questi passaggi per diventare proprietario 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 adeguate. 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: Questo esempio di policy IAM include solo le autorizzazioni minime richieste per elencare oggetti e copiare oggetti tra bucket in account diversi. È necessario personalizzare le azioni S3 consentite in base al caso d'uso. Ad esempio, se l'utente deve copiare oggetti con tag oggetto, devi concedere anche le autorizzazioni per s3:getObjectTagging. Se riscontri un errore, prova a eseguire questi passaggi come utente amministratore.

  1. Nell'account di origine, collega la policy gestita dal cliente all'identità IAM che desideri utilizzare per copiare gli oggetti nel bucket di destinazione.

  2. Nell'account di destinazione, imposta la proprietà dell’oggetto S3 sul bucket di destinazione come preferito dal proprietario del bucket. Dopo aver impostato la proprietà dell’oggetto S3, i nuovi oggetti caricati con la lista di controllo degli accessi (ACL) impostata su bucket-owner-full-control diventano automaticamente di proprietà dell'account del bucket.

  3. Nell'account di destinazione, modifica la policy del bucket di destinazione per concedere all'account di origine le autorizzazioni per il caricamento di oggetti. Inoltre, includi una condizione nella policy del bucket che richieda il caricamento degli oggetti per impostare l'ACL su un controllo completo da parte del proprietario del bucket. Puoi utilizzare un'istruzione simile all'esempio seguente:

**Nota:**Sostituisci destination-DOC-EXAMPLE-BUCKET con il nome del bucket di destinazione. Quindi, sostituisci arn:aws:iam::222222222222:user/Jane con il nome della risorsa Amazon (ARN) dell'identità IAM dall'account di origine.

{
  "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"
    }
  \]
}

Questo esempio di policy del bucket include solo le autorizzazioni minime richieste per caricare un oggetto con l'ACL richiesta. È necessario personalizzare le azioni S3 consentite in base al caso d'uso. Ad esempio, se l'utente deve copiare oggetti con tag oggetto, devi concedere anche le autorizzazioni per s3:getObjectTagging

  1. Dopo aver configurato la policy IAM e la policy del bucket, l'identità IAM dall'account di origine deve caricare gli oggetti nel bucket di destinazione. Assicurati che l'ACL sia impostata su bucket-owner-full-control. Ad esempio, l'identità IAM di origine deve eseguire il comando cp AWS CLI 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

**Nota:**Se ricevi errori durante l'esecuzione dei comandi dell'interfaccia a riga di comando di AWS, assicurati di utilizzare la versione più recente dell'interfaccia a riga di comando di AWS.

Quando imposti la proprietà dell’oggetto S3 come preferito dal proprietario del bucket, gli oggetti caricati con bucket-owner-full-control sono di proprietà dell'account del bucket di destinazione.

Importante: Se il tuo bucket S3 ha una crittografia predefinita con il Servizio di gestione delle chiavi AWS (AWS KMS) attivato, devi modificare anche le autorizzazioni della chiave AWS KMS. Per istruzioni, consulta Il mio bucket Amazon S3 ha una crittografia predefinita utilizzando 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 un anno fa