AWS LambdaRol de ejecución de - AWS Lambda

AWS LambdaRol de ejecución de

Un rol de ejecución de una función de Lambda es un rol de AWS Identity and Access Management (IAM) que concede a la función permiso para acceder a 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 Functions page (Página de funciones) en la consola de Lambda.

  2. Elija una función.

  3. Elija Configuración y, a continuación, seleccione Permisos.

  4. En Resource summary (Resumen de recursos), consulte los servicios y recursos a los que puede acceder la función. En el ejemplo siguiente se muestran los permisos de CloudWatch Logs que Lambda añade a un rol 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 consultar 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. Agregue permisos para los servicios a los que llama la función con el SDK de AWS y para los servicios que Lambda utiliza 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.

  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 por AWS AWSLambdaBasicExecutionRole y AWSXRayDaemonWriteAccess.

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

  7. Elija Next: Review.

  8. En Nombre del rol, introduzca lambda-role.

  9. Elija Create role.

Para obtener instrucciones, consulte Creación de un rol para un servicio de AWS (consola) en la Guía del usuario de IAM.

Otorgue privilegios de acceso mínimos a su rol de ejecución de Lambda

Cuando crea por primera vez un rol de IAM para sus funciones de Lambda durante la fase de desarrollo, a veces puede conceder permisos más allá de lo necesario. Antes de publicar la función en el entorno de producción, la práctica recomendada consiste en ajustar la directiva para incluir solo los permisos necesarios. Para obtener más información, consulte Otorgar privilegios mínimos.

Utilice IAM Access Analyzer para ayudar a identificar los permisos necesarios para la política de rol de ejecución de IAM. IAM Access Analyzer revisa sus registros de AWS CloudTrail en el intervalo de fechas especificado y genera una plantilla de política con solo los permisos que la función utilizó durante ese tiempo. Puede utilizar la plantilla para crear una política administrada con permisos detallados y, a continuación, adjuntarla al rol de IAM. De esta forma, solo concede los permisos que el rol necesita para interactuar con los recursos de AWS para su caso de uso específico.

Para obtener más información, consulte Generar políticas basadas en la actividad de acceso en la Guía del usuario de IAM.

Administración de roles con la API de IAM

Para crear un rol de ejecución con AWS Command Line Interface (AWS CLI), utilice el comando create-role.

En el ejemplo siguiente, especifica la política de confianza insertada. Los requisitos para escapar de las comillas en la cadena JSON varían dependiendo de su 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"}]}'

También puede definir la política de confianza para el rol con un archivo JSON. En el siguiente ejemplo, trust-policy.json es un archivo que se encuentra en el directorio actual. Esta política de confianza permite a Lambda utilizar los permisos del rol dando el principal permiso de lambda.amazonaws.com del servicio para llamar a la acción AWS Security Token Service AssumeRole.

ejemplo trust-policy.json

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

Debería ver los siguientes datos de salida:

{ "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" } ] } } }

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

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

Políticas administradas por AWS para características de Lambda

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

  • AWSLambdaBasicExecutionRole: permiso para cargar registros en CloudWatch.

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

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

  • AWSLambdaMQExecutionRole: permiso para leer registros de un agente de Amazon MQ.

  • AWSLambDamskExecutionRole: permiso para leer registros de un clúster de Amazon Managed Streaming for Apache Kafka (Amazon MSK)

  • 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 nube virtual privada (VPC).

  • AWSXRayDaemonWriteAccess: permiso para cargar los datos de seguimiento en X-Ray.

  • CloudWatchLambdaInsightsExecutionRolePolicy: permiso para escribir métricas de tiempo de ejecución para información de CloudWatch Lambda.

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. Para evitar la creación de políticas adicionales, agregue las políticas administradas por AWS a su rol de ejecución antes de habilitar las características.

Cuando se utiliza un mapeo de fuente 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 fuente de eventos para 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:

Además de las políticas administradas por AWS, la consola de Lambda proporciona plantillas para la creación de una política personalizada con permisos para casos de uso adicionales. 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.