Solução de problemas de replicação
Esta seção lista dicas de solução de problemas para a replicação do Amazon S3 e apresenta informações sobre erros de replicação em lote do S3.
Dicas de solução de problemas para a replicação do S3
Se as réplicas dos objetos não aparecerem no bucket de destino depois de configurar a replicação, use as dicas a seguir para identificar e corrigir os problemas.
-
Para a maioria dos objetos, a replicação ocorre em até 15 minutos. O tempo que o Amazon S3 leva para replicar um objeto depende de vários fatores, incluindo o par de regiões de origem e destino e o tamanho do objeto. Para objetos grandes, a replicação pode levar várias horas. Para ter visibilidade dos tempos de replicação, você pode usar o Controle de Tempo de Replicação do S3 (S3 RTC).
Se o objeto que estiver sendo replicado for grande, aguarde um pouco antes de conferir se ele está sendo exibido no destino. Você também pode conferir o status de replicação do objeto de origem. Se o status de replicação do objeto for
PENDING
, isso indicará que o Amazon S3 não concluiu a replicação. Se o status de replicação do objeto forFAILED
, confira a configuração de replicação definida no bucket de origem.Além disso, para receber informações sobre falhas durante a replicação, você pode configurar a replicação de notificações de eventos do Amazon S3 para receber eventos de falha. Para obter mais informações, consulte Receber eventos de falha de replicação com Notificações de Eventos do Amazon S3.
-
Para conferir o status de replicação de um objeto, chame a operação de API
HeadObject
. A operação de APIHeadObject
retorna o status de replicaçãoPENDING
,COMPLETED
ouFAILED
de um objeto. Em resposta a uma chamada de APIHeadObject
, o status da replicação é retornado no cabeçalhox-amz-replication-status
.nota
Para executar
HeadObject
, você deve ter acesso de leitura ao objeto que está solicitando. Uma solicitaçãoHEAD
tem as mesmas opções de uma solicitaçãoGET
, sem realizar uma operaçãoGET
. Por exemplo, para executar uma solicitaçãoHeadObject
usando a AWS Command Line Interface (AWS CLI), você pode executar o comando a seguir. Substitua os
por suas próprias informações.user input placeholders
aws s3api head-object --bucket
amzn-s3-demo-source-bucket
--keyindex.html
-
Se
HeadObject
retornar os objetos com um status de replicaçãoFAILED
, você poderá usar o Replicação em Lote do S3 para replicar esses objetos com falha. Para ter mais informações, consulte Replicar objetos existentes com o Replicação em Lote. Como alternativa, você pode recarregar os objetos com falha no bucket de origem, o que iniciará a replicação dos novos objetos. -
Na configuração de replicação do bucket de origem, verifique o seguinte:
-
O nome de recurso da Amazon (ARN) do bucket de destino está correto.
-
O prefixo do nome de chave está correto. Por exemplo, se você definiu a configuração para replicar objetos com o prefixo
Tax
, apenas objetos com nomes de chaves comoTax/document1
ouTax/document2
serão replicados. Um objeto com o nome de chavedocument3
não será replicado. -
O status da regra de replicação é
Enabled
.
-
-
Verifique se o versionamento não foi suspenso em nenhum bucket na configuração da replicação. Tanto o bucket de origem quanto o de destino devem ter o versionamento ativado.
-
Se uma regra de replicação for definida como Alterar a propriedade do objeto para o proprietário do bucket de destino, a o perfil do AWS Identity and Access Management (IAM) usado para replicação deverá ter a permissão
s3:ObjectOwnerOverrideToBucketOwner
. Essa permissão é concedida ao recurso (nesse caso, o bucket de destino). Por exemplo, a declaraçãoResource
a seguir mostra como conceder essa permissão no bucket de destino:{ "Effect":"Allow", "Action":[ "s3:ObjectOwnerOverrideToBucketOwner" ], "Resource":"arn:aws:s3:::
amzn-s3-demo-destination-bucket
/*" } -
Se o bucket de destino for de propriedade de outra conta, o proprietário do bucket de destino também deve conceder a permissão
s3:ObjectOwnerOverrideToBucketOwner
ao bucket de destino por meio da política de bucket de destino. Para usar o exemplo de política de bucket a seguir, substitua
por suas próprias informações:user input placeholders
{ "Version": "2012-10-17", "Id": "Policy1644945280205", "Statement": [ { "Sid": "Stmt1644945277847", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789101
:role/s3-replication-role
" }, "Action": [ "s3:ReplicateObject", "s3:ReplicateTags", "s3:ObjectOwnerOverrideToBucketOwner" ], "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket
/*" } ] }nota
Se as configurações de propriedade do objeto de Imposto pelo proprietário do bucket, você não precisará atualizar a configuração para Alterar a propriedade do objeto para o proprietário do bucket de destino na regra de replicação. A alteração de propriedade do objeto ocorrerá por padrão. Para obter mais informações sobre alterações da propriedade da réplica, consulte Alterar o proprietário da réplica.
-
Se você estiver definindo a configuração de replicação em um cenário entre contas, no qual os buckets de origem e de destino pertencem a Contas da AWS diferentes, os buckets de destino não poderão ser configurados como um bucket de Pagamento pelo solicitante. Para ter mais informações, consulte Configuração de buckets de Pagamento pelo solicitante para transferências de armazenamento e uso.
-
Se os objetos de origem de um bucket forem criptografados usando a criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS), a regra de replicação deverá ser configurada para incluir objetos criptografados pelo AWS KMS. Certifique-se de selecionar Replicar objetos criptografados com o AWS KMS nas configurações de Criptografia no console do Amazon S3. Depois, selecione uma chave do AWS KMS para criptografar os objetos de destino.
nota
Se o bucket de destino estiver em uma conta diferente, especifique uma chave gerenciada pelo cliente do AWS KMS que seja de propriedade da conta de destino. Não use a chave gerenciada padrão do Amazon S3 (
aws/s3
). O uso da chave padrão criptografa os objetos com a chave gerenciada do Amazon S3 que pertence à conta de origem, impedindo que o objeto seja compartilhado com outra conta. Como resultado, a conta de destino não conseguirá acessar os objetos no bucket de destino.Para usar uma chave do AWS KMS que pertence à conta de destino para criptografar os objetos de destino, a conta de destino deve conceder as permissões
kms:GenerateDataKey
ekms:Encrypt
ao perfil de replicação na política de chave do KMS. Para usar o exemplo de declaração a seguir na sua política de chave do KMS, substitua
por suas próprias informações:user input placeholders
{ "Sid": "AllowS3ReplicationSourceRoleToUseTheKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789101
:role/s3-replication-role
" }, "Action": ["kms:GenerateDataKey", "kms:Encrypt"], "Resource": "*" }Se você usar um asterisco (
*
) para a declaraçãoResource
na política de chave do AWS KMS, a política concederá permissão para usar a chave do KMS somente para o perfil de replicação. A política não permite que o perfil de replicação eleve suas permissões.Por padrão, a política de chave do KMS concede ao usuário raiz permissões totais para a chave. Essas permissões podem ser delegadas a outros usuários na mesma conta. A menos que haja declarações
Deny
na política de chave do KMS de origem, usar uma política do IAM para conceder permissões ao perfil de replicação para a chave do KMS de origem é suficiente.nota
As políticas de chave do KMS que restringem o acesso a intervalos CIDR específicos, endpoints da nuvem privada virtual (VPC) ou pontos de acesso do S3 podem causar falhas na replicação.
Se as chaves do KMS de origem ou de destino concederem permissões com base no contexto de criptografia, confirme se as chaves de bucket do Amazon S3 estão ativadas para os buckets. Se os buckets tiverem as chaves de bucket do S3 ativadas, o contexto de criptografia deverá ser o recurso no nível de bucket, assim:
"kms:EncryptionContext:arn:aws:arn": [ "arn:aws:s3:::
amzn-s3-demo-source-bucket
" ] "kms:EncryptionContext:arn:aws:arn": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket
" ]Além das permissões concedidas pela política de chave do KMS, a conta de origem deve adicionar as seguintes permissões mínimas à política do IAM do perfil de replicação:
{ "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "
Source-KMS-Key-ARN
" ] }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Encrypt" ], "Resource": [ "Destination-KMS-Key-ARN
" ] }Para obter mais informações sobre como replicar objetos criptografados com o AWS KMS, consulte Replicar objetos criptografados.
-
Se o bucket de destino pertencer a outra Conta da AWS, verifique se o proprietário do bucket tem uma política de bucket no bucket de destino que permita ao proprietário do bucket de origem replicar objetos. Para ver um exemplo, consulte Configuração da replicação de buckets em contas diferentes.
-
Se os objetos ainda não estiverem se replicando depois de você validar as permissões, verifique se há declarações
Deny
explícitas nos seguintes locais:-
Declarações
Deny
nas políticas do bucket de origem ou destino. A replicação falhará se a política de bucket negar o acesso à função de replicação para qualquer uma das seguintes ações:Bucket de origem:
"s3:GetReplicationConfiguration", "s3:ListBucket", "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging"
Buckets de destino:
"s3:ReplicateObject", "s3:ReplicateDelete", "s3:ReplicateTags"
-
Declarações
Deny
ou limites de permissões associados ao perfil do IAM podem fazer com que a replicação falhe. -
Declarações
Deny
nas políticas de controle de serviços (SCPs) do AWS Organizations anexadas às contas de origem ou de destino podem causar falha na replicação.
-
-
Se a réplica do objeto não aparecer no bucket de destino, os seguintes problemas podem ter impedido a replicação:
-
O Amazon S3 não replica um objeto em um bucket de origem que seja uma réplica criada por outra configuração de replicação. Por exemplo, se você definir uma configuração de replicação do bucket A para o bucket B e para o bucket C, o Amazon S3 não replicará réplicas de objetos no bucket B para o bucket C.
-
O proprietário do bucket de origem pode conceder a outras Contas da AWS permissão para carregar objetos. Por padrão, o proprietário do bucket de origem não tem nenhuma permissão para os objetos criados por outras contas. A configuração de replicação vai replicar somente os objetos para os quais o proprietário do bucket de origem tem permissões de acesso. Para evitar esse problema, o proprietário do bucket de origem pode conceder a outras Contas da AWS permissões para criar objetos condicionalmente, exigindo permissões explícitas de acesso nesses objetos. Para visualizar um exemplo de política, consulte Conceder permissões entre contas para fazer upload de objetos garantindo que o proprietário do bucket tenha controle total.
-
-
Vamos supor que, na configuração da replicação, você adicione uma regra para replicar um subconjunto de objetos com uma tag específica. Nesse caso, atribua a chave da tag específica e o valor no momento de criar o objeto para o Amazon S3 replicar o objeto. Se você primeiro criar um objeto e depois adicionar a tag ao objeto existente, o Amazon S3 não replicará o objeto.
-
Use Notificações de Eventos do Amazon S3 para notificar você sobre instâncias quando os objetos não são replicados para a Região da AWS de destino. As Notificações de Eventos do Amazon S3 estão disponíveis no Amazon Simple Queue Service (Amazon SQS), no Amazon Simple Notification Service (Amazon SNS) ou no AWS Lambda. Para ter mais informações, consulte Receber eventos de falha de replicação com Notificações de Eventos do Amazon S3.
Você também pode ver motivos da falha de replicação usando as notificações de eventos do Amazon S3. Para ver a lista de motivos da falha, consulte Motivos de falha de replicação do Amazon S3.
Erros de replicação em lote
Para solucionar problemas de objetos que não são replicados no bucket de destino, verifique os diferentes tipos de permissões para os buckets, o perfil de replicação e o perfil do IAM que são usados para criar o trabalho de Replicação em Lote. Além disso, verifique as configurações de Bloqueio de Acesso Público e as configurações de Propriedade de Objetos do S3 dos buckets.
Consulte mais dicas de solução de problemas para trabalhar com operações em lote em Solução de problemas do Operações em Lote.
Ao usar a replicação em lote, você pode encontrar um destes erros:
-
A geração do manifesto não encontrou chaves que correspondam aos critérios do filtro.
Esse erro ocorre por um dos seguintes motivos:
-
Quando objetos no bucket de destino são armazenados nas classes de armazenamento S3 Glacier Flexible Retrieval ou S3 Glacier Deep Archive.
Para usar o Replicação em Lote nesses objetos, primeiro restaure-os na classe de armazenamento S3 Standard usando uma operação de Restaurar (
S3InitiateRestoreObjectOperation
) em um trabalho do Operações em Lote. Para obter mais informações, consulte Restaurar um objeto arquivado e Restaurar objetos (operações em lote). Depois de restaurar os objetos, você pode replicá-los usando um trabalho de replicação em lote. -
Quando os critérios de filtro fornecidos não corresponderem a nenhum objeto válido no bucket de origem.
Verifique e corrija os critérios do filtro. Por exemplo, na regra do Replicação em Lote, o critério do filtro procura todos os objetos no bucket de origem com o prefixo
Tax/
. Se o nome do prefixo foi inserido de forma incorreta, com uma barra no início e no final/Tax/
em vez de apenas no final, nenhum objeto do S3 foi encontrado. Para resolver o erro, corrija o prefixo, nesse caso, de/Tax/
paraTax/
na regra de replicação.
-
-
O status da operação Batch falhou devido ao motivo: não foi possível gravar o relatório do trabalho em seu bucket de relatórios.
Esse erro ocorrerá se o perfil do IAM usado para o trabalho de operações em lote não conseguir colocar o relatório de conclusão no local especificado quando você criou o trabalho. Para resolver esse erro, verifique se o perfil do IAM tem a permissão
s3:PutObject
para o bucket em que você deseja salvar o relatório de conclusão do Operações em Lote. Recomendamos entregar o relatório em um bucket diferente do bucket de origem.Consulte mais dicas sobre como resolver esse erro em O relatório do trabalho não é entregue quando há um problema com as permissões ou quando o modo de retenção do Bloqueio de Objetos do S3 está habilitado.
-
A operação em lote é concluída com falhas e o total de falhas não é 0.
Esse erro ocorre se houver problemas de permissões insuficientes de objetos com o trabalho de replicação em lote que está sendo executado. Se você estiver usando uma regra de replicação para o trabalho de Replicação em Lote, verifique se o perfil do IAM usado para replicação tem as permissões adequadas para acessar objetos do bucket de origem ou de destino. Você também pode verificar o Relatório de conclusão da replicação em lote para analisar o Motivo de falha da replicação do Amazon S3 específico.
-
O trabalho em lote foi executado com êxito, mas o número de objetos esperados no bucket de destino não é o mesmo.
Esse erro ocorre quando há uma incompatibilidade entre os objetos listados no manifesto fornecido no trabalho de replicação em lote e os filtros que você selecionou ao criar o trabalho. Você também pode receber essa mensagem quando os objetos no bucket de origem não corresponderem a nenhuma regra de replicação e não estiverem incluídos no manifesto gerado.
As falhas de operações em lote ocorrem após a adição de uma nova regra de replicação a uma configuração de replicação existente
As operações em lote tentam realizar a replicação de objetos existente para cada regra na configuração de replicação do bucket de origem. Se houver problemas com qualquer uma das regras de replicação existentes, poderão ocorrer falhas.
O relatório de conclusão do trabalho de operações em lote explica os motivos da falha do trabalho. Para obter uma lista de erros comuns, consulte Motivos de falha da replicação do Amazon S3.