Cambiar el propietario de la réplica
En la replicación, el propietario del objeto de origen también es propietario de la réplica de manera predeterminada. Sin embargo, cuando los buckets de origen y destino son propiedad de diferentes Cuentas de AWS, es posible que quiera cambiar la propiedad de la réplica. Por ejemplo, es posible que quiera cambiar la propiedad para restringir el acceso a las réplicas de objetos. En la configuración de replicación, puede agregar ajustes de configuración opcionales para cambiar la propiedad de la réplica a la Cuenta de AWS propietaria de los buckets de destino.
Para cambiar el propietario de la réplica, haga lo siguiente:
-
Añada la opción de invalidación del propietario a la configuración de replicación para indicar a Amazon S3 que cambie la propiedad de la réplica.
-
Conceda a Amazon S3 el permiso
s3:ObjectOwnerOverrideToBucketOwner
para cambiar la propiedad de la réplica. -
Añada el permiso
s3:ObjectOwnerOverrideToBucketOwner
en la política del bucket de destino para permitir el cambio de propiedad de la réplica. El permisos3:ObjectOwnerOverrideToBucketOwner
permite al propietario de los buckets de destino aceptar la propiedad de las réplicas de objetos.
Para obtener más información, consulte Consideraciones sobre la opción de anulación de la propiedad y Agregar la opción de invalidación del propietario a la configuración de la replicación. Para ver un ejemplo práctico con instrucciones paso a paso, consulte Cómo cambiar al propietario de la réplica.
importante
En lugar de utilizar la opción de invalidación del propietario, puede utilizar la configuración de propietario del bucket obligatorio de Propiedad de objetos. Cuando utiliza la replicación y los buckets de origen y destino pertenecen a diferentes Cuentas de AWS, el propietario del bucket de destino puede utilizar la configuración aplicada por el propietario del bucket para Propiedad de objetos con el fin de cambiar la propiedad de réplica a la Cuenta de AWS que posee el bucket de destino. Esta configuración deshabilita las listas de control de acceso (ACL) a objetos.
La configuración aplicada por el propietario del bucket imita el comportamiento de anulación del propietario existente sin necesidad del permiso s3:ObjectOwnerOverrideToBucketOwner
. 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.
Consideraciones sobre la opción de anulación de la propiedad
Al configurar la opción de anulación de propiedad, se aplican las siguientes consideraciones:
-
De forma predeterminada, el propietario del objeto de origen también es propietario de la réplica. Amazon S3 replica la versión del objeto y la ACL asociada a ella.
Si agrega la opción de anulación del propietario a la configuración de replicación, Amazon S3 replica solo la versión del objeto, no la ACL. Además, Amazon S3 no replica los cambios que se realicen posteriormente en la ACL del objeto de origen. Amazon S3 establece la ACL de la réplica de forma que se conceda control completo al propietario del bucket de destino.
-
Al actualizar una configuración de replicación para habilitar o deshabilitar la anulación del propietario, se produce el siguiente comportamiento:
-
Si añade la opción de invalidación del propietario a la configuración de replicación:
Cuando Amazon S3 replica una versión del objeto, descarta la ACL asociada al objeto de origen. En su lugar, Amazon S3 establece la ACL de la réplica de forma que se conceda control completo al propietario del bucket de destino. Amazon S3 no replica los cambios que se realicen posteriormente en la ACL del objeto de origen. No obstante, este cambio a la ACL no se aplica a las versiones de objetos que se replicaron antes de configurar la opción de invalidación del propietario. Las actualizaciones de las ACL de los objetos de origen que se replicaron antes de que se configurara la opción de invalidación del propietario se seguirán replicando (porque el objeto y sus réplicas siguen teniendo el mismo propietario).
-
Si elimina la opción de invalidación del propietario de la configuración de replicación:
Amazon S3 replica objetos nuevos que aparecen en el bucket de origen y las ACL asociadas a los buckets de destino. Para objetos que se replicaron antes de que eliminar la invalidación del propietario, Amazon S3 no replica las ACL porque el cambio de titularidad del objeto que realizó Amazon S3 permanece en vigor. Es decir, las ACL aplicadas a la versión del objeto que se replicaban cuando se estableció la opción de invalidación del propietario siguen sin replicarse.
-
Agregar la opción de invalidación del propietario a la configuración de la replicación
aviso
Agregue la opción de invalidación del propietario solo cuando los buckets de origen y destino pertenezcan a distintas Cuentas de AWS. Amazon S3 no comprueba si los buckets pertenecen a las mismas cuentas o a cuentas diferentes. Si agrega la opción de invalidación del propietario cuando ambos buckets pertenecen a la misma Cuenta de AWS, Amazon S3 aplica la opción de invalidación del propietario. Esta opción concede permisos completos al propietario del bucket de destino y no replica las actualizaciones que se realicen posteriormente en la lista de control de acceso (ACL) del objeto de origen. El propietario de la réplica puede cambiar directamente la ACL asociada a una réplica con una solicitud PutObjectAcl
, pero no a través de la replicación.
Para especificar la opción de sustitución de propietario, agregue lo siguiente a cada Destination
elemento:
-
El elemento
AccessControlTranslation
, que indica a Amazon S3 que cambie la titularidad de la réplica. -
El elemento
Account
, que especifica la Cuenta de AWS del propietario del bucket de destino.
<ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> ... <Destination> ... <AccessControlTranslation> <Owner>Destination</Owner> </AccessControlTranslation> <Account>
destination-bucket-owner-account-id
</Account> </Destination> </Rule> </ReplicationConfiguration>
La siguiente configuración de replicación de ejemplo, indica a Amazon S3 que replique objetos que tienen el prefijo de clave
en el bucket de destino Tax
y cambie la propiedad de las réplicas. Para utilizar este ejemplo, reemplace los amzn-s3-demo-destination-bucket
con su propia información.user input
placeholders
<?xml version="1.0" encoding="UTF-8"?> <ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Role>arn:aws:iam::
account-id
:role/role-name
</Role> <Rule> <ID>Rule-1
</ID> <Priority>1
</Priority> <Status>Enabled</Status> <DeleteMarkerReplication> <Status>Disabled
</Status> </DeleteMarkerReplication> <Filter> <Prefix>Tax
</Prefix> </Filter> <Destination> <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket
</Bucket> <Account>destination-bucket-owner-account-id
</Account> <AccessControlTranslation> <Owner>Destination</Owner> </AccessControlTranslation> </Destination> </Rule> </ReplicationConfiguration>
Concesión de permisos a Amazon S3 para cambiar la titularidad de la réplica
Conceda a Amazon S3 permisos para cambiar la propiedad de las réplicas añadiendo permisos para la acción s3:ObjectOwnerOverrideToBucketOwner
en la política de permisos asociada con el rol de AWS Identity and Access Management (IAM). Se trata del rol de IAM que especificó en la configuración de replicación que permite a Amazon S3 asumir y replicar objetos en su nombre. Para usar el siguiente ejemplo, sustituya
con el nombre del bucket de destino.amzn-s3-demo-destination-bucket
... { "Effect":"Allow", "Action":[ "s3:ObjectOwnerOverrideToBucketOwner" ], "Resource":"arn:aws:s3:::
amzn-s3-demo-destination-bucket
/*" } ...
Agregar permiso a la política del bucket de destino para permitir cambiar la titularidad de la réplica
El propietario del bucket de destino debe otorgar al propietario del bucket de origen permiso para cambiar la titularidad de la réplica. El propietario del bucket de destino otorga al propietario del bucket de origen permiso para la acción s3:ObjectOwnerOverrideToBucketOwner
. Este permiso permite al propietario del bucket de destino aceptar la propiedad de las réplicas de objetos. En el siguiente ejemplo de instrucción de política de buckets se muestra cómo se hace esto. Para utilizar este ejemplo, reemplace los
con su propia información.user input placeholders
... { "Sid":"1", "Effect":"Allow", "Principal":{"AWS":"
source-bucket-account-id
"}, "Action":["s3:ObjectOwnerOverrideToBucketOwner"], "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket
/*" } ...
Cómo cambiar al propietario de la réplica
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 los ejemplos siguientes, se muestra cómo utilizar la consola de Amazon S3, la AWS Command Line Interface (AWS CLI) y los AWS SDK para cambiar la propiedad de las réplicas.
Para obtener instrucciones paso a paso, consulte Configuración de replicación para buckets en la misma cuenta. En este tema, se proporcionan instrucciones para establecer la configuración de replicación cuando los buckets de origen y destino son propiedad de la misma y de diferentes Cuentas de AWS.
En el siguiente procedimiento, se muestra cómo cambiar la propiedad de la réplica mediante la AWS CLI. En este procedimiento, hará lo siguiente:
-
Cree buckets de origen y destino.
-
Habilite el control de versiones en los buckets.
-
Cree un rol de AWS Identity and Access Management (IAM) que conceda a Amazon S3 permisos para replicar objetos.
-
Agregue la configuración de replicación al bucket de origen.
-
En la configuración de replicación, indique a Amazon S3 que cambie la propiedad de la réplica.
-
Pruebe la configuración de replicación.
Cambio de la propiedad de réplicas cuando los buckets de origen y destino son propiedad de diferentes Cuentas de AWS (AWS CLI)
Para usar los comandos AWS CLI de ejemplo, sustituya
con su información. user input placeholders
-
En este ejemplo, se crean los buckets de origen y destino en dos Cuentas de AWS diferentes. Para trabajar con estas dos cuentas, configure la AWS CLI con dos perfiles con nombre. Este ejemplo usa los nombres de perfil
yacctA
respectivamente. Para obtener más información sobre los perfiles de credenciales y usar perfiles con nombre, consulte Opciones de los archivos de configuración y credenciales en la Guía del usuario de AWS Command Line Interface.acctB
importante
Los perfiles utilizados para este procedimiento deben 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 en este procedimiento. Para obtener más información, consulte Concesión de permisos a un usuario para transferir un rol a un servicio de 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 de origen llamado
en la región Este de EE. UU. (Norte de Virginia) (amzn-s3-demo-source-bucket
us-east-1
).aws s3api create-bucket \ --bucket
amzn-s3-demo-source-bucket
\ --regionus-east-1
\ --profileacctA
aws s3api put-bucket-versioning \ --bucket
amzn-s3-demo-source-bucket
\ --versioning-configuration Status=Enabled \ --profileacctA
-
Cree un bucket de
destino
y habilite el control de versiones. En este ejemplo, se crea el bucket de destino llamado
en la región Oeste de EE. UU. (Oregón) (amzn-s3-demo-destination-bucket
us-west-2
). Utilice un perfil de Cuenta de AWS diferente al utilizado para el bucket de origen.aws s3api create-bucket \ --bucket
amzn-s3-demo-destination-bucket
\ --regionus-west-2
\ --create-bucket-configuration LocationConstraint=us-west-2
\ --profileacctB
aws s3api put-bucket-versioning \ --bucket
amzn-s3-demo-destination-bucket
\ --versioning-configuration Status=Enabled \ --profileacctB
-
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 un archivo denominado
. Asegúrese de sustituirdestination-bucket-policy
.json
con su propia información.user input placeholders
{ "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:::amzn-s3-demo-destination-bucket
/*" ] } ] } -
Agregue la política anterior al bucket de destino mediante el siguiente comando
put-bucket-policy
:aws s3api put-bucket-policy --region
$
{destination-region
} --bucket$
{amzn-s3-demo-destination-bucket
} --policy file://destination_bucket_policy
.json
-
-
Crear 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:-
Cree el rol.
-
Asocie una política de permisos al rol.
-
Cree el rol de IAM.
-
Copie la siguiente política de confianza y guárdela en un archivo llamado
en el directorio actual en su equipo local. Esta política concede a Amazon S3 permisos para asumir el rol.s3-role-trust-policy
.json{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
-
Ejecute el siguiente comando
create-role
de AWS CLI para crear el rol de IAM:$
aws iam create-role \ --role-namereplicationRole
\ --assume-role-policy-document file://s3-role-trust-policy
.json \ --profileacctA
Anote el nombre de recurso de Amazon (ARN) del rol de IAM que creó. Necesitará este ARN en un paso posterior.
-
-
Asocie una política de permisos al rol.
-
Copie la siguiente política de permisos y guárdela en un archivo llamado
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, asocie esta política al rol de IAM que ha creado antes.s3-role-perm-pol-changeowner
.json{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::
amzn-s3-demo-source-bucket
/*" ] }, { "Effect":"Allow", "Action":[ "s3:ListBucket", "s3:GetReplicationConfiguration" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-source-bucket
" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ObjectOwnerOverrideToBucketOwner", "s3:ReplicateTags", "s3:GetObjectVersionTagging" ], "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket
/*" } ] } -
Para asociar la política de permisos anterior al rol, ejecute el siguiente comando
put-role-policy
:$
aws iam put-role-policy \ --role-namereplicationRole
\ --policy-document file://s3-role-perm-pol-changeowner
.json \ --policy-namereplicationRolechangeownerPolicy
\ --profileacctA
-
-
-
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
en el directorio actual en su equipo local. En la configuración,replication
.jsonAccessControlTranslation
especifica el cambio en la propiedad de la réplica del propietario del bucket de origen al propietario del bucket de destino.{ "Role":"
IAM-role-ARN
", "Rules":[ { "Status":"Enabled", "Priority":1, "DeleteMarkerReplication":{ "Status":"Disabled" }, "Filter":{ }, "Status":"Enabled", "Destination":{ "Bucket":"arn:aws:s3:::amzn-s3-demo-destination-bucket
", "Account":"destination-bucket-owner-account-id
", "AccessControlTranslation":{ "Owner":"Destination" } } } ] } -
Edite el JSON proporcionando valores para el nombre del bucket de destino, el ID de la cuenta del propietario del bucket de destino y
. SustituyaIAM-role-ARN
por el ARN del rol de IAM que ha creado anteriormente. Guarde los cambios.IAM-role-ARN
-
Para agregar la configuración de replicación al bucket de origen, ejecute el siguiente comando:
$
aws s3api put-bucket-replication \ --replication-configuration file://replication
.json \ --bucketamzn-s3-demo-source-bucket
\ --profileacctA
-
-
Pruebe la configuración de replicación comprobando 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 de destino contenga las réplicas de objeto y que la propiedad de las réplicas haya cambiado a la Cuenta de AWS propietaria del bucket de destino.
Para obtener un ejemplo de código para agregar una configuración de replicación, consulte Uso de los AWS SDK. Tendrá que modificar la configuración de replicación en concordancia. Para obtener información conceptual, consulte Cambiar el propietario de la réplica.