Copie los datos de un bucket de 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 los datos de un bucket de S3 a otra cuenta o región mediante el AWS CLI

Creado por Appasaheb Bagali (AWS) y Purushotham G K () AWS

Entorno: producción

Tecnologías: almacenamiento y copia de seguridad

AWSservicios: AWS CLI AWS Identity and Access Management; Amazon S3

Resumen

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

El bucket S3 de origen permite el acceso a 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, se ejecutan comandos copy y sync para transferir los datos del depósito de S3 de origen al depósito de S3 de destino.

Las cuentas son propietarias de los objetos que cargan en los buckets de 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) abucket-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.

Advertencia: este escenario requiere que IAM los usuarios dispongan de acceso programático y credenciales de larga duración, lo que supone un riesgo para la 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 Guía del IAM usuario.

Este patrón cubre la migración única. Para los escenarios que requieren una migración continua y automática de nuevos objetos de un bucket de origen a un bucket de destino, puede utilizar la replicación por lotes de S3 en su lugar, tal como se describe en el patrón Copiar datos de un bucket de S3 a otra cuenta y región mediante la replicación por lotes de S3.

Requisitos previos y limitaciones

  • Dos AWS cuentas activas en la misma región o en AWS regiones diferentes.

  • Un bucket de 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 AWS clave del Servicio de administración de claves (AWSKMS). Para obtener más información, consulte el artículo de AWS Re:post sobre este tema.

  • Familiaridad con los permisos entre cuentas.

Arquitectura

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

Herramientas

Prácticas recomendadas

Epics

TareaDescripciónHabilidades requeridas

Cree un IAM usuario y obtenga la clave de acceso.

  1. Inicie sesión en la consola AWS de administración y cree un IAM usuario que tenga acceso mediante programación. Para ver los pasos detallados, consulte Creación de IAM usuarios en la IAM documentación. 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 las claves de acceso y AWS cuenta en la AWS documentación.

AWS DevOps

Cree una política IAM basada en la identidad.

Cree una política IAM basada en la identidad denominada S3MigrationPolicy mediante los siguientes permisos. Para ver los pasos detallados, consulte Crear IAM políticas en la IAM documentación.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::awsexamplesourcebucket", "arn:aws:s3:::awsexamplesourcebucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectTagging", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::awsexampledestinationbucket", "arn:aws:s3:::awsexampledestinationbucket/*" ] } ] }

Nota: 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.

AWS DevOps

Cree un IAM rol.

Cree un IAM rol denominado S3MigrationRole mediante la siguiente política de confianza y, a continuación, adjunte el que haya creado anteriormenteS3MigrationPolicy. Para ver los pasos detallados, consulte Crear un rol para delegar permisos a un IAM usuario en la IAM documentación.

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

Nota: Modifique el nombre de recurso de Amazon (ARN) del IAM rol o nombre de usuario de destino en la política de confianza según su caso de uso.

Esta política de confianza permite que el IAM usuario recién creado la asumaS3MigrationRole.

AWS DevOps
TareaDescripciónHabilidades requeridas

Crear y adjuntar una política de bucket de S3.

Inicie sesión en la consola AWS de administración de su cuenta de origen y abra la consola de Amazon S3. Seleccione su bucket de S3 de origen y luego, Permisos. En Política de bucket, seleccione Editar y luego pegue la siguiente política de bucket. Seleccione Guardar.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DelegateS3Access", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::<destination_account>:role/<RoleName>"}, "Action": ["s3:ListBucket", "s3:GetObject", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::awsexamplesourcebucket/*", "arn:aws:s3:::awsexamplesourcebucket" ] } ] }

Nota: Asegúrese de incluir el ID de AWS cuenta de la cuenta de destino y configure la plantilla de políticas de bucket de acuerdo con sus requisitos.

Esta política basada en recursos permite que el rol de destino S3MigrationRole acceda a los objetos de S3 de la cuenta de origen.

Administrador de la nube
TareaDescripciónHabilidades requeridas

Crear el bucket de S3 de destino.

Inicie sesión en la consola AWS de administración de su cuenta de destino, abra la consola de Amazon S3 y, a continuación, seleccione Create bucket. Cree un bucket de 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 AWS CLI con las credenciales de usuario recién creadas.

  1. Instale la última versión de AWSCLI. 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 CLI con la clave de AWS acceso del usuario 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 a S3.

  1. Utilice el AWS CLI para suponer S3MigrationRole que:

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

    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. Tenga en cuenta que la marca de tiempo del campo de caducidad se encuentra en la zona UTC horaria. La marca de tiempo indica cuándo caducan las credenciales temporales del rol. IAM Si las credenciales temporales caducan, debe volver a llamarlas. sts:AssumeRole API

  2. Cree tres variables de entorno para asumir la IAM función. Estas variables de entorno se rellenan con el siguiente resultado:

    # Linux export AWS_ACCESS_KEY_ID=RoleAccessKeyID export AWS_SECRET_ACCESS_KEY=RoleSecretKey export AWS_SESSION_TOKEN=RoleSessionToken # Windows set AWS_ACCESS_KEY_ID=RoleAccessKeyID set AWS_SECRET_ACCESS_KEY=RoleSecretKey set AWS_SESSION_TOKEN=RoleSessionToken
  3. Compruebe que ha asumido el IAM rol ejecutando el siguiente comando:

    aws sts get-caller-identity

Para obtener más información, consulte el Centro de AWS conocimiento.

AWSadministrador

Copie y sincronice los datos del bucket de S3 de origen al bucket de S3 de destino.

Cuando haya asumido el rol S3MigrationRole, podrá copiar los datos mediante el comando copiar (cp) o sincronizar (sync).

Copie (consulte la Referencia de AWS CLI comandos para obtener más información):

aws s3 cp s3:// DOC-EXAMPLE-BUCKET-SOURCE / \ s3:// DOC-EXAMPLE-BUCKET-TARGET / \ --recursive --source-region SOURCE-REGION-NAME --region DESTINATION-REGION-NAME

Sincronizar (consulte la Referencia de AWS CLI comandos para obtener más información):

aws s3 sync s3:// DOC-EXAMPLE-BUCKET-SOURCE / \ s3:// DOC-EXAMPLE-BUCKET-TARGET / \ --source-region SOURCE-REGION-NAME --region DESTINATION-REGION-NAME
Administrador de la nube

Resolución de problemas

ProblemaSolución

Se ha producido un error (AccessDenied) al llamar a la operación ListObjects: Acceso denegado

  • Asegúrese de haber asumido el rolS3MigrationRole.

  • Ejecute aws sts get-caller-identity para comprobar el rol utilizado. Si el resultado no muestra el ARN formularioS3MigrationRole, vuelva a asumir el rol y vuelva a intentarlo.

Recursos relacionados