Configuración de permisos y roles de IAM para Lambda@Edge - Amazon CloudFront

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configuración de permisos y roles de IAM para Lambda@Edge

Para configurar Lambda@Edge, debe configurar permisos de IAM específicos y un rol de ejecución de IAM. Lambda @Edge también crea funciones vinculadas a servicios para replicar las funciones de Lambda en las CloudFront regiones y permitir el uso de archivos de registro. CloudWatch CloudFront

Se requieren permisos de IAM para asociar funciones de Lambda @Edge a distribuciones CloudFront

Además de los permisos de IAM que debe utilizarAWS Lambda, el usuario necesita los siguientes permisos de IAM para asociar las funciones de Lambda a las distribuciones: CloudFront

  • lambda:GetFunction

    Permite al usuario obtener información de configuración para la función Lambda y una URL prefirmada para descargar un archivo .zip que contiene la función.

    Para el recurso, especifique el ARN de la versión de la función que desee ejecutar cuando se produzca un CloudFront evento, como se muestra en el siguiente ejemplo:

    arn:aws:lambda:us-east-1:123456789012:function:TestFunction:2

  • lambda:EnableReplication*

    Agrega un permiso a la política de recursos que proporciona al servicio de replicación de Lambda permiso para obtener una configuración y un código de función.

    importante

    Se requiere el asterisco (*) al final del permiso: lambda:EnableReplication*

    Para el recurso, especifique el ARN de la versión de la función que desee ejecutar cuando se produzca un CloudFront evento, como se muestra en el siguiente ejemplo:

    arn:aws:lambda:us-east-1:123456789012:function:TestFunction:2

  • lambda:DisableReplication*

    Añade un permiso a la política de recursos que proporciona al servicio de replicación de Lambda permiso para permitir que la función se elimine.

    importante

    Se requiere el asterisco (*) al final del permiso: lambda:DisableReplication*

    Para el recurso, especifique el ARN de la versión de la función que desee ejecutar cuando se produzca un CloudFront evento, como se muestra en el siguiente ejemplo:

    arn:aws:lambda:us-east-1:123456789012:function:TestFunction:2

  • iam:CreateServiceLinkedRole

    Permite al usuario crear un rol vinculado a un servicio que Lambda @Edge utilice para replicar funciones de Lambda en él. CloudFront Después de que la primera distribución que utilice con Lambda@Edge haya creado este rol, no es necesario que agregue permisos a otras distribuciones que utilice con Lambda@Edge.

  • cloudfront:UpdateDistribution o cloudfront:CreateDistribution

    Use cloudfront:UpdateDistribution para actualizar una distribución o cloudfront:CreateDistribution para crear una distribución.

Para obtener más información, consulte la documentación siguiente:

Rol de ejecución de funciones para las entidades principales del servicio

Debe crear un rol de IAM que puedan asumir las entidades principales del servicio lambda.amazonaws.com y edgelambda.amazonaws.com. Este rol lo asumen las entidades principales del servicio cuando ejecutan la función. Para obtener más información, consulte Creating roles and attaching policies (console) (Crear roles y adjuntar políticas [consola]) en la IAM User Guide (Guía de usuario de IAM).

Agregue esta función en la pestaña Trust Relationship (Relación de confianza) en IAM (no la añada en la pestaña Permissions (Permisos)).

A continuación se muestra un ejemplo de política de confianza de rol:

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

Para obtener información sobre los permisos que debe conceder al rol de ejecución, consulte Administración de permisos mediante un rol de IAM (rol de ejecución) en la Guía del desarrollador de AWS Lambda. Tenga en cuenta lo siguiente:

  • De forma predeterminada, cada vez que un CloudFront evento activa una función Lambda, los datos se escriben en los CloudWatch registros. Si desea utilizar estos registros, la función de ejecución necesita permiso para escribir datos en los CloudWatch registros. Puede usar el valor predefinido AWSLambdaBasicExecutionRole para conceder permiso al rol de ejecución.

    Para obtener más información sobre CloudWatch los registros, consulteRegistros de funciones perimetrales.

  • Si el código de la función de Lambda tiene acceso a otros recursos de AWS, como, por ejemplo, la lectura de un objeto de un bucket de S3, el rol de ejecución necesita permiso para realizar esa operación.

Roles vinculados a servicios para Lambda@Edge

Lambda@Edge utiliza roles vinculados a servicio de AWS Identity and Access Management (IAM). Un rol vinculado a un servicio es un tipo único de rol de IAM que está vinculado directamente a un servicio. Los roles vinculados a servicios están predefinidos por el servicio e incluyen todos los permisos que el servicio requiere para llamar a otros servicios de AWS en su nombre.

Lambda@Edge usa el siguiente rol vinculado al servicio de IAM:

  • AWSServiceRoleForLambdaReplicator Lambda@Edge utiliza este rol para permitir que Lambda@Edge replique funciones en Regiones de AWS.

  • AWSServiceRoleForCloudFrontLogger— CloudFront utiliza esta función para introducir archivos de registro en su CloudWatch cuenta, lo que le ayudará a depurar los errores de validación de Lambda @Edge.

Al añadir por primera vez un activador de Lambda @Edge CloudFront, AWSServiceRoleForLambdaReplicator se crea automáticamente un rol denominado para permitir que Lambda @Edge replique funciones en él. Regiones de AWS Este rol es necesario para utilizar las funciones de Lambda@Edge. El ARN del rol AWSServiceRoleForLambdaReplicator tiene este aspecto:

arn:aws:iam::123456789012:role/aws-service-role/replicator.lambda.amazonaws.com/AWSServiceRoleForLambdaReplicator

La segunda función, denominadaAWSServiceRoleForCloudFrontLogger, se crea automáticamente al añadir la asociación de funciones Lambda @Edge para poder enviar archivos de registro de errores de Lambda @Edge CloudFront a ella. CloudWatch El ARN del rol AWSServiceRoleForCloudFrontLogger tiene este aspecto:

arn:aws:iam::account_number:role/aws-service-role/logger.cloudfront.amazonaws.com/AWSServiceRoleForCloudFrontLogger

Los roles vinculados a servicios simplifican la configuración y el uso de Lambda@Edge porque no será necesario añadir manualmente los permisos necesarios. Lambda@Edge define los permisos de sus roles vinculados a servicios y solo Lambda@Edge puede asumir estos roles. Los permisos definidos incluyen la política de confianza y la política de permisos. La política de permisos no se puede asociar a ninguna otra entidad de IAM.

Debe eliminar todos los recursos de Lambda @Edge asociados CloudFront antes de poder eliminar un rol vinculado a un servicio. Esto ayuda a proteger sus recursos de Lambda@Edge al asegurarse de que no elimina un rol vinculado a un servicio que sigue siendo necesario para obtener acceso a los recursos activos.

Para obtener información acerca de otros servicios que admiten roles vinculados a servicios, consulte Servicios de AWS que funcionan con IAM y busque los servicios que muestren Yes (Sí) en la columna Service-linked roles (Roles vinculados a servicios).

Permisos de roles vinculados a servicios para Lambda@Edge

Lambda@Edge utiliza dos roles vinculados a servicios, denominados AWSServiceRoleForLambdaReplicator y AWSServiceRoleForCloudFrontLogger. En las siguientes secciones se describen los permisos de cada uno de estos roles.

Permisos del rol vinculado a servicio para el replicador de Lambda

Este rol vinculado a servicio permite que Lambda replique las funciones de Lambda@Edge en Regiones de AWS.

El rol vinculado a servicio AWSServiceRoleForLambdaReplicator confía en el siguiente servicio para asumir el rol: replicator.lambda.amazonaws.com

La política de permisos del rol permite que Lambda@Edge realice las siguientes acciones en los recursos especificados:

  • Acción: lambda:CreateFunction en arn:aws:lambda:*:*:function:*

  • Acción: lambda:DeleteFunction en arn:aws:lambda:*:*:function:*

  • Acción: lambda:DisableReplication en arn:aws:lambda:*:*:function:*

  • Acción: iam:PassRole en all AWS resources

  • Acción: cloudfront:ListDistributionsByLambdaFunction en all AWS resources

Permisos de rol vinculados al servicio para el registrador CloudFront

Esta función vinculada CloudFront a un servicio permite insertar archivos de registro en su CloudWatch cuenta para ayudarle a depurar los errores de validación de Lambda @Edge.

El rol vinculado a servicio AWSServiceRoleForCloudFrontLogger confía en el siguiente servicio para asumir el rol: logger.cloudfront.amazonaws.com

La política de permisos del rol permite que Lambda@Edge realice las siguientes acciones en los recursos especificados:

  • Acción: logs:CreateLogGroup en arn:aws:logs:*:*:log-group:/aws/cloudfront/*

  • Acción: logs:CreateLogStream en arn:aws:logs:*:*:log-group:/aws/cloudfront/*

  • Acción: logs:PutLogEvents en arn:aws:logs:*:*:log-group:/aws/cloudfront/*

Debe configurar permisos para permitir que una entidad de IAM (como un usuario, grupo o rol) elimine los roles vinculados a servicios de Lambda@Edge. Para obtener más información, consulte Permisos de roles vinculados a servicios en la Guía del usuario de IAM.

Creación de roles vinculados a servicios para Lambda@Edge

Normalmente no es necesario crear manualmente los roles vinculados a servicios para Lambda@Edge. El servicio crea los roles automáticamente en los siguientes casos:

  • Cuando se crea un desencadenador por primera vez, el servicio crea un rol AWSServiceRoleForLambdaReplicator, si no existe ya, que permite que Lambda replique funciones Lambda@Edge a Regiones de AWS.

    Si elimina el rol vinculado a servicio, el rol se creará de nuevo al añadir un nuevo disparador para Lambda@Edge en una distribución.

  • Cuando actualiza o crea una CloudFront distribución que tiene una asociación Lambda @Edge, el servicio crea un rolAWSServiceRoleForCloudFrontLogger, si el rol aún no existe, que le permite enviar sus archivos de registro CloudFront a. CloudWatch

    Si elimina el rol vinculado al servicio, el rol se volverá a crear cuando actualice o cree una CloudFront distribución que tenga una asociación Lambda @Edge.

Si tiene que crear manualmente estos roles vinculados a servicios, ejecute los siguientes comandos con la AWS CLI:

Para crear el rol de AWSServiceRoleForLambdaReplicator

aws iam create-service-linked-role --aws-service-name replicator.lambda.amazonaws.com

Para crear el rol de AWSServiceRoleForCloudFrontLogger

aws iam create-service-linked-role --aws-service-name logger.cloudfront.amazonaws.com

Edición de roles vinculados a servicios de Lambda@Edge

Lambda@Edge no permite editar los roles vinculados a servicios AWSServiceRoleForLambdaReplicator o AWSServiceRoleForCloudFrontLogger. Una vez que el servicio ha creado un rol vinculado a un servicio, no puede cambiarle el nombre, ya que varias entidades pueden hacer referencia a él. Sin embargo, puede editar la descripción de un rol mediante IAM. Para obtener más información, consulte Editar un rol vinculado a servicios en la Guía del usuario de IAM.

Compatible con los roles vinculados Regiones de AWS a un servicio CloudFront

CloudFront admite el uso de funciones vinculadas a servicios para Lambda @Edge de las siguientes maneras: Regiones de AWS

  • Este de EE. UU. (Norte de Virginia) – us-east-1

  • Este de EE. UU. (Ohio) – us-east-2

  • Oeste de EE. UU. (Norte de California) – us-west-1

  • Oeste de EE. UU. (Oregón) – us-west-2

  • Asia-Pacífico (Bombay) – ap-south-1

  • Asia-Pacífico (Seúl) (ap-northeast-2)

  • Asia Pacífico (Singapur) – ap-southeast-1

  • Asia-Pacífico (Sídney) – ap-southeast-2

  • Asia-Pacífico (Tokio) – ap-northeast-1

  • Europa (Fráncfort) – eu-central-1

  • Europa (Irlanda) – eu-west-1

  • Europa (Londres) – eu-west-2

  • América del Sur (São Paulo) – sa-east-1