Cambio del propietario de la réplica cuando los buckets de origen y destino son propiedad de diferentes cuentas - Amazon Simple Storage Service

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
  1. En este ejemplo, crea los buckets de origen y destino en dos Cuentas de AWS diferentes. Configure la AWS CLI con dos perfiles con nombre. Este ejemplo usa los nombres de perfil acctA y acctB 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.

  2. Cree el bucket de origen y habilite el control de versiones. En este ejemplo, se crea el bucket de origen en la región EE. UU. Este (Norte de Virginia) (us-east-1).

    aws s3api create-bucket \ --bucket source \ --region us-east-1 \ --profile acctA
    aws s3api put-bucket-versioning \ --bucket source \ --versioning-configuration Status=Enabled \ --profile acctA
  3. Cree un bucket de destino y habilite el control de versiones. En este ejemplo, se crea el bucket de destino 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 de origen.

    aws s3api create-bucket \ --bucket destination \ --region us-west-2 \ --create-bucket-configuration LocationConstraint=us-west-2 \ --profile acctB
    aws s3api put-bucket-versioning \ --bucket destination \ --versioning-configuration Status=Enabled \ --profile acctB
  4. Debe añadir permisos a la política del bucket de destino para permitir el cambio de titularidad de la réplica.

    1. 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/*" ] } ] }
    2. 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
  5. 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.

    1. Cree un rol de IAM.

      1. 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" } ] }
      2. 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
    2. Asocie una política de permisos al rol.

      1. 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/*" } ] }
      2. 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
  6. Agregar una configuración de replicación al bucket de origen.

    1. 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 de AccessControlTranslation 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" } } } ] }
    2. Edite la JSON proporcionando valores para el ID de la cuenta del propietario del bucket de destino y ARN-rol-IAM. Guarde los cambios.

    3. 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 \ --bucket source \ --profile acctA
  7. Compruebe la propiedad de la réplica en la consola de Amazon S3.

    1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

    2. Agregar objetos al bucket de origen. Compruebe que el bucket de destino contenga réplicas del objeto y que la propiedad de las réplicas haya cambiado a la Cuenta de AWS propietaria del bucket de destino.

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.