¿Por qué recibo un error de acceso denegado cuando intento acceder a Amazon S3 mediante un AWS SDK?

3 minutos de lectura
0

Puedo acceder a mis recursos de Amazon Simple Storage Service (Amazon S3) cuando utilizo la interfaz de la línea de comandos de AWS (AWS CLI). Sin embargo, aparece un error de acceso denegado cuando utilizo un AWS SDK. ¿Cómo puedo solucionar este problema?

Resolución

Nota: Si recibe errores al ejecutar los comandos de la AWS CLI, asegúrese de utilizar la versión más reciente de la AWS CLI.

Verificación de la AWS CLI y las credenciales del AWS SDK

Primero, compruebe que la AWS CLI y el AWS SDK que está utilizando estén configurados con las mismas credenciales. Para ello, siga estos pasos:

Para configurar las credenciales en la AWS CLI, ejecute este comando:

aws iam list-access-keys

Si utiliza un rol de AWS Identity and Access Management (IAM) asociado a la AWS CLI, ejecute este comando para obtener el rol:

aws sts get-caller-identity

Para configurar las credenciales en el AWS SDK que está utilizando, ejecute una llamada GetCallerIdentity con su cliente de AWS Security Token Service (AWS STS). Por ejemplo, si está usando el AWS SDK para Python (Boto3), ejecute get_caller_identity.

Si la AWS CLI y el AWS SDK usan credenciales diferentes, utilice el AWS SDK con las credenciales almacenadas en la AWS CLI.

Solucionar problemas de solicitudes de la AWS CLI y el AWS SDK a Amazon S3

Si las credenciales utilizadas por la AWS CLI y el AWS SDK son las mismas, continúe con la solución de problemas haciendo las siguientes preguntas:

  • ¿Las solicitudes de la CLI y el SDK a S3 provienen del mismo origen? Es decir, compruebe si las solicitudes provienen de la misma instancia de Amazon Elastic Compute Cloud (Amazon EC2).
  • Si las solicitudes provienen del mismo origen, ¿utiliza el SDK las credenciales deseadas? Por ejemplo, si usa el AWS SDK para Python (Boto3), el SDK le permite configurar las credenciales mediante varios métodos. Esto significa que Boto3 busca las credenciales en varias ubicaciones en un orden específico. Si se especifican credenciales incorrectas desde el principio, se utilizan estas credenciales. Para obtener más información sobre el orden que sigue Boto3 al buscar en credenciales, consulte Credentials en el sitio web del SDK de Boto3.

Comprobar que los puntos de conexión de VPC permiten las solicitudes a S3

Si las solicitudes se envían desde diferentes orígenes, compruebe si el origen que utiliza el SDK envía solicitudes a través de un punto de conexión de VPC. A continuación, compruebe que el punto de conexión de VPC permita la solicitud que intenta enviar a Amazon S3.

La política de punto de conexión de VPC de este ejemplo permite los permisos de descarga y carga para DOC-EXAMPLE-BUCKET. Si utiliza este punto de conexión de VPC, se le denegará el acceso a cualquier otro bucket.

{
  "Statement": [
    {
      "Sid": "Access-to-specific-bucket-only",
      "Principal": "*",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
      ]
    }
  ]
}

Si no encuentra ningún problema en sus credenciales o en el origen, revise algunos de los motivos por los que S3 podría devolver un error de acceso denegado. Para obtener más información, consulte ¿Cómo soluciono los errores 403 Access Denied (Acceso denegado) de Amazon S3?


Información relacionada

Identity and access management en Amazon S3

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años