¿Cómo puedo copiar objetos de Amazon S3 de otra cuenta de AWS?
Quiero copiar objetos de Amazon Simple Storage Service (Amazon S3) en todas las cuentas de AWS y asegurarme de que la cuenta de destino sea la propietaria de los objetos copiados.
Solución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Solución de problemas de AWS CLI. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.
Los objetos de Amazon S3 no son automáticamente propiedad de la cuenta de AWS que los carga. Al cambiar la configuración Propiedad del objeto en S3, se recomienda utilizar la configuración Aplicada al propietario del bucket. La configuración Aplicada al propietario del bucket facilita la administración del acceso a los datos almacenados en Amazon S3. Sin embargo, esta opción desactiva todas las listas de control de acceso (ACL) del bucket y las ACL de cualquier objeto del bucket.
Con la configuración Aplicada al propietario del bucket en Propiedad del objeto de S3, el mismo propietario del bucket es propietario automáticamente de todos los objetos de un bucket de Amazon S3. En el caso de los buckets existentes, la cuenta que carga el objeto de S3 es la propietaria del objeto, a menos que desactive explícitamente las ACL.
Si su método actual se basa en las ACL para compartir objetos, identifique las entidades principales que utilizan las ACL para acceder a los objetos. Para obtener más información, consulte Requisitos previos para desactivar las ACL.
Si no puede desactivar las ACL, siga estos pasos para tomar posesión de los objetos hasta que pueda ajustar la política de bucket:
-
En la cuenta de origen, cree una política administrada por el cliente de AWS Identity and Access Management (IAM) que conceda a una identidad de IAM acceso entre cuentas. El usuario de IAM debe tener acceso para recuperar objetos del bucket de origen y colocarlos en el bucket de destino.
Ejemplo de política:{ "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: En el ejemplo anterior de política de IAM solo se incluyen los permisos mínimos necesarios para enumerar objetos y copiarlos en buckets entre cuentas. Personalice las acciones permitidas de S3 en función de su caso de uso. Por ejemplo, si el usuario debe copiar objetos que tengan etiquetas de objeto, también debe conceder permisos a s3:GetObjectTagging. Si experimenta errores de permisos, aísle los problemas relacionados con IAM como usuario administrador.
-
En la cuenta de origen, asocie la política administrada por el cliente a la identidad de IAM.
-
En la cuenta de destino, defina Propiedad del objeto de S3 del bucket de destino como Propietario del bucket preferido. Los objetos nuevos que cargue con la ACL configurada como bucket-owner-full-control pasarán a ser automáticamente propiedad de la cuenta de destino.
-
En la cuenta de destino, modifique la política de bucket de destino para conceder a la cuenta de origen permisos para cargar objetos. Además, incluya una condición en la política de bucket que exija que la carga de objetos establezca la ACL como bucket-owner-full-control.
Ejemplo de política:{ "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" } ] }
Nota: Sustituya destination-DOC-EXAMPLE-BUCKET por el nombre del bucket de destino y arn:aws:iam::222222222222:user/Jane por el ARN de la identidad de IAM de la cuenta de origen.
En este ejemplo de política de bucket solo se incluyen los permisos mínimos necesarios para cargar un objeto con la ACL necesaria. Personalice las acciones permitidas de S3 en función de su caso de uso. -
Asegúrese de que la ACL esté configurada como bucket-owner-full-control para que la identidad de IAM de la cuenta de origen pueda cargar objetos al bucket de destino. Por ejemplo, la identidad de IAM de origen debe ejecutar el comando cp de la AWS CLI con la opción —acl:
aws s3 cp s3://source-DOC-EXAMPLE-BUCKET/object.txt s3://destination-DOC-EXAMPLE-BUCKET/object.txt --acl bucket-owner-full-control
En el ejemplo anterior, el comando copia el archivo object.txt. Para copiar una carpeta entera, ejecute el siguiente comando:
aws s3 cp directory/ s3://bucketname/directory --recursive --acl bucket-owner-full-control
Nota: Si aparece un error de acceso denegado, consulte Solución de errores de acceso denegado (403 Forbidden) en Amazon S3.
Importante: Si su bucket de S3 tiene el cifrado predeterminado con AWS Key Management Service (AWS KMS) activado, también debe modificar los permisos de clave de AWS KMS. Para obtener instrucciones, consulte Mi bucket de Amazon S3 tiene un cifrado predeterminado mediante una clave de AWS KMS personalizada. ¿Cómo puedo permitir que los usuarios descarguen desde el bucket y carguen a este?
Para copiar grandes cantidades de datos entre buckets de S3, consulte ¿Cuál es la mejor manera de transferir grandes cantidades de datos de un bucket de Amazon S3 a otro? Consulte también ¿Cómo puedo optimizar el rendimiento al cargar grandes cantidades de datos a Amazon S3?
Información relacionada
Ejemplos de políticas de bucket de Amazon S3
Ejemplo 2: propietario del bucket que concede permisos de bucket entre cuentas
Vídeos relacionados


Contenido relevante
- preguntada hace 11 díaslg...
- preguntada hace un meslg...
- Respuesta aceptadapreguntada hace 3 meseslg...
- preguntada hace 2 meseslg...
- preguntada hace 8 horaslg...
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 3 años
- OFICIAL DE AWSActualizada hace 6 meses
- OFICIAL DE AWSActualizada hace 7 meses