Copie datos de un bucket de Amazon S3 a otra cuenta o región mediante el AWS CLI - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Copie datos de un bucket de Amazon S3 a otra cuenta o región mediante el AWS CLI

Appasaheb Bagali y Purushotham G K, Amazon Web Services

Resumen

Este patrón describe cómo migrar datos desde un bucket de Amazon Simple Storage Service (Amazon S3) de origen de AWS una cuenta a un bucket de Amazon S3 de destino de AWS otra cuenta, ya sea en la Región de AWS misma región o en una diferente.

El bucket Amazon S3 de origen permite el acceso AWS Identity and Access Management (IAM) mediante una política de recursos adjunta. Un usuario de la cuenta de destino debe asumir un rol que tenga permisos PutObject y GetObjectpara el bucket de origen. Por último, ejecuta copy sync comandos para transferir datos del bucket Amazon S3 de origen al bucket Amazon S3 de destino.

Las cuentas son propietarias de los objetos que cargan en los buckets de Amazon S3. Si copia objetos entre cuentas y regiones, otorga a la cuenta de destino la propiedad de los objetos copiados. Para cambiar la propiedad de un objeto, cambie su lista de control de acceso (ACL) a bucket-owner-full-control. Sin embargo, le recomendamos que conceda permisos programáticos para varias cuentas a la cuenta de destino, ya que ACLs puede resultar difícil administrarlos para varios objetos.

aviso

En este escenario, se requieren usuarios de IAM con acceso programático y credenciales de larga duración, lo que supone un riesgo de seguridad. Para ayudar a mitigar este riesgo, le recomendamos que brinde a estos usuarios únicamente los permisos que necesitan para realizar la tarea y que los elimine cuando ya no los necesiten. Las claves de acceso se pueden actualizar si es necesario. Para obtener más información, consulte Actualización de las claves de acceso en la documentación de IAM.

Requisitos previos y limitaciones

Requisitos previos 

  • Dos activos Cuentas de AWS iguales o diferentes. Regiones de AWS

  • Un bucket de Amazon S3 existente en la cuenta de origen. 

  • Si su bucket de Amazon S3 de origen o destino tiene activado el cifrado por defecto, debe modificar los permisos de la clave AWS Key Management Service (AWS KMS). Para obtener más información, consulte el artículo de AWS Re:post sobre este tema.

  • Familiaridad con los permisos entre cuentas.

Limitaciones

  • Este patrón cubre una migración única. Para los escenarios que requieren la migración continua y automática de nuevos objetos de un bucket de origen a un bucket de destino, puede utilizar Amazon S3 Batch Replication.

  • Este patrón utiliza credenciales de sesión (AccessKeyIdSecretAccessKey, ySessionToken) que son temporales y no persistentes. La marca de tiempo de caducidad de la salida indica cuándo caducan estas credenciales. El rol se configura con la duración máxima de la sesión. El trabajo de copia se cancelará si la sesión caduca.

Arquitectura

Copiar datos de Amazon S3 a otra cuenta o región

Tools (Herramientas)

Prácticas recomendadas

Epics

TareaDescripciónHabilidades requeridas

Crear un usuario de IAM para conseguir la clave de acceso.

  1. Inicie sesión en Consola de administración de AWS y cree un usuario de IAM que tenga acceso mediante programación. Para obtener instrucciones detalladas, consulte Creación de usuarios de IAM en la documentación de IAM. No es necesario adjuntar ninguna política para este usuario.

  2. Genere una clave de acceso y una clave secreta para este usuario. Para obtener instrucciones, consulte Cuenta de AWS las claves de acceso en la AWS documentación.

AWS DevOps

Crear una política de IAM basada en identidades.

Cree una política de IAM basada en la identidad denominada S3MigrationPolicy mediante los siguientes permisos. Modifique los nombres de los buckets de origen y destino según su caso de uso. Esta política basada en la identidad permite al usuario que asume esta función acceder al depósito de origen y al depósito de destino. Para obtener instrucciones detalladas, consulte Creación de políticas de IAM en la documentación de 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

Crear un rol de IAM.

Cree un rol de IAM denominado S3MigrationRole mediante la siguiente política de confianza. Modifique el nombre de recurso de Amazon (ARN) del nombre de usuario o el rol de IAM de destino en la política de confianza según el caso de uso. Esta política de confianza permite que el recién creado usuario de IAM asuma S3MigrationRole. Adjunte el creado S3MigrationPolicy anteriormente. Para conocer los pasos detallados, consulte Crear una función para delegar permisos a un usuario de IAM en la documentación de IAM.

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

Cree y adjunte una política de bucket de Amazon S3.

  1. Inicie sesión en su cuenta Consola de administración de AWS de origen y abra la consola de Amazon S3.

  2. Elija el bucket de Amazon S3 de origen y, a continuación, elija Permisos.

  3. En Política de bucket, elija Editar.

  4. Pegue la siguiente política de bucket. Asegúrese de incluir el Cuenta de AWS ID de la cuenta de destino y configure la plantilla de política de bucket de acuerdo con sus requisitos. Esta política basada en recursos permite al rol de destino acceder S3MigrationRole a los objetos de Amazon S3 de la cuenta de origen.

    { "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. Seleccione Save.

Administrador de la nube
TareaDescripciónHabilidades requeridas

Cree un bucket de Amazon S3 de destino.

  1. Inicie sesión en la cuenta Consola de administración de AWS de destino y abra la consola de Amazon S3.

  2. Elija Crear bucket.

  3. Cree un bucket de Amazon S3 según sus necesidades. Para obtener más información, consulte Crear un bucket en la documentación de Amazon S3. 

Administrador de la nube
TareaDescripciónHabilidades requeridas

Configure el AWS CLI con las credenciales de usuario recién creadas.

  1. Instale la última versión de AWS CLI. Para obtener instrucciones, consulte Instalación o actualización de la última versión de AWS CLI en la AWS CLI documentación.

  2. Ejecute $ aws configure y actualice AWS CLI con la clave de AWS acceso del usuario de IAM que creó. Para obtener más información, consulte los ajustes de configuración y del archivo de credenciales en la AWS CLI documentación.

AWS DevOps

Asuma la función de migración de Amazon S3.

  1. Use el AWS CLI para asumirS3MigrationRole:

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

    Este comando genera varios datos. Dentro del bloque de credenciales, necesita las AccessKeyId, SecretAccessKey, y SessionToken. En este ejemplo se utilizan las variables de entorno RoleAccessKeyID, RoleSecretKey, y RoleSessionToken. : Las credenciales de sesión (AccessKeyIdSecretAccessKey, ySessionToken) son temporales y no persistentes. La marca de tiempo de caducidad del resultado indica cuándo caducan estas credenciales. El rol se configura con la duración máxima de la sesión. Si las credenciales caducan, debe sts:AssumeRole volver a llamar para obtener nuevas credenciales temporales.

  2. Cree tres variables de entorno para asumir el rol de IAM. Estas variables de entorno se completan con el siguiente resultado:

    # 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. Verifique que ha asumido el rol de IAM mediante la ejecución del siguiente comando:

    aws sts get-caller-identity

Para obtener más información, consulte ¿Cómo se utiliza AWS CLI para asumir una función de IAM?

Administrador de AWS

Copie y sincronice los datos del depósito de origen con el depósito de destino.

Cuando haya asumido el rol, S3MigrationRole puede copiar los datos mediante el comando copy (cp) o synchronize (sync).

Copiar:

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

Sincronizar:

aws s3 sync s3://amazon-s3-demo-source-bucket/ \ s3://amazon-s3-demo-destination-bucket/ \ --source-region SOURCE-REGION-NAME --region DESTINATION-REGION-NAME
Administrador de la nube

Resolución de problemas

ProblemaSolución

Se produjo un error (AccessDenied) al llamar a la operación ListObjects

  1. Asegúrese de haber asumido el rol S3MigrationRole.

  2. Ejecute aws sts get-caller-identity para comprobar el rol utilizado. Si el resultado no muestra el ARN deS3MigrationRole, vuelva a asumir la función de IAM y vuelva a intentarlo.

Recursos relacionados