¿Por qué aparece el error Acceso denegado para ListObjectsV2 cuando ejecuto el comando sync en el bucket de Amazon S3?

3 minutos de lectura
0

Estoy ejecutando el comando sync de AWS S3 para copiar objetos a un bucket de Amazon Simple Storage Service (Amazon S3) o desde ese bucket. Pero aparece un error de acceso denegado cuando hago la llamada a la API ListObjectSv2.

Breve descripción

Cuando se ejecuta el comando sync, Amazon S3 emite la llamada a la API ListObjectsV2 para comprobar si el objeto existe en el bucket de origen o de destino. Si el objeto no existe en ninguno de los buckets, Amazon S3 realiza las siguientes llamadas a la API:

  • Llamada 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

Resolución

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Troubleshoot AWS CLI errors. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.

Configuración de la política de IAM

Nota: Esta resolución asume que el usuario o rol de AWS Identity Access Management (IAM) ya tiene permisos para realizar las acciones GetObject y PutObject. Esta resolución explica cómo resolver el error de acceso denegado causado por permisos inadecuados de ListBucket o por el uso de una sintaxis incorrecta del comando sync con Requester Pays.

Compruebe que cuenta con el permiso s3:ListBucket en los buckets de Amazon S3 en los que copiará objetos o desde los que copiará objetos. Debe tener este permiso para realizar acciones de llamada a la API ListObjectsV2.

Si su usuario o rol de IAM pertenecen a otra cuenta de AWS, compruebe si sus políticas de IAM y bucket permiten la acción s3:ListBucket. Debe tener permiso para la acción 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, no necesita tanto las políticas de IAM como las del bucket para permitir la acción s3:ListBucket. Solo necesita una de las políticas para permitir la acción s3:ListBucket.

Importante: Si la política de IAM o del bucket ya permiten la acción s3:ListBucket, compruebe si la otra política contiene declaraciones de denegación explícita de la acción. Una declaración de denegación explícita anula una declaración de permiso.

El siguiente ejemplo de política de IAM concede el permiso s3:ListBucket:

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

El siguiente ejemplo de política de bucket concede al usuario arn:aws:iam::123456789012:user/testuser permisos para la acción 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"  
      ]  
    }  
  }]  
}

Utilización del comando sync con Pago por solicitante

Si el bucket pertenece a otra cuenta y tiene activado el pago por solicitante, asegúrese de que la política del bucket y la política de IAM conceden permisos ListObjectsV2. Si los permisos ListObjectsV2 se conceden correctamente, compruebe la sintaxis del comando sync. Si no incluye la opción --request-payer requester al ejecutar el comando sync, aparecerá un error de acceso denegado.

Por ejemplo, ejecute el siguiente comando sync, pero sustituya requester-pays-bucket por el nombre de su bucket:

aws s3 sync ./ s3://requester-pays-bucket/ --request-payer requester

Información relacionada

Ejemplo 2: propietario del bucket que concede permisos de bucket entre cuentas

Políticas basadas en identidad para Amazon S3

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 3 meses