View a markdown version of this page

Copiez les données d'un compartiment Amazon S3 vers un autre compte ou une autre région à l'aide du AWS CLI - Recommandations AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Copiez les données d'un compartiment Amazon S3 vers un autre compte ou une autre région à l'aide du AWS CLI

Appasaheb Bagali et Purushotham GK, Amazon Web Services

Résumé

Ce modèle décrit comment migrer les données d'un compartiment Amazon Simple Storage Service (Amazon S3) source d' AWS un compte vers un compartiment Amazon S3 de destination d'un AWS autre compte, dans la Région AWS même région ou dans une autre région.

Le compartiment Amazon S3 source autorise l'accès Gestion des identités et des accès AWS (IAM) à l'aide d'une politique de ressources attachée. Un utilisateur du compte de destination doit assumer un rôle doté PutObject d'GetObjectautorisations pour le compartiment source. Enfin, vous exécutez copy des sync commandes pour transférer les données du compartiment Amazon S3 source vers le compartiment Amazon S3 de destination.

Les comptes sont propriétaires des objets qu'ils chargent dans les compartiments Amazon S3. Si vous copiez des objets entre comptes et régions, vous accordez au compte de destination la propriété des objets copiés. Vous pouvez modifier le propriétaire d'un objet en remplaçant sa liste de contrôle d'accès (ACL) parbucket-owner-full-control. Cependant, nous vous recommandons d'accorder des autorisations programmatiques entre comptes au compte de destination, car cela ACLs peut être difficile à gérer pour plusieurs objets.

Avertissement

Ce scénario nécessite que les utilisateurs IAM disposent d'un accès programmatique et d'informations d'identification à long terme, ce qui présente un risque de sécurité. Pour atténuer ce risque, nous vous recommandons de ne fournir à ces utilisateurs que les autorisations dont ils ont besoin pour effectuer la tâche et de supprimer ces autorisations lorsqu’elles ne sont plus nécessaires. Les clés d’accès peuvent être mises à jour si nécessaire. Pour plus d'informations, consultez la section Mise à jour des clés d'accès dans la documentation IAM.

Conditions préalables et limitations

Conditions préalables

  • Deux actifs de Comptes AWS la même manière ou de manière différente Régions AWS.

  • Un compartiment Amazon S3 existant dans le compte source. 

  • Si le chiffrement par défaut de votre compartiment Amazon S3 source ou de destination est activé, vous devez modifier les autorisations clés AWS Key Management Service (AWS KMS). Pour plus d'informations, consultez l'article AWS Re:Post à ce sujet.

  • Connaissance des autorisations entre comptes.

Limites

  • Ce modèle couvre une migration ponctuelle. Pour les scénarios qui nécessitent une migration continue et automatique de nouveaux objets d'un compartiment source vers un compartiment de destination, vous pouvez utiliser Amazon S3 Batch Replication.

  • Ce modèle utilise des informations d'identification de session (AccessKeyIdSecretAccessKey, etSessionToken) qui sont temporaires et non persistantes. L'horodatage d'expiration dans la sortie indique la date d'expiration de ces informations d'identification. Le rôle est configuré avec la durée maximale de session. La tâche de copie sera annulée si la session expire.

Architecture

Copier des données Amazon S3 vers un autre compte ou une autre région

Outils

Bonnes pratiques

Épopées

Sous-tâcheDescriptionCompétences requises

Créez un utilisateur IAM et obtenez la clé d'accès.

  1. Connectez-vous au AWS Management Console et créez-en un utilisateur IAM disposant d'un accès programmatique. Pour obtenir des instructions détaillées, consultez la section Création d'utilisateurs IAM dans la documentation IAM. Il n'est pas nécessaire de joindre des politiques pour cet utilisateur.

  2. Générez une clé d'accès et une clé secrète pour cet utilisateur. Pour obtenir des instructions, reportez-vous àCompte AWS la section et aux clés d'accès dans la AWS documentation.

AWS DevOps

Créez une politique basée sur l'identité IAM.

Créez une politique basée sur l'identité IAM nommée à l'aide S3MigrationPolicy des autorisations suivantes. Modifiez les noms des compartiments source et de destination en fonction de votre cas d'utilisation. Cette politique basée sur l'identité permet à l'utilisateur qui assume ce rôle d'accéder au compartiment source et au compartiment de destination. Pour obtenir des instructions détaillées, consultez la section Création de politiques IAM dans la documentation 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

Créez un rôle IAM.

Créez un rôle IAM nommé S3MigrationRole en utilisant la politique de confiance suivante. Modifiez le nom de ressource Amazon (ARN) du rôle IAM ou du nom d'utilisateur de destination dans la politique de confiance en fonction de votre cas d'utilisation. Cette politique de confiance permet à l'utilisateur IAM nouvellement créé d'assumerS3MigrationRole. Joignez le fichier créé précédemmentS3MigrationPolicy. Pour connaître les étapes détaillées, consultez la section Création d'un rôle pour déléguer des autorisations à un utilisateur IAM dans la documentation IAM.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<destination_account>:user/<user_name>" }, "Action": "sts:AssumeRole", "Condition": {} } ] }
AWS DevOps
Sous-tâcheDescriptionCompétences requises

Créez et attachez une politique de compartiment Amazon S3.

  1. Connectez-vous à votre compte source et ouvrez la console Amazon S3. AWS Management Console

  2. Choisissez votre compartiment Amazon S3 source, puis choisissez Permissions.

  3. Sous Politique de compartiment, choisissez Modifier.

  4. Collez la politique de compartiment suivante. Assurez-vous d'inclure l' Compte AWS ID du compte de destination et de configurer le modèle de politique de compartiment en fonction de vos besoins. Cette politique basée sur les ressources permet au rôle de destination S3MigrationRole d'accéder aux objets Amazon S3 dans le compte source.

    { "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. Choisissez Enregistrer.

Administrateur du cloud
Sous-tâcheDescriptionCompétences requises

Créez un compartiment Amazon S3 de destination.

  1. Connectez-vous à votre compte AWS Management Console de destination et ouvrez la console Amazon S3.

  2. Choisissez Créer un compartiment.

  3. Créez un compartiment Amazon S3 en fonction de vos besoins. Pour plus d'informations, consultez la section Création d'un compartiment dans la documentation Amazon S3. 

Administrateur du cloud
Sous-tâcheDescriptionCompétences requises

Configurez le AWS CLI avec les informations d'identification utilisateur nouvellement créées.

  1. Installez la dernière version du AWS CLI. Pour obtenir des instructions, consultez la section Installation ou mise à jour de la dernière version AWS CLI de la AWS CLI documentation.

  2. Exécutez $ aws configure et mettez à jour AWS CLI avec la clé d' AWS accès de l'utilisateur IAM que vous avez créé. Pour plus d'informations, consultez la section Configuration et paramètres des fichiers d'identification dans la AWS CLI documentation.

AWS DevOps

Assumez le rôle de migration Amazon S3.

  1. Utilisez le AWS CLI pour supposer que S3MigrationRole :

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

    Cette commande génère plusieurs informations. Dans le bloc d'informations d'identification, vous avez besoin du AccessKeyIdSecretAccessKey, etSessionToken. Cet exemple utilise les variables d'environnement RoleAccessKeyIDRoleSecretKey, etRoleSessionToken. : Les informations d'identification de session (AccessKeyIdSecretAccessKey, etSessionToken) sont temporaires et non persistantes. L'horodatage d'expiration dans la sortie indique la date d'expiration de ces informations d'identification. Le rôle est configuré avec la durée maximale de session. Si les informations d'identification expirent, vous devez appeler à sts:AssumeRole nouveau pour obtenir de nouvelles informations d'identification temporaires.

  2. Créez trois variables d'environnement pour assumer le rôle IAM. Ces variables d'environnement sont complétées par le résultat suivant :

    # 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. Vérifiez que vous avez assumé le rôle IAM en exécutant la commande suivante :

    aws sts get-caller-identity

Pour plus d'informations, consultez Comment utiliser le AWS CLI pour assumer un rôle IAM ?

Administrateur AWS

Copiez et synchronisez les données du compartiment source vers le compartiment de destination.

Lorsque vous avez assumé le rôle, S3MigrationRole vous pouvez copier les données à l'aide de la commande copy (cp) ou de la commande sync sync ().

Copie :

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

Synchroniser :

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

Résolution des problèmes

ProblèmeSolution

Une erreur s'est produite (AccessDenied) lors de l'appel de l'ListObjectsopération

  1. Assurez-vous que vous avez assumé le rôleS3MigrationRole.

  2. Exécutez aws sts get-caller-identity pour vérifier le rôle utilisé. Si la sortie n'affiche pas l'ARN pourS3MigrationRole, reprenez le rôle IAM et réessayez.

Ressources connexes