¿Cómo permito que el rol de ejecución de Lambda acceda a mi bucket de Amazon S3?

Última actualización: 20 de julio de 2021

Quiero que mi función de AWS Lambda pueda acceder a mi bucket de Amazon Simple Storage Service (Amazon S3). ¿Cómo puedo hacer esto?

Descripción corta

Para dar a la función Lambda acceso a un bucket de Amazon S3 en la misma cuenta de AWS, haga lo siguiente:

1.    Cree un rol de AWS Identity and Access Management (IAM) para la función Lambda que también conceda acceso al bucket de S3.

2.    Configure el rol de IAM como el rol de ejecución de la función Lambda.

3.    Verifique que la política del bucket de S3 no deniegue explícitamente el acceso a la función Lambda o a su rol de ejecución.

Importante: Si su bucket de S3 y el rol de IAM de la función están en diferentes cuentas, también debe conceder los permisos necesarios en la política de bucket de S3. Para obtener más información, consulte ¿Cómo puedo proporcionar el acceso entre cuentas a los objetos que se encuentran en los buckets de Amazon S3?

Resolución

Cree un rol de IAM para la función Lambda que también conceda acceso al bucket de S3

1.    Siga los pasos de Creación de un rol de ejecución en la consola de IAM.

2.    En la lista de roles de IAM, elija el rol que acaba de crear.

3.    En la pestaña Permissions (Permisos), elija Add inline policy (Agregar política en línea).

4.    Elija la pestaña JSON.

5.    Ingrese una política de IAM basada en recursos que conceda acceso a su bucket de S3. Para obtener más información, consulte Uso de políticas basadas en recursos para AWS Lambda.

Ejemplo de política de IAM que concede acceso a un bucket de S3 específico

Importante: Sustituya “arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*” por el nombre de recurso de Amazon (ARN) de su bucket de S3.

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

6.    Elija Review Policy (Revisar política).

7.    En Name (Nombre), ingrese un nombre para la política.

8.    Elija Create policy (Crear política).

Configure el rol de IAM como el rol de ejecución de la función Lambda

1.    Abra la consola de Lambda.

2.    Elija su función Lambda.

3.    En Execution role (Rol de ejecución), en Existing role (Rol existente), seleccione el rol de IAM que creó.

4.    Elija Save (Guardar).

Verificar que la política del bucket de S3 no deniegue explícitamente el acceso a la función Lambda o a su rol de ejecución

Para revisar o editar la política de su bucket de S3, siga las instrucciones de Agregar una política de bucket mediante la consola de Amazon S3.

Importante: Si su bucket de S3 y el rol de IAM de la función están en diferentes cuentas, también debe conceder explícitamente los permisos necesarios en la política de bucket de S3. Para obtener más información, consulte ¿Cómo puedo proporcionar el acceso entre cuentas a los objetos que se encuentran en los buckets de Amazon S3?

Ejemplo de política de IAM para bucket de S3 que concede a un rol de ejecución de Lambda acceso entre cuentas a un bucket de S3

Importante: Sustituya “arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*” por el ARN de su bucket de S3. Sustituya “arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012” por el ARN de su rol de ejecución de Lambda.

{
  "Id": "ExamplePolicy",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*"
      ],
      "Principal": {
        "AWS": [
          "arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012"
        ]
      }
    }
  ]
}

¿Le resultó útil este artículo?


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