¿Por qué recibo un error de acceso denegado para ListObjectsV2 cuando ejecuto el comando de sincronización en mi bucket de Amazon S3?

Última actualización: 26-03-2021

Estoy ejecutando el comando aws s3 sync para copiar objetos desde o hacia un bucket de Amazon Simple Storage Service (Amazon S3). Sin embargo, recibo un error de acceso denegado cuando hago una llamada a la operación ListObjectsV2. ¿Cómo se soluciona esto?

Descripción corta

Cuando ejecuta el comando aws s3 sync, Amazon S3 emite las siguientes llamadas a la API: ListObjectsV2, CopyObject, GetObject y PutObject.

De manera específica, ocurre lo siguiente:

1.    Amazon S3 enumera los objetos de la fuente y el destino para comprobar si el objeto existe.

2.    Amazon S3 realiza a continuación las siguientes llamadas a la API:

Llamada a CopyObject para una operación de bucket a bucket
GetObject para una operación de bucket a local
PutObject para una operación de local a bucket

Nota: Este artículo asume que el usuario o rol de AWS Identity Access Management (IAM) tiene permisos para realizar las llamadas a GetObject y PutObject. Este artículo aborda cómo resolver el error de acceso denegado que causan los permisos ListBuckets incorrectos.

Resolución

Verifique que cuenta con permiso para s3:ListBucket en los buckets de Amazon S3 desde o hacia el que realiza la copia de objetos. Debe contar con este permiso para realizar acciones ListObjectsV2.

Nota: s3:ListBucket es el nombre del permiso que permite a un usuario enumerar los objetos en un bucket. ListObjectsV2 es el nombre de la llamada a la API que enumera los objetos de un bucket.

Si su usuario o rol de IAM pertenece a otra cuenta de AWS, compruebe si sus políticas de IAM y bucket permiten realizar la acción s3:ListBucket. Debe tener permiso para s3:ListBucket tanto en su política de IAM como en la del bucket.

Si su usuario o rol pertenece a la cuenta del propietario del bucket, entonces no necesita ambas políticas de IAM y el bucket para permitir s3:ListBucket. Solo necesita uno de ellos para permitir la acción.

Importante: Si la política de IAM o el bucket ya permiten la acción s3:ListBucket, compruebe la otra política en busca de cualquier declaración que deniegue de forma explícita la acción. Una declaración de denegación explícita anula una declaración de permiso.

A continuación, se muestra un ejemplo de política de IAM que concede acceso a s3:ListBucket:

{
  "Version": "2012-10-17",
  "Statement": [{
    "Sid": "Stmt1546506260896",
    "Action": "s3:ListBucket",
    "Effect": "Allow",
    "Resource": "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET"
  }]
}

El siguiente es un ejemplo de política de bucket que concede al usuario arn:aws:iam::123456789012:user/testuser acceso a s3:ListBucket:

{
  "Id": "Policy1546414473940",
  "Version": "2012-10-17",
  "Statement": [{
    "Sid": "Stmt1546414471931",
    "Action": "s3:ListBucket",
    "Effect": "Allow",
    "Resource": "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET",
    "Principal": {
      "AWS": [
        "arn:aws:iam::123456789012:user/testuser"
      ]
    }
  }]
}

¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?