Por que não consigo gerar um relatório do Amazon S3 Inventory?

6 minuto de leitura
0

Configurei um relatório do Amazon Simple Storage Service (Amazon S3) Inventory, mas ele não foi entregue e recebi um erro de “Acesso negado”.

Breve descrição

Se você receber a seguinte mensagem de erro:

“Acesso negado A exportação do Inventory para 19/02/2021 falhou porque o S3 não tem acesso ao bucket de destino ou à chave do KMS. Peça ao proprietário do bucket de destino ou da chave do KMS que conceda o acesso necessário e tente novamente.”

Para gerar um relatório do Amazon S3 Inventory e evitar a mensagem de erro anterior, você deve atender aos seguintes requisitos:

  • Permita que o bucket de origem faça o upload do relatório do Amazon S3 Inventory para o bucket de destino.
  • Mantenha o bucket de destino e o bucket de origem na mesma região AWS em que você configurou o Amazon S3 Inventory.
  • Conceda ao Amazon S3 acesso à chave do AWS Key Management Service (AWS KMS) usada para criptografar o arquivo do relatório do Inventory.

Observação: O Amazon S3 pode levar até 48 horas para entregar o primeiro relatório do Inventory.

Resolução

Permita que o bucket de origem faça o upload do relatório do Amazon S3 Inventory para o bucket de destino

Confirme se sua política de bucket permite que o bucket de origem seja carregado para o bucket de destino.

Exemplo de política de bucket que inclui a ação PutObject:

{
    "Version": "2012-10-17",
    "Id": "S3PolicyId",
    "Statement": [
        {
            "Sid": "InventoryAndAnalyticsExamplePolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::destinationbucket/*"
            ],
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3:::sourcebucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "123456789012",
                    "s3:x-amz-acl": "bucket-owner-full-control"
                }
            }
        }
    ]
}

Exclua s3.amazonaws.com de cada instrução Deny que possa afetar uma ação PutObject. Uma declaração Deny explícita tem precedência sobre as instruções Allow.

O exemplo de política de bucket a seguir nega acesso a s3.amazonaws.com e só permite acesso a um intervalo de endereços IP especificado:

{
    "Version": "2012-10-17",
    "Id": "S3PolicyId",
    "Statement": [
        {
            "Sid": "IPAllow",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::destinationbucket",
                "arn:aws:s3:::destinationbucket/*"
            ],
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "54.240.143.0/24"
                }
            }
        }
    ]
}

A seguir está a versão atualizada da política de bucket anterior que permite o acesso ao s3.amazonaws.com:

{
    "Version": "2012-10-17",
    "Id": "S3PolicyId",
    "Statement": [
        {
            "Sid": "IPAllow",
            "Action": "s3:*",
            "Effect": "Deny",
            "Resource": [
                "arn:aws:s3:::destinationbucket",
                "arn:aws:s3:::destinationbucket/*"
            ],
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "54.240.143.0/24"
                },
                "ArnNotLike": {
                    "aws:SourceArn": "arn:aws:s3:::sourcebucket"
                }
            },
            "Principal": "*"
        },
        {
            "Sid": "InventoryAndAnalyticsExamplePolicy",
            "Action": [
                "s3:PutObject"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::destinationbucket/*"
            ],
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3:::sourcebucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "123456789012",
                    "s3:x-amz-acl": "bucket-owner-full-control"
                }
            },
            "Principal": {
                "AWS": [
                    "s3.amazonaws.com"
                ]
            }
        }
    ]
}

Confirme se seu bucket de destino está na mesma região do bucket de origem

Abra o console do Amazon S3. Navegue até sua lista de desejos e verifique a coluna Regiões para determinar se o bucket de destino e o bucket de origem estão na mesma região.

Se seus buckets de origem e destino estiverem em regiões diferentes, crie ou escolha um novo bucket.

Observação: Até você transferir objetos, os objetos que pertencem ao bucket permanecem na região em que você criou o bucket. Para obter mais informações, consulte Visão geral dos buckets.

Conceda acesso à chave do AWS KMS usada para criptografar o arquivo do relatório do Inventory

Se você criptografou seu bucket do Amazon S3 com uma chave do AWS KMS, conceda ao Amazon S3 acesso à sua chave do AWS KMS.

Conclua as etapas a seguir:

  1. Abra o console do AWS KMS.
    Observação: Use a conta da AWS que possui a chave do AWS KMS para fazer login.

  2. No painel de navegação, selecione Chaves gerenciadas pelo cliente.

  3. Em Chaves gerenciadas pelo cliente, selecione a chave do AWS KMS que você usa para criptografar o arquivo do relatório do Inventory.

  4. Em Política de chaves, escolha Alternar para exibição de política.

  5. Escolha Editar.

  6. Em Editar política de chaves, adicione a seguinte política de chaves à política de chaves existente:

    {
        "Sid": "Allow Amazon S3 use of the KMS key",
        "Effect": "Allow",
        "Principal": {
            "Service": "s3.amazonaws.com"
        },
        "Action": [
            "kms:GenerateDataKey"
        ],
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "aws:SourceAccount": "source-account-id"
            },
            "ArnLike": {
                "aws:SourceARN": "arn:aws:s3:::source-bucket-name"
            }
        }
    }
  7. Escolha Salvar alterações.

Observação: Verifique a coluna Última exportação, em Configurações do Inventory, no console do Amazon S3. Uma coluna vazia de Última exportação pode mostrar que o Amazon S3 não entregou o relatório do Inventory. Se o Amazon S3 entregou o relatório do Inventory, será possível encontrar o relatório do Inventory no caminho especificado no bucket de destino.

Revise seus logs de acesso ao servidor e o histórico do CloudTrail

Verifique seus logs de acesso ao servidor para determinar se foram feitas alterações em suas políticas de bucket que interromperam a entrega. Para obter exemplos de formatos de log, consulte Formato de log de acesso ao servidor do Amazon S3.

Veja a seguir um exemplo de uma entrada de log que mostra que uma alteração foi feita em sua política de bucket:

REST.PUT.BUCKETPOLICY

Também é possível pesquisar a ação de API PutBucketPolicy no seu histórico de eventos do AWS CloudTrail. Se a ação PutBucketPolicy foi executada há mais de 90 dias, você deverá consultar os logs do CloudTrail no Amazon S3. Para obter informações, consulte as informações do Amazon S3 no CloudTrail, no site do AWS Docs GitHub.

Verifique o filtro de prefixo para ver o escopo do Inventory

Se você configurou um filtro de prefixo e seu relatório do Inventory não for entregue após 48 horas, verifique sua configuração de prefixo. Certifique-se de que o filtro de prefixo corresponda a um prefixo existente no bucket que está inventariado. Remova espaços em branco, erros de digitação e barras iniciais.

Informações relacionadas

Habilitando o registro de eventos do CloudTrail para buckets e objetos do S3

Gerenciando permissões para relatórios do S3 Inventory, do S3 Analytics e do S3 Inventory

AWS OFICIAL
AWS OFICIALAtualizada há 4 meses