Cambio del propietario de la réplica cuando los buckets de origen y destino son propiedad de diferentes cuentas
Cuando los buckets de origen
y destino
de una configuración de replicación son propiedad de diferentes Cuentas de AWS, puede indicar a Amazon S3 que cambie la propiedad de la réplica a la Cuenta de AWS que posee el bucket de destino
. En este ejemplo, se explica cómo utilizar la consola de Amazon S3 y la AWS CLI para cambiar la propiedad de la réplica. Para obtener más información, consulte Cambiar el propietario de la réplica.
nota
Cuando utiliza la replicación de S3 y los buckets de origen y destino pertenecen a diferentes Cuentas de AWS, el propietario del bucket de destino puede desactivar las ACL (con la configuración de propietario del bucket obligatorio para Object Ownership) para cambiar la propiedad de réplica a la Cuenta de AWS que posee el bucket de destino. Esta configuración imita el comportamiento de anulación del propietario existente sin necesidad del permiso s3:ObjectOwnerOverrideToBucketOwner
. Esto significa que todos los objetos que se replican en el bucket de destino con la configuración de propietario del bucket obligatorio pertenecen al propietario del bucket de destino. Para obtener más información acerca de la propiedad de objetos, consulte Control de la propiedad de los objetos y desactivación de las ACL del bucket.
Para obtener más información acerca de la configuración de la replicación mediante el cifrado del lado del servidor con AWS Key Management Service en escenarios entre cuentas, consulte Conceder permisos adicionales para escenarios que afectan a varias cuentas.
Para obtener instrucciones paso a paso, consulte Configuración de la replicación para buckets de origen y destino que son propiedad de la misma cuenta. En este tema, se proporcionan instrucciones para establecer la configuración de replicación cuando los buckets son propiedad de la misma y de diferentes Cuentas de AWS.
Para cambiar la propiedad de la réplica con la AWS CLI, es necesario crear buckets, habilitar el control de versiones en los buckets, crear un rol de IAM que conceda permiso a Amazon S3 para replicar objetos y agregar la configuración de replicación al bucket de origen. En la configuración de replicación indica a Amazon S3 que cambie la titularidad de la réplica. Ahora puede probar la configuración.
Parar cambiar la propiedad de la réplica cuando los buckets de origen y destino son propiedad de Cuentas de AWS (AWS CLI) diferentes
-
En este ejemplo, crea los buckets de
origen
ydestino
en dos Cuentas de AWS diferentes. Configure la AWS CLI con dos perfiles con nombre. Este ejemplo usa los nombres de perfilacctA
yacctB
respectivamente. Para obtener más información acerca de la configuración de perfiles de credenciales, consulte Perfiles con nombre en la Guía del usuario de AWS Command Line Interface.importante
Los perfiles utilizados para este ejercicio tienen que tener los permisos necesarios. Por ejemplo, en la configuración de replicación especifica el rol de IAM que Amazon S3 puede asumir. Solo puede hacer esto si el perfil que utiliza tiene el permiso
iam:PassRole
. Si utiliza credenciales de usuario de administrador para crear un perfil con nombre, puede realizar todas las tareas. Para obtener más información, consulte Concesión de permisos a un usuario para transferir un rol a un servicio de AWS en la Guía del usuario de IAM.Tendrá que asegurarse de que estos permisos tengan los permisos necesarios. Por ejemplo, la configuración de replicación incluye un rol de IAM que Amazon S3 puede asumir. El perfil con nombre utilizado para asociar dicha configuración a un bucket solo puede hacerlo si tiene el permiso
iam:PassRole
. Si especifica credenciales de usuario de administrador al crear estos perfiles con nombre, entonces tienen todos los permisos. Para obtener más información, consulte Concesión de permisos a un usuario para transferir un rol a un servicio de AWS en la Guía del usuario de IAM. -
Cree el bucket de
origen
y habilite el control de versiones. En este ejemplo, se crea el bucket deorigen
en la región EE. UU. Este (Norte de Virginia) (us-east-1).aws s3api create-bucket \ --bucket
source
\ --region us-east-1 \ --profile acctAaws s3api put-bucket-versioning \ --bucket
source
\ --versioning-configuration Status=Enabled \ --profile acctA -
Cree un bucket de
destino
y habilite el control de versiones. En este ejemplo, se crea el bucket dedestino
en la región EE. UU. Oeste (Oregón) (us-west-2). Utilice un perfil de Cuenta de AWS diferente al utilizado para el bucket deorigen
.aws s3api create-bucket \ --bucket
destination
\ --region us-west-2 \ --create-bucket-configuration LocationConstraint=us-west-2 \ --profile acctBaws s3api put-bucket-versioning \ --bucket
destination
\ --versioning-configuration Status=Enabled \ --profile acctB -
Debe añadir permisos a la política del bucket de
destino
para permitir el cambio de titularidad de la réplica.-
Guarde la siguiente política en
.destination-bucket-policy
.json{ "Version": "2012-10-17", "Statement": [ { "Sid":
"destination_bucket_policy_sid"
, "Principal": { "AWS":"source-bucket-owner-account-id"
}, "Action": [ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ObjectOwnerOverrideToBucketOwner", "s3:ReplicateTags", "s3:GetObjectVersionTagging" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::destination
/*" ] } ] } -
Coloque la política anterior en el bucket de
destino
:aws s3api put-bucket-policy --region
$
{destination_region
} --bucket$
{destination
} --policy file://destination_bucket_policy
.json
-
-
Cree un rol de IAM. Especifique este rol en la configuración de replicación que agregue al bucket de
origen
más adelante. Amazon S3 asume este rol para replicar objetos en su nombre. Crea el rol de IAM en dos pasos:-
Crear un rol.
-
Asocie una política de permisos al rol.
-
Cree un rol de IAM.
-
Copie la siguiente política de confianza y guárdela en un archivo llamado
s3-role-trust-policy.json
en el directorio actual en su equipo local. Esta política concede a Amazon S3 permisos para asumir el rol.{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
-
Ejecute el siguiente comando de AWS CLI para crear un rol.
$
aws iam create-role \ --role-name replicationRole \ --assume-role-policy-document file://s3-role-trust-policy.json \ --profile acctA
-
-
Asocie una política de permisos al rol.
-
Copie la siguiente política de permisos y guárdela en un archivo llamado
s3-role-perm-pol-changeowner.json
en el directorio actual en su equipo local. Esta política concede permisos para varias acciones de buckets y objetos de Amazon S3. En los siguientes pasos, crea un rol de IAM y asocia esta política al rol.{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::
source
/*" ] }, { "Effect":"Allow", "Action":[ "s3:ListBucket", "s3:GetReplicationConfiguration" ], "Resource":[ "arn:aws:s3:::source
" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ObjectOwnerOverrideToBucketOwner", "s3:ReplicateTags", "s3:GetObjectVersionTagging" ], "Resource":"arn:aws:s3:::destination
/*" } ] } -
Para crear una política y asociarla al rol, ejecute el siguiente comando.
$
aws iam put-role-policy \ --role-name replicationRole \ --policy-document file://s3-role-perm-pol-changeowner.json \ --policy-name replicationRolechangeownerPolicy \ --profile acctA
-
-
-
Agregar una configuración de replicación al bucket de origen.
-
La AWS CLI requiere que especifique la configuración de replicación como JSON. Guarde la siguiente JSON en un archivo denominado
replication.json
en el directorio actual en su equipo local. En la configuración, la adición deAccessControlTranslation
para indicar un cambio en la titularidad de la réplica.{ "Role":"
IAM-role-ARN
", "Rules":[ { "Status":"Enabled", "Priority":1, "DeleteMarkerReplication":{ "Status":"Disabled" }, "Filter":{ }, "Status":"Enabled", "Destination":{ "Bucket":"arn:aws:s3:::destination
", "Account":"destination-bucket-owner-account-id
", "AccessControlTranslation":{ "Owner":"Destination" } } } ] } -
Edite la JSON proporcionando valores para el ID de la cuenta del propietario del bucket de
destino
yARN-rol-IAM
. Guarde los cambios. -
Para añadir la configuración de replicación al bucket de origen, ejecute el siguiente comando. Proporcione el nombre del bucket de
origen
.$
aws s3api put-bucket-replication \ --replication-configuration file://replication.json \ --bucketsource
\ --profile acctA
-
-
Compruebe la propiedad de la réplica en la consola de Amazon S3.
Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/
. -
Agregar objetos al bucket de
origen
. Compruebe que el bucket dedestino
contenga réplicas del objeto y que la propiedad de las réplicas haya cambiado a la Cuenta de AWS propietaria del bucket dedestino
.
Para informarse sobre un ejemplo de código que agregar a la configuración de replicación, consulte Uso de los SDK de AWS. Tiene que modificar la configuración de replicación en concordancia. Para obtener información conceptual, consulte Cambiar el propietario de la réplica.