

# Definición de permisos de funciones de Lambda con un rol de ejecución
<a name="lambda-intro-execution-role"></a>

Un rol de ejecución de una función de Lambda es un rol de (IAM) AWS Identity and Access Management que concede a la función permiso para acceder a los Servicios de AWS y los recursos. Por ejemplo, puede crear un rol de ejecución que tenga permiso para enviar registros a Amazon CloudWatch y cargar datos de seguimiento en AWS X-Ray. Esta página proporciona información sobre cómo crear, ver y administrar el rol de ejecución de una función de Lambda.

Lambda asume automáticamente su rol de ejecución cuando invoca su función. Debería evitar llamar de forma manual a `sts:AssumeRole` para que asuma el rol de ejecución en el código de función. Si su caso de uso requiere que el rol se asuma por sí mismo, debe incluir al rol como una entidad principal de confianza en la política de confianza de su rol. Para obtener más información acerca de cómo modificar una política de confianza de roles, consulte [Modificación de una política de confianza de rol (consola)](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-managingrole_edit-trust-policy) en la Guía del usuario de IAM.

Para que Lambda asuma correctamente su rol de ejecución, la [política de confianza](#permissions-executionrole-api) del rol debe especificar la entidad principal de servicio de Lambda (`lambda.amazonaws.com`) como un servicio de confianza.

**Topics**
+ [Creación de un rol de ejecución en la consola de IAM](#permissions-executionrole-console)
+ [Creación y administración de roles con la AWS CLI](#permissions-executionrole-api)
+ [Otorgue privilegios de acceso mínimos a su rol de ejecución de Lambda](#permissions-executionrole-least-privilege)
+ [Visualización y actualización de permisos en el rol de ejecución](permissions-executionrole-update.md)
+ [Trabajo con políticas administradas de AWS en el rol de ejecución](permissions-managed-policies.md)
+ [Uso del ARN de la función de origen para controlar el comportamiento de acceso a la función](permissions-source-function-arn.md)

## Creación de un rol de ejecución en la consola de IAM
<a name="permissions-executionrole-console"></a>

De forma predeterminada, Lambda crea un rol de ejecución con permisos mínimos al [crear una función en la consola de Lambda](getting-started.md#getting-started-create-function). En concreto, este rol de ejecución incluye la [política administrada `AWSLambdaBasicExecutionRole`](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaBasicExecutionRole.html), que otorga a su función permisos básicos para registrar eventos de registro en Registros de Amazon CloudWatch. Puede seleccionar **Crear rol predeterminado** en la sección **Permisos**.

Puede elegir un rol existente seleccionando **Usar otro rol** en la sección **Permisos**. Si su función de Lambda necesita permisos adicionales para realizar tareas como actualizar entradas en una base de datos Amazon DynamoDB en respuesta a eventos, puede crear un rol de ejecución personalizado con los permisos necesarios. Para hacerlo, seleccione **Usar otro rol** en la sección **Permisos** y se abrirá un panel donde puede personalizar los permisos.

**Para configurar un rol de ejecución desde la consola**

1. Introduzca un **nombre de rol** en la sección Detalles del rol.

1. En la sección **Política**, seleccione **Usar política existente**.

1. Seleccione las políticas administradas de AWS que desee adjuntar a su rol. Por ejemplo, si la función necesita acceder a DynamoDB, seleccione la política administrada **AWSLambdaDynamoDBExecutionRole**.

1. Elija **Crear rol**.

Como alternativa, cuando [crea una función en la consola de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html#getting-started-create-function), puede adjuntar a la función cualquier rol de ejecución que haya creado previamente. Si desea adjuntar un nuevo rol de ejecución a una función existente, siga los pasos que se indican en [Actualizar el rol de ejecución de una función](permissions-executionrole-update.md).

## Creación y administración de roles con la AWS CLI
<a name="permissions-executionrole-api"></a>

Para crear un rol de ejecución con AWS Command Line Interface (AWS CLI), utilice el comando **create-role**. Al usar este comando, puede especificar las políticas de confianza en línea. La política de confianza de un rol otorga a la entidad principal especificada permiso para asumir el rol. En el siguiente ejemplo, usted concede a la entidad principal del servicio Lambda el permiso para que asuma su rol. Tenga en cuenta que los requisitos para estar por fuera de las comillas en la cadena JSON pueden variar según 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 aparte. En el siguiente ejemplo, `trust-policy.json` es un archivo que se encuentra en el directorio actual.

**Example 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
```

Para agregar permisos al rol, use el comando **attach-policy-to-role**. Los comandos siguientes agregan la política administrada `AWSLambdaBasicExecutionRole` al rol de ejecución `lambda-ex`.

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

Después de crear su rol de ejecución, adjúntelo a su función. Cuando [crea una función en la consola de Lambda](getting-started.md#getting-started-create-function), puede adjuntar a la función cualquier rol de ejecución que haya creado previamente. Si desea adjuntar un nuevo rol de ejecución a una función existente, siga los pasos que se indican en [Actualizar el rol de ejecución de una función](permissions-executionrole-update.md#update-execution-role).

## Otorgue privilegios de acceso mínimos a su rol de ejecución de Lambda
<a name="permissions-executionrole-least-privilege"></a>

Cuando crea por primera vez un rol de IAM para su función 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 política para incluir solo los permisos necesarios. Para obtener más información, consulte [Aplicar permisos de privilegio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) en la *Guía del usuario de IAM*.

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_generate-policy.html) en la *Guía del usuario de IAM*.