¿Por qué no puedo generar un informe de Amazon S3 Inventory?

6 minutos de lectura
0

He configurado un informe de inventario de Amazon Simple Storage Service (Amazon S3), pero no se ha entregado y he recibido el error «Acceso denegado».

Descripción corta

Si recibe el siguiente mensaje de error:

«Acceso denegado. La exportación de inventario del 19 de febrero de 2021 falló porque S3 no tiene acceso al bucket de destino ni a la clave de KMS. Pídele al propietario del bucket de destino o la clave de KMS que le conceda el acceso necesario y vuelve a intentarlo».

Para generar un informe de Amazon S3 Inventory y evitar el mensaje de error anterior, debe cumplir los siguientes requisitos:

  • Permita que el bucket de origen cargue el informe de Amazon S3 Inventory al bucket de destino.
  • Mantenga el bucket de destino y el bucket de origen en la misma región de AWS en la que configuró Amazon S3 Inventory.
  • Conceda a Amazon S3 acceso a la clave de AWS Key Management Service (AWS KMS) que se usa para cifrar el archivo del informe de inventario.

Nota: Amazon S3 puede tardar hasta 48 horas en entregar el primer informe de inventario.

Resolución

Permitir que el bucket de origen cargue el informe de Amazon S3 Inventory al bucket de destino

Confirme que la política de bucket permite que el bucket de origen se cargue en el bucket de destino.

Ejemplo de política de bucket que incluye la acción 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"
                }
            }
        }
    ]
}

Excluya s3.amazonaws.com de todas las instrucciones Deny que puedan afectar a una acción PutObject. Una instrucción Deny explícita tiene prioridad sobre las instrucciones Allow

El siguiente ejemplo de política de bucket deniega el acceso a s3.amazonaws.com y solo permite el acceso a un rango de direcciones IP específico:

{
    "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"
                }
            }
        }
    ]
}

La siguiente es la versión actualizada de la política de buckets anterior que permite el acceso a 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"
                ]
            }
        }
    ]
}

Confirmar que el bucket de destino esté en la misma región que el bucket de origen

Abra la consola de Amazon S3. Vaya a la lista de buckets y consulte la columna Regiones para determinar si el bucket de destino y el bucket de origen se encuentran en la misma región. 

Si el bucket de origen y destino se encuentran en regiones diferentes, cree o elija un bucket nuevo. 

Nota: Hasta que transfiera objetos, los objetos que pertenecen al bucket permanecerán en la región en la que lo creó. Para obtener más información, consulte Descripción general de los buckets.

Concesión de acceso a la clave de AWS KMS que se usa para cifrar el archivo de informe de inventario

Si cifró el bucket de Amazon S3 con una clave de AWS KMS, conceda a Amazon S3 acceso a su clave de AWS KMS.

Siga estos pasos:

  1. Abra la consola de AWS KMS.
    Nota: Use la cuenta de AWS que posee la clave de AWS KMS para iniciar sesión.

  2. En el panel de navegación, seleccione Claves administradas por el cliente.

  3. En Claves administradas por el cliente, seleccione la clave de AWS KMS que utiliza para cifrar el archivo de informe de inventario.

  4. En Política de claves, seleccione Cambiar a la vista de políticas.

  5. Seleccione Editar.

  6. En Editar política de claves, añada la siguiente política de claves a la política de claves 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. Seleccione Guardar cambios.

Nota: Consulte la columna **Última exportación ** en Configuraciones de inventario en la consola de Amazon S3. Una columna Última exportación vacía puede indicar que Amazon S3 no entregó el informe de inventario. Si Amazon S3 entregó el informe de inventario, puede encontrarlo en la ruta especificada del bucket de destino.

Revisión de los registros de acceso al servidor y el historial de CloudTrail

Consulte los registros de acceso al servidor para determinar si se han realizado cambios en las políticas de buckets que han impedido la entrega. Para ver ejemplos de formatos de registro, consulte r Formato de registro de acceso al servidor Amazon S3.

El siguiente es un ejemplo de una entrada de registro que muestra que se ha realizado un cambio en la política de buckets:

REST.PUT.BUCKETPOLICY

También puede buscar la acción de la API PutBucketPolicy en su historial de eventos de AWS CloudTrail. Si la acción PutBucketPolicy se realizó hace más de 90 días, debe consultar los registros de CloudTrail en Amazon S3. Para obtener más información, consulte la información sobre Amazon S3 en CloudTrail en el sitio web de AWS Docs en GitHub.

Comprobación del filtro de prefijos para el ámbito del inventario

Si ha configurado un filtro de prefijos y su informe de inventario no se entrega transcurridas 48 horas, compruebe la configuración de prefijos. Asegúrese de que el filtro de prefijos coincida con un prefijo existente en el bucket que está inventariado. Elimine los espacios en blanco, los errores tipográficos y las barras diagonales.

Información relacionada

Habilitación del registro de eventos de CloudTrail para buckets y objetos de S3

Administración de permisos para inventario de S3, análisis de S3 e informes de inventario de S3

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 5 meses