Copia i dati da un bucket Amazon S3 a un altro account e regione utilizzando AWS CLI - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Copia i dati da un bucket Amazon S3 a un altro account e regione utilizzando AWS CLI

Appasaheb Bagali e Purushotham GK, Amazon Web Services

Riepilogo

Questo modello descrive come migrare i dati da un bucket Amazon Simple Storage Service (Amazon S3) di origine in un account a AWS un bucket Amazon S3 di destinazione in un altro AWS account, nella stessa regione o in un'altra regione. Regione AWS

Il bucket Amazon S3 di origine consente l'accesso AWS Identity and Access Management (IAM) utilizzando una policy di risorse allegata. Un utente nell'account di destinazione deve assumere un ruolo PutObject e le GetObject autorizzazioni per il bucket di origine. Infine, esegui copy i sync comandi per trasferire i dati dal bucket Amazon S3 di origine al bucket Amazon S3 di destinazione.

Gli account possiedono gli oggetti che caricano nei bucket Amazon S3. Se copi oggetti tra account e regioni, concedi all'account di destinazione la proprietà degli oggetti copiati. È possibile modificare la proprietà di un oggetto modificando la relativa lista di controllo d'accesso (ACL) in. bucket-owner-full-control Tuttavia, si consiglia di concedere autorizzazioni programmatiche per più account all'account di destinazione, poiché ACLs può essere difficile da gestire per più oggetti.

avvertimento

Questo scenario richiede agli utenti IAM un accesso programmatico e credenziali a lungo termine, il che rappresenta un rischio per la sicurezza. Per ridurre questo rischio, si consiglia di fornire a questi utenti solo le autorizzazioni necessarie per eseguire l'attività e di rimuoverli quando non sono più necessari. Le chiavi di accesso possono essere aggiornate se necessario. Per ulteriori informazioni, consulta Aggiornamento delle chiavi di accesso nella documentazione IAM.

Prerequisiti e limitazioni

Prerequisiti

  • Due attivi Account AWS nello stesso modo o in modo diverso Regioni AWS.

  • Un bucket Amazon S3 esistente nell'account di origine. 

  • Se il bucket Amazon S3 di origine o di destinazione ha la crittografia predefinita abilitata, devi modificare le autorizzazioni della chiave AWS Key Management Service (AWS KMS). Per ulteriori informazioni, consulta l'articolo di AWS re:Post su questo argomento.

  • Familiarità con le autorizzazioni per più account.

Limitazioni

  • Questo modello riguarda la migrazione una tantum. Per gli scenari che richiedono la migrazione continua e automatica di nuovi oggetti da un bucket di origine a un bucket di destinazione, puoi utilizzare Amazon S3 Batch Replication.

  • Questo modello utilizza credenziali di sessione (AccessKeyIdSecretAccessKey, eSessionToken) temporanee e non persistenti. Il timestamp di scadenza nell'output indica quando scadono queste credenziali. Il ruolo è configurato con la durata massima della sessione. Il processo di copia verrà annullato se la sessione scade.

Architecture

Copiare i dati di Amazon S3 su un altro account o regione

Tools (Strumenti)

Best practice

Epiche

OperazioneDescriptionCompetenze richieste

Crea un utente IAM e ottieni la chiave di accesso.

  1. Accedi a Console di gestione AWS e crea un utente IAM con accesso programmatico. Per istruzioni dettagliate, consulta Creazione di utenti IAM nella documentazione IAM. Non è necessario allegare alcuna policy per questo utente.

  2. Genera una chiave di accesso e una chiave segreta per questo utente. Per istruzioni, consulta Account AWS e accedi ai tasti nella AWS documentazione.

AWS DevOps

Crea una policy basata sull'identità IAM.

Crea una policy basata sull'identità IAM denominata S3MigrationPolicy utilizzando le seguenti autorizzazioni. Modifica i nomi dei bucket di origine e destinazione in base al tuo caso d'uso. Questa politica basata sull'identità consente all'utente che assume questo ruolo di accedere al bucket di origine e al bucket di destinazione. Per istruzioni dettagliate, consulta Creazione di politiche IAM nella documentazione IAM.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:ListObjectsV2", "s3:GetObject", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::amazon-s3-demo-source-bucket", "arn:aws:s3:::amazon-s3-demo-source-bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectTagging", "s3:GetObjectTagging", "s3:ListObjectsV2", "s3:GetObjectVersion", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::amazon-s3-demo-destination-bucket", "arn:aws:s3:::amazon-s3-demo-destination-bucket/*" ] } ] }
AWS DevOps

Crea un ruolo IAM.

Crea un ruolo IAM denominato S3MigrationRole utilizzando la seguente politica di fiducia. Modifica l'Amazon Resource Name (ARN) del ruolo o del nome utente IAM di destinazione nella policy di fiducia in base al tuo caso d'uso. Questa politica di fiducia consente all'utente IAM appena creato di assumereS3MigrationRole. Allega il file creato in precedenzaS3MigrationPolicy. Per i passaggi dettagliati, consulta Creazione di un ruolo per delegare le autorizzazioni a un utente IAM nella documentazione IAM.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<destination_account>:user/<user_name>" }, "Action": "sts:AssumeRole", "Condition": {} } ] }
AWS DevOps
OperazioneDescriptionCompetenze richieste

Crea e allega una policy sui bucket Amazon S3.

  1. Accedi al tuo account Console di gestione AWS di origine e apri la console Amazon S3.

  2. Scegli il bucket Amazon S3 di origine, quindi scegli Autorizzazioni.

  3. In Policy del bucket, scegli Modifica.

  4. Incolla la seguente policy sui bucket. Assicurati di includere l' Account AWS ID dell'account di destinazione e di configurare il modello di bucket policy in base alle tue esigenze. Questa policy basata sulle risorse consente al ruolo di destinazione di accedere S3MigrationRole agli oggetti Amazon S3 nell'account di origine.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "DelegateS3Access", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::<destination_account>:role/<RoleName>"}, "Action": ["s3:ListBucket", "s3:GetObject", "s3:ListObjectsV2", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::amazon-s3-demo-source-bucket/*", "arn:aws:s3:::amazon-s3-demo-source-bucket" ] } ] }
  5. Scegli Save (Salva).

Amministratore cloud
OperazioneDescriptionCompetenze richieste

Crea un bucket Amazon S3 di destinazione.

  1. Accedi all'account Console di gestione AWS di destinazione e apri la console Amazon S3.

  2. Seleziona Crea bucket.

  3. Crea un bucket Amazon S3 in base alle tue esigenze. Per ulteriori informazioni, consulta Creazione di un bucket nella documentazione di Amazon S3. 

Amministratore cloud
OperazioneDescriptionCompetenze richieste

Configuralo AWS CLI con le credenziali utente appena create.

  1. Installa l'ultima versione di. AWS CLI Per istruzioni, vedere Installazione o aggiornamento della versione più recente di AWS CLI nella AWS CLI documentazione.

  2. Esegui $ aws configure e aggiorna AWS CLI con la chiave di AWS accesso dell'utente IAM che hai creato. Per ulteriori informazioni, consulta Configurazione e impostazioni dei file di credenziali nella AWS CLI documentazione.

AWS DevOps

Assumi il ruolo di migrazione di Amazon S3.

  1. Usa il AWS CLI per S3MigrationRole supporre:

    aws sts assume-role \ --role-arn "arn:aws:iam::<destination_account>:role/S3MigrationRole" \ --role-session-name AWSCLI-Session
    Nota

    Questo comando restituisce diverse informazioni. All'interno del blocco delle credenziali è necessario il comando AccessKeyIdSecretAccessKey, e. SessionToken Questo esempio utilizza le variabili di ambiente RoleAccessKeyIDRoleSecretKey, eRoleSessionToken. : Le credenziali di sessione (AccessKeyIdSecretAccessKey, eSessionToken) sono temporanee e non persistenti. Il timestamp di scadenza nell'output indica quando scadono queste credenziali. Il ruolo è configurato con la durata massima della sessione. Se le credenziali scadono, è necessario chiamare sts:AssumeRole nuovamente per ottenere nuove credenziali temporanee.

  2. Crea tre variabili di ambiente per assumere il ruolo IAM. Queste variabili di ambiente vengono completate con il seguente output:

    # Linux export AWS_ACCESS_KEY_ID=<RoleAccessKeyID from command output> export AWS_SECRET_ACCESS_KEY=<RoleSecretKey from command output> export AWS_SESSION_TOKEN=<RoleSessionToken from command output> # Windows set AWS_ACCESS_KEY_ID=<RoleAccessKeyID from command output> set AWS_SECRET_ACCESS_KEY=<RoleSecretKey from command output> set AWS_SESSION_TOKEN=<RoleSessionToken from command output>
  3. Verifica di aver assunto il ruolo IAM eseguendo il comando seguente:

    aws sts get-caller-identity

Per ulteriori informazioni, consulta Come si usa il AWS CLI per assumere un ruolo IAM?

Amministratore AWS

Copia e sincronizza i dati dal bucket di origine al bucket di destinazione.

Una volta assunto il ruolo, S3MigrationRole è possibile copiare i dati utilizzando il comando copy (cp) o synchronize (). sync

Copia:

aws s3 cp s3://amazon-s3-demo-source-bucket/ \ s3://amazon-s3-demo-destination-bucket/ \ --recursive --source-region SOURCE-REGION-NAME --region DESTINATION-REGION-NAME

Sincronizza:

aws s3 sync s3://amazon-s3-demo-source-bucket/ \ s3://amazon-s3-demo-destination-bucket/ \ --source-region SOURCE-REGION-NAME --region DESTINATION-REGION-NAME
Amministratore cloud

Risoluzione dei problemi

ProblemaSoluzione

Si è verificato un errore (AccessDenied) durante la chiamata dell'ListObjectsoperazione

  1. Assicurati di aver assunto il ruoloS3MigrationRole.

  2. Esegui aws sts get-caller-identity per verificare il ruolo utilizzato. Se l'output non mostra l'ARN perS3MigrationRole, assumi nuovamente il ruolo IAM e riprova.

Risorse correlate