Rol de ejecución de AWS Lambda - AWS Lambda

Rol de ejecución de AWS Lambda

El rol de ejecución de una función de AWS Lambda concede permiso a la función para que tenga acceso a los servicios y recursos de AWS. Debe proporcionar este rol al crear una función, y Lambda asume el rol cuando se invoca la función. Puede crear un rol de ejecución para tareas de desarrollo que tenga permiso para enviar registros a Amazon CloudWatch y para cargar datos de rastreo en AWS X-Ray.

Para ver el rol de ejecución de una función

  1. Abra la página Functions (Funciones) en la consola de Lambda.

  2. Elija una función.

  3. Elija Permissions.

  4. El resumen de recursos muestra los servicios y recursos a los que tiene acceso la función. En el ejemplo siguiente se muestran los permisos de CloudWatch Logs que se Lambda añade a una función de ejecución cuando la crea en la consola de Lambda.

    
          Un rol de ejecución en la consola de Lambda.
  5. Elija un servicio en el menú desplegable para ver los permisos relacionados con ese servicio.

Puede añadir o eliminar permisos del rol de ejecución de una función en cualquier momento, o configurar la función para que utilice otro rol. Añada permisos para los servicios a los que llame la función con el SDK de AWS y para los servicios que Lambda utilice para habilitar características opcionales.

Cuando añade permisos a su función, actualice también su código o configuración. Esto obliga a las instancias en ejecución de su función, cuyas credenciales han expirado, a detenerse y ser sustituidas.

Creación de un rol de ejecución en la consola de IAM

De forma predeterminada, Lambda crea un rol de ejecución con permisos mínimos al crear una función en la consola de Lambda. También puede crear un rol de ejecución en la consola de IAM.

Para crear un rol de ejecución en la consola de IAM

  1. Abra la página Roles en la consola de IAM.

  2. Elija Create role (Crear rol).

  3. En Common use cases (Casos de uso comunes), elija Lambda.

  4. Elija Next: Permissions.

  5. En Attach permissions policies (Asociar políticas de permisos), elija las políticas administradas AWSLambdaBasicExecutionRole y AWSXRayDaemonWriteAccess.

  6. Elija Next: Tags (Siguiente: Etiquetas).

  7. Elija Next: Review.

  8. En Role name (Nombre del rol), escriba lambda-role.

  9. Elija Create role (crear rol).

Para obtener instrucciones detalladas, consulte Creación de un rol en la Guía del usuario de IAM.

Administración de roles con la API de IAM

Una función de ejecución es una función de IAM que Lambda puede asumir cuando se invoca una función. Para crear un rol de ejecución con la CLI de AWS, utilice el comando create-role.

$ aws iam create-role --role-name lambda-ex --assume-role-policy-document file://trust-policy.json { "Role": { "Path": "/", "RoleName": "lambda-ex", "RoleId": "AROAQFOXMPL6TZ6ITKWND", "Arn": "arn:aws:iam::123456789012:role/lambda-ex", "CreateDate": "2020-01-17T23:19:12Z", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } } }

El archivo trust-policy.json es un archivo JSON en el directorio actual que define la política de confianza del rol. Esta política de confianza permite a Lambda utilizar los permisos del rol dando al servicio principal lambda.amazonaws.com permiso para llamar a la acción AssumeRole de AWS Security Token Service.

ejemplo trust-policy.json

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

También puede especificar la política de confianza insertada. Los requisitos de las cuotas de escape en la cadena JSON varía según el shell.

$ aws iam create-role --role-name lambda-ex --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}'

Para añadir permisos al rol, use el comando attach-policy-to-role. Empiece añadiendo la política administrada AWSLambdaBasicExecutionRole.

$ aws iam attach-role-policy --role-name lambda-ex --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

Políticas administradas para características de Lambda

Las siguientes políticas administradas proporcionan los permisos necesarios para utilizar las características de Lambda:

  • AWSLambdaBasicExecutionRole: permiso para cargar registros en CloudWatch.

  • AWSLambdaKinesisExecutionRole: permiso para leer eventos de un consumidor o de un flujo de datos de Amazon Kinesis.

  • AWSLambdaDynamoDBExecutionRole: permiso para leer registros de un flujo de Amazon DynamoDB.

  • AWSLambdaSQSQueueExecutionRole: permiso para leer un mensaje de una cola de Amazon Simple Queue Service (Amazon SQS).

  • AWSLambdaVPCAccessExecutionRole: permiso para administrar interfaces de red elásticas para conectar la función a una VPC.

  • AWSXRayDaemonWriteAccess: permiso para cargar los datos de seguimiento en –.

Para algunas características, la consola de Lambda intenta agregar permisos que faltan a su rol de ejecución en una política administrada por el cliente. Estas políticas pueden llegar a ser numerosas. Añada las políticas administradas pertinentes a su rol de ejecución antes de habilitar las funciones para evitar crear políticas adicionales.

Cuando se utiliza un mapeo de origen de eventos para invocar la función, Lambda utiliza el rol de ejecución para leer los datos de los eventos. Por ejemplo, un mapeo de origen de eventos para Amazon Kinesis lee los eventos de un flujo de datos y se los envía a la función por lotes. Es posible utilizar los mapeos de orígenes de eventos con los siguientes servicios:

Servicios cuyos eventos lee Lambda

Además de las políticas administradas, la consola de Lambda proporciona plantillas para crear una política personalizada que tiene los permisos relacionados con otros casos de uso. Cuando crea una función en la consola de Lambda, puede elegir crear un nuevo rol de ejecución con permisos a partir de una o más plantillas. Estas plantillas también se aplican automáticamente cuando se crea una función a partir de un proyecto o cuando se configuran opciones que requieren acceso a otros servicios. Existen plantillas de ejemplo en el repositorio de GitHub de esta guía.