

# Configurar a replicação para buckets na mesma conta
<a name="replication-walkthrough1"></a>

A replicação em tempo real é a cópia assíncrona automática de objetos em buckets de uso geral em Regiões da AWS diferentes ou na mesma região. A replicação em tempo real copia os objetos recém-criados e as atualizações de objeto de um bucket de origem para buckets de destino. Para obter mais informações, consulte [Replicar objetos dentro de uma região e entre regiões](replication.md).

Ao configurar a replicação, você adiciona regras de replicação ao bucket de origem. As regras de replicação definem quais objetos do bucket de origem devem ser replicados e o bucket de destino ou buckets nos quais os objetos replicados são armazenados. Você pode criar uma regra para replicar todos os objetos dentro de um bucket ou um subgrupo de objetos com um prefixo específico de nome de chaves, uma ou mais tags de objetos ou ambos. Um bucket de destino pode estar na mesma Conta da AWS que o bucket de origem ou pode estar em uma conta diferente.

Se você especificar um ID da versão do objeto a ser excluído, o Amazon S3 excluirá essa versão do objeto no bucket de origem. No entanto, ele não replica a exclusão no bucket de destino. Em outras palavras: ele não exclui a mesma versão do objeto do bucket de destino. Isso protege os dados contra exclusões mal-intencionadas.

Quando você adiciona uma regra de replicação a um bucket, ela fica ativada por padrão, portanto, começa a funcionar assim que é salva. 

Neste exemplo, você configura a replicação em tempo real para os buckets de origem e de destino que pertencem à mesma Conta da AWS. São apresentados exemplos de uso do console do Amazon S3, da AWS Command Line Interface (AWS CLI), do AWS SDK para Java e do AWS SDK para .NET.

## Pré-requisitos
<a name="replication-prerequisites"></a>

Antes de usar os procedimentos a seguir, configure as permissões necessárias para replicação, dependendo se os buckets de origem e de destino pertencem à mesma conta ou a contas diferentes. Para obter mais informações, consulte [Configurar permissões para replicação em tempo real](setting-repl-config-perm-overview.md).

**nota**  
Se você quiser replicar objetos criptografados, também precisará conceder as permissões de chave do AWS Key Management Service (AWS KMS) necessárias. Para obter mais informações, consulte [Replicar objetos criptografados (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C)](replication-config-for-kms-objects.md).
Para usar a funcionalidade Bloqueio de Objetos com replicação, é necessário conceder duas permissões adicionais no bucket de origem do S3 no perfil do AWS Identity and Access Management (IAM) usado para configurar a replicação. As duas permissões adicionais são `s3:GetObjectRetention` e `s3:GetObjectLegalHold`. Se o perfil tiver uma instrução de permissão `s3:Get*`, essa instrução satisfará o requisito. Para obter mais informações, consulte [Usar a funcionalidade Bloqueio de Objetos com a funcionalidade Replicação do S3](object-lock-managing.md#object-lock-managing-replication). 

## Usar o console do S3
<a name="enable-replication"></a>

Para configurar uma regra de replicação quando o bucket de destino estiver na mesma Conta da AWS que o bucket de origem, siga estas etapas.

Se o bucket de destino estiver um uma conta diferente do bucket de origem, você deverá adicionar uma política ao bucket de destino. Assim, será possível conceder ao proprietário da conta do bucket de origem permissão para replicar objetos no bucket de destino. Para obter mais informações, consulte [(Opcional) Etapa 3: conceder permissões quando os buckets de origem e de destino pertencerem a Contas da AWS diferentes](setting-repl-config-perm-overview.md#setting-repl-config-crossacct).

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação à esquerda, escolha **Buckets de uso geral**.

1. Na lista de buckets, escolha o nome do bucket desejado.

1. Selecione a guia **Gerenciamento**, role para baixo até **Regras de replicação** e selecione **Criar regra de replicação**.

    

1. Na seção **Configuração da regra de replicação**, em **Nome da regra de replicação**, insira um nome para sua regra para ajudar a identificá-la posteriormente. O nome é obrigatório e precisa ser exclusivo dentro do bucket.

1. Em **Status**, **Enabled (Habilitado)** é selecionado por padrão. Uma regra ativada começa a funcionar assim que você a salva. Se você quiser ativar a regra posteriormente, selecione **Desabilitado**.

1. Se o bucket tiver regras de replicação existentes, você será instruído a definir uma prioridade para a regra. Defina uma prioridade para a regra, de maneira a evitar conflitos causados pelos objetos incluídos no escopo de mais de uma regra. No caso de sobreposição de regras, o Amazon S3 usa a prioridade da regra para determinar qual regra aplicar. Quanto maior o número, maior a prioridade. Para obter mais informações sobre prioridade de regra, consulte [Elementos do arquivo de configuração de replicação](replication-add-config.md).

1. Em **Bucket de origem**, você tem as seguintes opções para definir a origem da replicação:
   + Para replicar todo o bucket, escolha **Apply to all objects in the bucket** (Aplicar a todos os objetos no bucket). 
   + Para replicar todos os objetos que tenham o mesmo prefixo, escolha **Limit the scope of this rule using one or more filters (Limitar o escopo desta regra usando um ou mais filtros)**. Isso limita a replicação a todos os objetos que tenham nomes que começam com o prefixo especificado (por exemplo, `pictures`). Insira um prefixo na caixa **Prefixo**. 
**nota**  
Se você inserir um prefixo que seja o nome de uma pasta, é preciso usar **/** (barra) como o último caractere (por exemplo, `pictures/`).
   + Para replicar todos os objetos com uma ou mais tags de objeto, selecione **Adicionar tag** e insira o par de chave-valor nas caixas. Repita o procedimento para adicionar outra tag. Você pode combinar um prefixo e tags. Para obter mais informações sobre tags de objeto, consulte [Categorizar objetos usando tags](object-tagging.md).

   O novo esquema XML de configuração de replicação é compatível com os filtros de prefixo e tags e com a priorização das regras. Para obter mais informações sobre o novo esquema, consulte [Considerações sobre a compatibilidade com versões anteriores](replication-add-config.md#replication-backward-compat-considerations). Para obter mais informações sobre o XML usado com a API do Amazon S3 que funciona atrás da interface do usuário, consulte [Elementos do arquivo de configuração de replicação](replication-add-config.md). O novo esquema é descrito como *configuração de replicação XML V2*.

1. Em **Destino**, selecione o bucket no qual você deseja que o Amazon S3 replique objetos.
**nota**  
O número de buckets de destino é limitado ao número de Regiões da AWS em determinada partição. Uma partição é um agrupamento de regiões. Atualmente, a AWS tem três partições: `aws` (regiões padrão), `aws-cn` (regiões da China) e `aws-us-gov` (regiões AWS GovCloud (US)). Para solicitar um aumento da cota do bucket de destino, você pode usar [cotas de serviço](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html).
   + Para replicar para um bucket ou buckets em sua conta, selecione **Escolher um bucket nesta conta** e digite ou procure nomes de buckets de destino. 
   + Para replicar em um ou mais buckets em uma Conta da AWS diferente, selecione **Selecionar um bucket em outra conta** e insira o ID e o nome da conta do bucket de destino. 

     Se o destino estiver um uma conta diferente do bucket de origem, você deverá adicionar uma política de bucket aos buckets de destino para conceder ao proprietário da conta do bucket de origem permissão para replicar objetos. Para obter mais informações, consulte [(Opcional) Etapa 3: conceder permissões quando os buckets de origem e de destino pertencerem a Contas da AWS diferentes](setting-repl-config-perm-overview.md#setting-repl-config-crossacct).

     Opcionalmente, se você quiser padronizar a propriedade de novos objetos no bucket de destino, escolha **Alterar propriedade do objeto para o proprietário do bucket de destino**. Para obter mais informações sobre essa opção, consulte [Controlar a propriedade de objetos e desabilitar ACLs para seu bucket](about-object-ownership.md).
**nota**  
Se o versionamento não estiver ativado no bucket de destino, você receberá uma advertência que contém um botão **Enable versioning** (Habilitar versionamento). Escolha esse botão para habilitar o versionamento no bucket.

1. Configure uma função do AWS Identity and Access Management (IAM) que o Amazon S3 possa assumir para replicar objetos em seu nome.

   Para configurar um perfil do IAM, na seção **Perfil do IAM**, selecione uma das seguintes opções na lista suspensa de **perfis do IAM**:
   + Recomendamos que você escolha **Create new role (Criar nova função)** para que o Amazon S3 crie uma nova função do IAM para você. Quando você salva a regra, uma nova política é gerada para a função do IAM que coincide com os buckets de origem e de destino que você escolher.
   + Você pode usar uma função do IAM existente. Se fizer isso, escolha uma função que conceda ao Amazon S3 as permissões necessárias para a replicação. A replicação falhará se essa função não conceder ao Amazon S3 permissões suficientes para seguir sua regra de replicação.
**Importante**  
Quando você adiciona uma regra de replicação a um bucket, você deve ter a permissão `iam:PassRole` para poder transmitir a função do IAM que concede permissões de replicação do Amazon S3. Para ter mais informações, consulte [Conceder permissões ao usuário para transmitir um perfil a um AWS service (Serviço da AWS)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) no *Guia do usuário do IAM*.

1. Para replicar objetos no bucket de origem que estão criptografados com a criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS), em **Criptografia**, selecione **Replicar objetos criptografados com o AWS KMS**. Em **chaves do AWS KMS para criptografar objetos de destino** estão as chaves de origem que você permite que a replicação use. Todas as chaves de origem do KMS são incluídas por padrão. Para limitar a seleção de chaves do KMS, você pode selecionar um alias ou um ID de chave. 

   Os objetos criptografados pelas AWS KMS keys que você não seleciona não são replicados. A chave do KMS ou um grupo de chaves do KMS é escolhido para você, mas você pode escolher as chaves do KMS, se desejar. Para obter informações sobre como usar o AWS KMS com replicação, consulte [Replicar objetos criptografados (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C)](replication-config-for-kms-objects.md).
**Importante**  
Ao replicar objetos que estão criptografados com AWS KMS, a taxa de solicitações do AWS KMS dobra na Região de origem e aumenta na Região de destino pelo mesmo valor. Essas taxas de chamada aprimoradas para AWS KMS se devem à forma com que os dados são recriptografados usando a chave do KMS que você define na região de destino de replicação. O AWS KMS tem uma cota de taxas de solicitação por conta de chamada por região. Para ter informações sobre os padrões de limite, consulte [Cotas do AWS KMS: solicitações por segundo: varia](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html#requests-per-second) no *Guia do desenvolvedor do AWS Key Management Service*.   
Se a taxa de solicitações do objeto `PUT` do Amazon S3 durante a replicação for maior do que a metade do limite da taxa padrão do AWS KMS para sua conta, recomendamos que você solicite um aumento da cota de taxa de solicitação do AWS KMS. Para solicitar um aumento, crie um caso no Suporte Center em [Entre em contato conosco](https://aws.amazon.com/contact-us/). Por exemplo, suponha que a sua taxa de solicitação do objeto `PUT` seja 1.000 solicitações por segundo e você use o AWS KMS para criptografar seus objetos. Nesse caso, recomendamos solicitar que o Suporte aumente o limite da taxa do AWS KMS para 2,5 mil solicitações por segundo nas regiões de origem e de destino (se forem diferentes) para garantir que não haja nenhum controle de utilização por parte do AWS KMS.   
Para ver a taxa de solicitação de objeto `PUT` no bucket de origem, visualize `PutRequests` nas métricas de solicitação do Amazon CloudWatch para o Amazon S3. Consulte informações sobre como visualizar métricas do CloudWatch em [Uso do console do S3](configure-request-metrics-bucket.md#configure-metrics).

   Se você escolheu replicar objetos criptografados com o AWS KMS, faça o seguinte: 

   1. Em **AWS KMS key para criptografar objetos de destino**, especifique sua chave do KMS de uma das seguintes formas:
     + Para escolher em uma lista de chaves do KMS disponíveis, selecione **Escolher entre suas AWS KMS keys** e escolha sua **chave do KMS** na lista de chaves disponíveis.

       As chaves Chave gerenciada pela AWS (`aws/s3`) e as chaves gerenciadas pelo cliente são exibidas nessa lista. Para ter mais informações sobre chaves gerenciadas pelo cliente, consulte [Chaves de clientes e chaves da AWS](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) no *Guia do desenvolvedor do AWS Key Management Service*.
     + Para inserir o nome do recurso da Amazon (ARN) da chave do KMS, selecione **Inserir ARN da AWS KMS key** e insira o ARN da chave do KMS no campo exibido. Isso criptografa as réplicas no bucket de destino. Você pode encontrar o ARN da chave do KMS no [console do IAM](https://console.aws.amazon.com/iam/) em **Chaves de criptografia**. 
     + Para criar uma chave gerenciada pelo cliente no console do AWS KMS, selecione **Criar uma chave do KMS**.

       Para ter mais informações sobre como criar uma AWS KMS key, consulte [Criação de chaves](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html) no * Guia do desenvolvedor do AWS Key Management Service*.
**Importante**  
Você só pode usar chaves do KMS habilitadas na mesma Região da AWS que o bucket. Quando você seleciona **Escolher de suas chaves do KMS**, o console do S3 lista somente 100 chaves do KMS por região. Se você tiver mais de 100 chaves do KMS na mesma região, será possível ver somente as primeiras 100 chaves do KMS no console do S3. Para usar uma chave do KMS que não esteja listada no console, escolha **Inserir o ARN da AWS KMS key** e insira o ARN de sua chave do KMS.  
Ao usar uma AWS KMS key para criptografia no lado do servidor no Amazon S3, você deve escolher uma chave de criptografia do KMS simétrica. O Amazon S3 só é compatível com chaves do KMS de criptografia simétrica, e não com chaves assimétricas do KMS. Para ter mais informações, consulte [Identificar chaves do KMS simétricas e assimétricas](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html) no *Guia do desenvolvedor do AWS Key Management Service*.

     Para obter mais informações sobre como criar uma AWS KMS key, consulte [Criação de chaves](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) no * Guia do desenvolvedor do AWS Key Management Service*. Para obter mais informações sobre como usar o AWS KMS com o Amazon S3, consulte [Usar criptografia do lado do servidor com o AWS KMS (SSE-KMS)](UsingKMSEncryption.md).

1. Em **Classe de armazenamento de destino**, se você quiser replicar seus dados em uma classe de armazenamento específica no destino, escolha **Alterar a classe de armazenamento dos objetos replicados**. Em seguida, escolha a classe de armazenamento que você deseja usar para os objetos replicados no destino. Se você não selecionar essa opção, a classe de armazenamento para objetos replicados será a mesma classe dos objetos originais.

1. Você tem as seguintes opções adicionais ao definir as **Opções de replicação adicionais**:
   + Se você quiser ativar o Controle do Tempo de Replicação do S3 (S3 RTC) na configuração de replicação, selecione **Controle do Tempo de Replicação (RTC)**. Para obter mais informações sobre essa opção, consulte [Atender aos requisitos de conformidade com o Controle do Tempo de Replicação do S3](replication-time-control.md).
   + Se você quiser habilitar métricas de replicação do S3 na configuração de replicação, selecione **Replication metrics and events** (Métricas e eventos de replicação). Para obter mais informações, consulte [Monitorar a replicação com métricas, notificações de eventos e status](replication-metrics.md).
   + Se quiser habilitar a replicação de marcadores de exclusão na configuração de replicação, selecione **Delete marker replication** (Excluir replicação de marcador). Para obter mais informações, consulte [Replicação de marcadores de exclusão entre intervalos](delete-marker-replication.md).
   + Se você quiser habilitar a sincronização de modificação de réplica do Amazon S3 em sua configuração de replicação, selecione **Replica modification sync** (Sincronização de modificação de réplica). Para obter mais informações, consulte [Replicação de alterações de metadados com sincronização de modificação de réplica](replication-for-metadata-changes.md).
**nota**  
Quando você usa métricas de replicação do S3 RTC ou S3, aplicam-se taxas adicionais.

1. Para terminar, escolha **Save** (Salvar).

1. Depois de salvar sua regra, você pode editar, ativar, desativar ou excluir sua regra selecionando sua regra e escolhendo **Edit rule (Editar regra)**. 

## Usar a AWS CLI
<a name="replication-ex1-cli"></a>

Para configurar a AWS CLI para configurar a replicação quando os buckets de origem e de destino pertencem à mesma Conta da AWS, faça 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.

Para verificar sua configuração, teste-a.

**Como configurar a replicação quando os buckets de origem e de destino pertencem à mesma Conta da AWS**

1. Defina um perfil de credenciais para a AWS CLI. Este exemplo usa o nome de perfil `acctA`. Consulte mais informações sobre como configurar perfis de credenciais e como usar perfis nomeados em [Configuration and credential file settings](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) no *Guia do usuário da AWS Command Line Interface*. 
**Importante**  
O perfil que você usar para este exemplo deve 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`. Consulte mais informações em [Conceda permissões a um usuário para passar um perfil para um AWS service (Serviço da AWS)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) no *Guia do usuário do IAM*. Se você usar credenciais de administrador para criar um perfil nomeado, poderá executar todas as tarefas. 

1. Crie um bucket de origem e habilite o versionamento nele usando os comandos da AWS CLI a seguir. Para usar esses comandos, substitua *`user input placeholders`* por suas próprias informações. 

   O comando `create-bucket` a seguir cria um bucket de origem chamado `amzn-s3-demo-source-bucket` na região Leste dos EUA (N. da Virgínia) (`us-east-1`):

   

   ```
   aws s3api create-bucket \
   --bucket amzn-s3-demo-source-bucket \
   --region us-east-1 \
   --profile acctA
   ```

   O comando `put-bucket-versioning` a seguir habilita o Versionamento do S3 no bucket do `amzn-s3-demo-source-bucket`: 

   ```
   aws s3api put-bucket-versioning \
   --bucket amzn-s3-demo-source-bucket \
   --versioning-configuration Status=Enabled \
   --profile acctA
   ```

1. Crie um bucket de destino e habilite o versionamento nele usando os comandos da AWS CLI a seguir. Para usar esses comandos, substitua *`user input placeholders`* por suas próprias informações. 
**nota**  
Para fazer a configuração de uma replicação quando os buckets de origem e de destino estiverem na mesma Conta da AWS, use o mesmo perfil para os buckets de origem e destino. Este exemplo usa `acctA`.   
Para testar a configuração da replicação quando os buckets pertencerem a diferentes contas da Contas da AWS, especifique diferentes perfis para cada conta. Por exemplo, use um perfil `acctB` para o bucket de destino.

   

   O comando `create-bucket` a seguir cria um bucket de destino chamado `amzn-s3-demo-destination-bucket` na região Oeste dos EUA (Oregon) (`us-west-2`):

   ```
   aws s3api create-bucket \
   --bucket amzn-s3-demo-destination-bucket \
   --region us-west-2 \
   --create-bucket-configuration LocationConstraint=us-west-2 \
   --profile acctA
   ```

   O comando `put-bucket-versioning` a seguir habilita o Versionamento do S3 no bucket do `amzn-s3-demo-destination-bucket`: 

   ```
   aws s3api put-bucket-versioning \
   --bucket amzn-s3-demo-destination-bucket \
   --versioning-configuration Status=Enabled \
   --profile acctA
   ```

1. 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 uma função.
   + Anexar uma política de permissões à função.

   1. Crie a função do IAM.

      1. Copie a política de confiança a seguir e salve-a em um arquivo chamado `s3-role-trust-policy.json` no diretório atual do computador local. Essa política concede à entidade principal do serviço Amazon S3 permissões para assumir o perfil.

------
#### [ JSON ]

****  

         ```
         {
            "Version":"2012-10-17",		 	 	 
            "Statement":[
               {
                  "Effect":"Allow",
                  "Principal":{
                     "Service":"s3.amazonaws.com"
                  },
                  "Action":"sts:AssumeRole"
               }
            ]
         }
         ```

------

      1. Execute o comando a seguir para criar uma função.

         ```
         $ aws iam create-role \
         --role-name replicationRole \
         --assume-role-policy-document file://s3-role-trust-policy.json  \
         --profile acctA
         ```

   1. Anexar uma política de permissões à função.

      1. Copie a política de permissões a seguir e salve-a em um arquivo com o nome `s3-role-permissions-policy.json` 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. 

------
#### [ JSON ]

****  

         ```
         {
            "Version":"2012-10-17",		 	 	 
            "Statement":[
               {
                  "Effect":"Allow",
                  "Action":[
                     "s3:GetObjectVersionForReplication",
                     "s3:GetObjectVersionAcl",
                     "s3:GetObjectVersionTagging"
                  ],
                  "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:ReplicateTags"
                  ],
                  "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
               }
            ]
         }
         ```

------
**nota**  
Se você quiser replicar objetos criptografados, também precisará conceder as permissões de chave do AWS Key Management Service (AWS KMS) necessárias. Para obter mais informações, consulte [Replicar objetos criptografados (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C)](replication-config-for-kms-objects.md).
Para usar a funcionalidade Bloqueio de Objetos com replicação, é necessário conceder duas permissões adicionais no bucket de origem do S3 no perfil do AWS Identity and Access Management (IAM) usado para configurar a replicação. As duas permissões adicionais são `s3:GetObjectRetention` e `s3:GetObjectLegalHold`. Se o perfil tiver uma instrução de permissão `s3:Get*`, essa instrução satisfará o requisito. Para obter mais informações, consulte [Usar a funcionalidade Bloqueio de Objetos com a funcionalidade Replicação do S3](object-lock-managing.md#object-lock-managing-replication). 

      1. Execute o comando a seguir para criar uma política e ligá-la à função. Substitua *`user input placeholders`* por suas próprias informações.

         ```
         $ aws iam put-role-policy \
         --role-name replicationRole \
         --policy-document file://s3-role-permissions-policy.json \
         --policy-name replicationRolePolicy \
         --profile acctA
         ```

1. Adicione uma configuração de replicação ao bucket de origem. 

   1. Embora a API do Amazon S3 exija que você especifique a configuração da replicação como XML, a AWS CLI requer que você especifique a configuração de replicação como JSON. Salve o JSON a seguir em um arquivo chamado `replication.json` no diretório local do seu computador.

      ```
      {
        "Role": "IAM-role-ARN",
        "Rules": [
          {
            "Status": "Enabled",
            "Priority": 1,
            "DeleteMarkerReplication": { "Status": "Disabled" },
            "Filter" : { "Prefix": "Tax"},
            "Destination": {
              "Bucket": "arn:aws:s3:::amzn-s3-demo-destination-bucket"
            }
          }
        ]
      }
      ```

   1. Atualize o JSON substituindo os valores de `amzn-s3-demo-destination-bucket` e `IAM-role-ARN` por suas próprias informações. Salve as alterações.

   1. Execute o comando `put-bucket-replication` a seguir para adicionar a configuração de replicação ao bucket de origem. Dê um nome ao bucket de origem:

      ```
      $ aws s3api put-bucket-replication \
      --replication-configuration file://replication.json \
      --bucket amzn-s3-demo-source-bucket \
      --profile acctA
      ```

   Para recuperar a configuração de replicação, use o comando `get-bucket-replication`:

   ```
   $ aws s3api get-bucket-replication \
   --bucket amzn-s3-demo-source-bucket \
   --profile acctA
   ```

1. Teste a configuração no console do Amazon S3, seguindo estas etapas:

   1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

   1. No painel de navegação à esquerda, escolha **Buckets**. Na lista **Buckets de uso geral**, selecione o bucket de origem.

   1. No bucket de origem, crie uma pasta chamada `Tax`. 

   1. Adicione objetos de amostra à pasta `Tax` no bucket de origem. 
**nota**  
O tempo necessário para o Amazon S3 replicar um objeto depende do tamanho do objeto. Para obter informações sobre como ver o status da replicação, consulte [Obtenção de informações sobre o status da replicação](replication-status.md).

      No bucket de destino, verifique o seguinte:
      + Se o Amazon S3 replicou os objetos.
      + Se os objetos são réplicas. Na guia **Propriedades** dos objetos, role para baixo até a seção **Visão geral do gerenciamento de objetos**. Em **Configurações de gerenciamento**, veja o valor em **Status da replicação**. Esse valor deve ser definido como `REPLICA`.
      + Se as réplicas pertencem à conta do bucket de origem. É possível verificar a propriedade do objeto na guia **Permissões** dos objetos. 

        Se os buckets de origem e de destino pertencerem a contas diferentes, você poderá adicionar uma configuração opcional para instruir o Amazon S3 a alterar a propriedade da réplica à conta de destino. Para ver um exemplo, consulte [Como alterar o proprietário da réplica](replication-change-owner.md#replication-walkthrough-3). 

## Uso da SDKs AWS
<a name="replication-ex1-sdk"></a>

Use os exemplos de código a seguir para adicionar uma configuração de replicação ao bucket com AWS SDK para Java e AWS SDK para .NET, respectivamente.

**nota**  
Se você quiser replicar objetos criptografados, também precisará conceder as permissões de chave do AWS Key Management Service (AWS KMS) necessárias. Para obter mais informações, consulte [Replicar objetos criptografados (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C)](replication-config-for-kms-objects.md).
Para usar a funcionalidade Bloqueio de Objetos com replicação, é necessário conceder duas permissões adicionais no bucket de origem do S3 no perfil do AWS Identity and Access Management (IAM) usado para configurar a replicação. As duas permissões adicionais são `s3:GetObjectRetention` e `s3:GetObjectLegalHold`. Se o perfil tiver uma instrução de permissão `s3:Get*`, essa instrução satisfará o requisito. Para obter mais informações, consulte [Usar a funcionalidade Bloqueio de Objetos com a funcionalidade Replicação do S3](object-lock-managing.md#object-lock-managing-replication). 

------
#### [ Java ]

Para adicionar uma configuração de replicação a um bucket e, em seguida, recuperar e verificar a configuração usando o AWS SDK para Java, você pode usar a S3Client para gerenciar as configurações de replicação programaticamente.

Para obter exemplos de como configurar a replicação com o AWS SDK para Java, consulte [Set replication configuration on a bucket](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_PutBucketReplication_section.html) na *Referência de API do Amazon S3*.

------
#### [ C\$1 ]

O exemplo de código de AWS SDK para .NET a seguir adiciona uma configuração de replicação a um bucket e, depois, a recupera. Para usar esse código, dê nomes aos buckets e o nome de recurso da Amazon (ARN) à função do IAM. Consulte informações sobre como configurar e executar exemplos de código, em [Getting Started with the AWS SDK para .NET](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config.html) no *Guia do desenvolvedor do AWS SDK para .NET*. 

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class CrossRegionReplicationTest
    {
        private const string sourceBucket = "*** source bucket ***";
        // Bucket ARN example - arn:aws:s3:::destinationbucket
        private const string destinationBucketArn = "*** destination bucket ARN ***";
        private const string roleArn = "*** IAM Role ARN ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint sourceBucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 s3Client;
        public static void Main()
        {
            s3Client = new AmazonS3Client(sourceBucketRegion);
            EnableReplicationAsync().Wait();
        }
        static async Task EnableReplicationAsync()
        {
            try
            {
                ReplicationConfiguration replConfig = new ReplicationConfiguration
                {
                    Role = roleArn,
                    Rules =
                        {
                            new ReplicationRule
                            {
                                Prefix = "Tax",
                                Status = ReplicationRuleStatus.Enabled,
                                Destination = new ReplicationDestination
                                {
                                    BucketArn = destinationBucketArn
                                }
                            }
                        }
                };

                PutBucketReplicationRequest putRequest = new PutBucketReplicationRequest
                {
                    BucketName = sourceBucket,
                    Configuration = replConfig
                };

                PutBucketReplicationResponse putResponse = await s3Client.PutBucketReplicationAsync(putRequest);

                // Verify configuration by retrieving it.
                await RetrieveReplicationConfigurationAsync(s3Client);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }
        }
        private static async Task RetrieveReplicationConfigurationAsync(IAmazonS3 client)
        {
            // Retrieve the configuration.
            GetBucketReplicationRequest getRequest = new GetBucketReplicationRequest
            {
                BucketName = sourceBucket
            };
            GetBucketReplicationResponse getResponse = await client.GetBucketReplicationAsync(getRequest);
            // Print.
            Console.WriteLine("Printing replication configuration information...");
            Console.WriteLine("Role ARN: {0}", getResponse.Configuration.Role);
            foreach (var rule in getResponse.Configuration.Rules)
            {
                Console.WriteLine("ID: {0}", rule.Id);
                Console.WriteLine("Prefix: {0}", rule.Prefix);
                Console.WriteLine("Status: {0}", rule.Status);
            }
        }
    }
}
```

------