Alterar o proprietário da réplica
Na replicação, por padrão o proprietário do objeto de origem também é proprietário da réplica. No entanto, quando os buckets de origem e de destino pertencem a Contas da AWS diferentes, você pode querer alterar a propriedade da réplica. Por exemplo, você pode querer alterar a propriedade para restringir o acesso a replicas de objetos. Na configuração de replicação, é possível adicionar configurações opcionais para alterar a propriedade da réplica para a Conta da AWS que possui os buckets de destino.
Para alterar o proprietário da réplica, faça o seguinte:
-
Adicione a opção de substituição do proprietário à configuração da replicação para instruir o Amazon S3 a alterar a propriedade da réplica.
-
Conceda ao Amazon S3 a permissão
s3:ObjectOwnerOverrideToBucketOwner
para alterar a propriedade da réplica. -
Adicione a permissão
s3:ObjectOwnerOverrideToBucketOwner
na política do bucket de destino para permitir a alteração da propriedade da réplica. A permissãos3:ObjectOwnerOverrideToBucketOwner
autoriza que o proprietário do bucket de destino aceite a propriedade das réplicas de objetos.
Para ter mais informações, consulte Considerações sobre a opção de substituição da propriedade e Adicionar a opção de substituição do proprietário à configuração da replicação. Para ver um exemplo funcional com instruções detalhadas, consulte Como alterar o proprietário da réplica.
Importante
Em vez de usar a opção de substituição do proprietário do bucket, é possível usar a configuração aplicada pelo proprietário do bucket em Propriedade de objeto. Quando você usa a replicação e os buckets de origem e de destino pertencem a Contas da AWS diferentes, o proprietário do bucket de destino pode usar a configuração aplicada pelo proprietário do bucket em Propriedade de objetos para alterar a propriedade da réplica para a Conta da AWS que possui o bucket de destino. Essa configuração desabilita listas de controle de acesso (ACLs) de objetos.
A configuração aplicada pelo proprietário do bucket imita o comportamento de substituição do proprietário existente sem a necessidade da permissão s3:ObjectOwnerOverrideToBucketOwner
. Todos os objetos que são replicados para o bucket de destino com a configuração aplicada pelo proprietário do bucket pertencem ao proprietário do bucket de destino. Para obter informações sobre o Object Ownership, consulte Controlar a propriedade de objetos e desabilitar ACLs para seu bucket.
Considerações sobre a opção de substituição da propriedade
Ao configurar a opção de substituição da propriedade, aplicam-se as seguintes considerações:
-
Por padrão, o proprietário do objeto de origem também possui a réplica. O Amazon S3 replica a versão do objeto e a ACL associada a ela.
Se você adicionar a opção de substituição do proprietário à configuração de replicação, o Amazon S3 replicará somente a versão do objeto, não a ACL. Além disso, o Amazon S3 não replica as alterações subsequentes na ACL do objeto de origem. O Amazon S3 define a ACL na réplica que concede controle total ao proprietário do bucket de destino.
-
Ao atualizar uma configuração de replicação para habilitar ou desabilitar a substituição do proprietário, ocorrerá o seguinte comportamento:
-
Se você adicionar a opção de substituição do proprietário à configuração da replicação:
Quando o Amazon S3 replica uma versão do objeto, ele descarta a ACL associada ao objeto de origem. Em vez disso, o Amazon S3 define a ACL na réplica, dando o controle total ao proprietário do bucket de destino. O Amazon S3 não replica as alterações subsequentes na ACL do objeto de origem. No entanto, essa alteração na ACL não se aplica às versões de objeto replicadas antes de você definir a opção de substituição do proprietário. As atualizações da ACL nos objetos de origem replicados antes da substituição do proprietário foram definidas para continuarem a ser replicadas (porque o objeto e suas réplicas continuam a ter o mesmo proprietário).
-
Se você remover a opção de substituição do proprietário da configuração da replicação:
O Amazon S3 replica novos objetos que aparecem no bucket de origem e as ACLs associadas aos buckets de destino. Para objetos replicados antes de você ter removido a substituição do proprietário, o Amazon S3 não replicará as ACLs, pois a propriedade do objeto muda, de maneira que o Amazon S3 feito permanece em vigor. Em outras palavras: as ACLs colocaram a versão do objeto que foi replicada quando a substituição do proprietário tinha sido substituída para não continuarem a ser replicadas.
-
Adicionar a opção de substituição do proprietário à configuração da replicação
Atenção
Adicione a opção de substituição do proprietário somente quando os buckets de origem e de destino pertencerem a Contas da AWS diferentes. O Amazon S3 não verifica se os buckets pertencem à mesma conta ou a contas diferentes. Se você adicionar a substituição do proprietário quando os dois buckets pertencerem à mesma Conta da AWS, o Amazon S3 aplicará a substituição do proprietário. Essa opção concede permissões completas ao proprietário do bucket de destino e não replica as atualizações subsequentes às listas de controle de acesso (ACLs) dos objetos de origem. O proprietário da réplica pode alterar diretamente na ACL associada a uma réplica com uma solicitação PutObjectAcl
, mas não por replicação.
Para especificar a opção de substituição do proprietário, adicione o seguinte ao elemento Destination
:
-
O elemento
AccessControlTranslation
, que diz ao Amazon S3 para alterar a propriedade da réplica -
O elemento
Account
, que especifica a Conta da AWS do proprietário do 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>
A configuração da replicação do exemplo a seguir instrui o Amazon S3 a replicar os objetos que têm o prefixo de chaves
ao bucket de destino Tax
e alterar a propriedade das réplicas. Para usar esse exemplo, substitua os amzn-s3-demo-destination-bucket
por suas próprias informações.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>
Conceder permissão do Amazon S3 para alterar a propriedade da réplica
Conceda permissões do Amazon S3 para alterar a propriedade da réplica adicionando permissão para a ação s3:ObjectOwnerOverrideToBucketOwner
na política de permissões associada ao perfil do AWS Identity and Access Management (IAM). Esse é o perfil do IAM especificado na configuração de replicação que permite que o Amazon S3 assuma e replique objetos em seu nome. Para usar o exemplo a seguir, substitua
pelo nome do bucket de destino.amzn-s3-demo-destination-bucket
... { "Effect":"Allow", "Action":[ "s3:ObjectOwnerOverrideToBucketOwner" ], "Resource":"arn:aws:s3:::
amzn-s3-demo-destination-bucket
/*" } ...
Adicionar a permissão na política do bucket de destino para permitir a alteração da propriedade da réplica
O proprietário do bucket de destino deve conceder ao proprietário da permissão do bucket de origem para alterar a propriedade da réplica. A propriedade do bucket de destino concede ao proprietário do bucket de origem permissão para a ação s3:ObjectOwnerOverrideToBucketOwner
. Essa permissão autoriza que o proprietário do bucket de destino aceite a propriedade das réplicas de objetos. O exemplo de declaração de política do bucket a seguir mostra como fazer isso. Para usar esse exemplo, substitua os
por suas próprias informações.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
/*" } ...
Como alterar o proprietário da réplica
Quando os buckets de origem e de destino em uma configuração de replicação pertencem a Contas da AWS diferentes, você pode instruir o Amazon S3 a alterar a propriedade da réplica para a Conta da AWS que possui o bucket de destino. Os exemplos a seguir mostram como usar o console do Amazon S3, a AWS Command Line Interface (AWS CLI) e os SDKs da AWS para alterar a propriedade da réplica.
Para obter instruções detalhadas, consulte Configurar a replicação para buckets na mesma conta. Este tópico fornece instruções para definir a configuração da replicação quando os buckets de origem e de destino pertencerem às mesmas Contas da AWS ou a contas diferentes.
O procedimento a seguir mostra como alterar a propriedade da réplica usando a AWS CLI. Neste procedimento, você faz o seguinte:
-
Crie os buckets de origem e de destino.
-
Habilite o versionamento nos buckets.
-
Crie um perfil do AWS Identity and Access Management (IAM) que dê ao Amazon S3 permissão para replicar objetos.
-
Adicione uma configuração de replicação ao bucket de origem.
-
Na configuração da replicação, você instrui o Amazon S3 a alterar a propriedade da réplica.
-
Você testa a configuração de replicação.
Como alterar o proprietário da réplica quando os buckets de origem e de destino pertencem a Contas da AWS diferentes (AWS CLI)
Para usar os comandos AWS CLI de exemplo neste procedimento, substitua
por suas informações. user input placeholders
-
Neste exemplo, você cria os buckets de origem e de destino em duas Contas da AWS diferentes. Para trabalhar com essas duas contas, configure a AWS CLI com dois perfis nomeados. Este exemplo usa os perfis nomeados
eacctA
, respectivamente. Consulte mais informações sobre como configurar perfis de credenciais e como usar perfis nomeados em Configuration and credential file settings no Guia do usuário da AWS Command Line Interface.acctB
Importante
Os perfis que você usar para este procedimento devem ter as permissões necessárias. Por exemplo, na configuração da replicação, especifique a função do IAM que o Amazon S3 pode assumir. Você só poderá fazer isso se o perfil usado tiver a permissão
iam:PassRole
. Se usar as credenciais do usuário administrador para criar um perfil nomeado, você poderá realizar todas as tarefas nesse procedimento. Para ter mais informações, consulte Conceder permissões ao usuário para transmitir um perfil a um AWS service (Serviço da AWS) no Guia do usuário do IAM. -
Crie o bucket de
origem
e habilite o versionamento. Esse exemplo cria um bucket de origem chamado
na região Leste dos EUA (N. da Virgínia) (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
-
Crie um bucket de
destino
e habilite o versionamento. Esse exemplo cria um bucket de destino chamado
na região Oeste dos EUA (Oregon) (amzn-s3-demo-destination-bucket
us-west-2
). Use um perfil de Conta da AWS diferente do usado para o bucket de origem.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
-
É necessário adicionar permissões à política de bucket de
destino
para permitir a alteração da propriedade da réplica.-
Salve a política a seguir em um arquivo chamado
. Substituadestination-bucket-policy
.json
por suas próprias informações.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
/*" ] } ] } -
Adicione a política anterior ao bucket de destino usando o seguinte comando
put-bucket-policy
:aws s3api put-bucket-policy --region
$
{destination-region
} --bucket$
{amzn-s3-demo-destination-bucket
} --policy file://destination_bucket_policy
.json
-
-
Crie uma função do IAM. Você especifica essa função na configuração da replicação que adiciona ao bucket de
origem
posteriormente. O Amazon S3 assume essa função para replicar objetos em seu nome. A função do IAM é criada em duas etapas:-
Crie a função.
-
Anexar uma política de permissões à função.
-
Crie a função do IAM.
-
Copie a política de confiança a seguir e salve-a em um arquivo chamado
no diretório atual do computador local. Essa política concede ao Amazon S3 permissões para assumir a função.s3-role-trust-policy
.json{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
-
Execute o seguinte comando
create-role
da AWS CLI para criar o perfil do IAM:$
aws iam create-role \ --role-namereplicationRole
\ --assume-role-policy-document file://s3-role-trust-policy
.json \ --profileacctA
Anote o nome do recurso da Amazon (ARN) do perfil do IAM que você criou. Você precisará desse AR em uma etapa posterior.
-
-
Anexar uma política de permissões à função.
-
Copie a política de permissões a seguir e salve-a em um arquivo com o nome
no diretório atual do computador local. Essa política concede permissões para várias ações de bucket e objetos do Amazon S3. Nas etapas a seguir, anexe essa política ao perfil do IAM criado anteriormente.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 anexar a política de permissões anterior ao perfil, execute o seguinte comando
put-role-policy
:$
aws iam put-role-policy \ --role-namereplicationRole
\ --policy-document file://s3-role-perm-pol-changeowner
.json \ --policy-namereplicationRolechangeownerPolicy
\ --profileacctA
-
-
-
Adicione uma configuração de replicação ao bucket de origem.
-
A AWS CLI requer que você especifique a configuração de replicação como JSON. Salve o JSON a seguir em um arquivo chamado
no diretório atual local do computador local. Na configuração,replication
.jsonAccessControlTranslation
especifica a mudança na propriedade da réplica do proprietário do bucket de origem para o proprietário do 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 o JSON fornecendo os valores do nome do bucket de destino, o ID da conta do proprietário do bucket de destino e o
. SubstituaIAM-role-ARN
pelo ARN do perfil do IAM que você criou anteriormente. Salve as alterações.IAM-role-ARN
-
Para adicionar a configuração de replicação ao bucket de origem, execute o seguinte comando:
$
aws s3api put-bucket-replication \ --replication-configuration file://replication
.json \ --bucketamzn-s3-demo-source-bucket
\ --profileacctA
-
-
Teste a configuração de replicação verificando a propriedade da réplica no console do Amazon S3.
Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/
. -
Adicione objetos ao bucket de
origem
. Verifique se o bucket de destino contém as réplicas de objetos e se a propriedade das réplicas mudou para a Conta da AWS que possui o bucket de destino.
Consulte um exemplo de código para adicionar uma configuração de replicação em Uso dos AWS SDKs. Você precisa modificar a configuração de replicação adequadamente. Para obter informações conceituais, consulte Alterar o proprietário da réplica.