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

4 minutos de lectura
0

Quiero que mi función de AWS Lambda pueda acceder a mi bucket de Amazon Simple Storage Service (Amazon S3).

Descripción breve

Para que su función de Lambda acceda 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 de Lambda que también otorgue acceso al bucket de S3.

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

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

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

Solución

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

1.    Siga los pasos que se indican en 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.    La política de confianza debe permitir que Lambda asuma el rol de ejecución al añadir lambda.amazonaws.com como servicio de confianza. Seleccione la pestaña Truste relationships (Relaciones de confianza), después, elija Edit trust policy (Editar política de confianza) y sustituya la política por lo siguiente:

{
  "Version": "2012-10-17",
  "Statement": [
    {
     "Effect": "Allow",
     "Principal": {
     "Service": "lambda.amazonaws.com"
    },
  "Action": "sts:AssumeRole"
  }
 ]
}
  1. Elija Update policy (Actualizar política).

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

6.    Elija la pestaña JSON.

7.    Introduzca una política de IAM basada en recursos que otorgue acceso al bucket de S3. Para obtener más información, consulte Uso de políticas basadas en recursos para Lambda.

El siguiente ejemplo de política de IAM concede acceso a un bucket específico de Amazon S3 con permisos Get. Para acceder a los objetos del bucket de Amazon S3, asegúrese de especificar la ruta correcta o utilice un carácter comodín (“*”). Para obtener más información, consulte Redacción de políticas de IAM: cómo conceder acceso a un bucket de Amazon S3.

Importante: Sustituya «arn:aws:s3:::EXAMPLE-BUCKET» por el nombre de recurso de Amazon (ARN) de sus buckets de S3.

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

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

7.En Name (Nombre), introduzca un nombre para su política.

8.SeleccioneCreate policy (Crear política).

Configurar el rol de IAM como el rol de ejecución de funciones de Lambda

1.    Abra la consola de Lambda.

2.    Elija su función de Lambda.

3.    En Execution role (Rol de ejecución), como Rol existente, seleccione el rol de IAM que ha creado.

4.    Seleccione Save (Guardar).

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

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

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

En el siguiente ejemplo de política de bucket de IAM S3, un bucket de S3 recibe acceso entre cuentas a un rol de ejecución de Lambda.

Importante: Sustituya «arn:aws:s3:::EXAMPLE-BUCKET/*» por el ARN de sus buckets de S3. Sustituya «arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012» por el ARN de sus roles de ejecución de Lambda.

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

Información relacionada

Generador de políticas de AWS

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año