Configuration des autorisations et des rôles IAM pour Lambda @Edge - Amazon CloudFront

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration des autorisations et des rôles IAM pour Lambda @Edge

Pour configurer Lambda @Edge, vous devez disposer des autorisations et rôles IAM suivants pour Lambda :

Autorisations IAM requises pour associer les fonctions Lambda @Edge aux distributions CloudFront

Outre les autorisations IAM dont vous avez besoin pour Lambda, vous avez besoin des autorisations suivantes pour associer les fonctions Lambda aux distributions : CloudFront

  • lambda:GetFunction— Accorde l'autorisation d'obtenir des informations de configuration pour votre fonction Lambda et une URL présignée pour télécharger un .zip fichier contenant la fonction.

  • lambda:EnableReplication*— Accorde l'autorisation à la politique de ressources afin que le service de réplication Lambda puisse obtenir le code de fonction et la configuration.

  • lambda:DisableReplication*— Accorde l'autorisation à la politique de ressources afin que le service de réplication Lambda puisse supprimer la fonction.

    Important

    Vous devez ajouter l'astérisque (*) à la fin des lambda:DisableReplication* actions lambda:EnableReplication* et.

  • Pour la ressource, spécifiez l'ARN de la version de fonction que vous souhaitez exécuter lorsqu'un CloudFront événement se produit, comme dans l'exemple suivant :

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

  • iam:CreateServiceLinkedRole— Accorde l'autorisation de créer un rôle lié à un service que Lambda @Edge utilise pour répliquer les fonctions Lambda. CloudFront Après avoir configuré Lambda @Edge pour la première fois, le rôle lié au service est automatiquement créé pour vous. Il n'est pas nécessaire d'ajouter cette autorisation aux autres distributions qui utilisent Lambda @Edge.

  • cloudfront:UpdateDistributionou cloudfront:CreateDistribution — Autorise la mise à jour ou la création d'une distribution.

Pour plus d’informations, consultez les rubriques suivantes :

Rôle d'exécution de fonction pour les principaux de service

Vous devez créer un rôle IAM que les responsables lambda.amazonaws.com et les responsables du edgelambda.amazonaws.com service peuvent assumer lorsqu'ils exécutent votre fonction.

Astuce

Lorsque vous créez votre fonction dans la console Lambda, vous pouvez choisir de créer un nouveau rôle d'exécution à l'aide d'un modèle de AWS politique. Cette étape ajoute automatiquement les autorisations Lambda @Edge requises pour exécuter votre fonction. Consultez l'étape 5 du didacticiel : Création d'une fonction Lambda @Edge simple.

Pour plus d'informations sur la création manuelle d'un rôle IAM, consultez la section Création de rôles et attachement de politiques (console) dans le guide de l'utilisateur IAM.

Exemple : politique de confiance dans les rôles

Vous pouvez ajouter ce rôle sous l'onglet Trust Relationship de la console IAM. N'ajoutez pas cette politique sous l'onglet Autorisations.

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

Pour plus d'informations sur les autorisations que vous devez accorder au rôle d'exécution, consultez la section Autorisations d'accès aux ressources Lambda dans le Guide du AWS Lambda développeur.

Remarques
  • Par défaut, chaque fois qu'un CloudFront événement déclenche une fonction Lambda, les données sont écrites dans Logs. CloudWatch Si vous souhaitez utiliser ces journaux, le rôle d'exécution doit être autorisé à écrire des données dans les CloudWatch journaux. Vous pouvez utiliser les paramètres prédéfinis AWSLambdaBasicExecutionRole pour accorder l'autorisation au rôle d'exécution.

    Pour plus d'informations sur CloudWatch les journaux, consultezJournaux des fonctions Edge.

  • Si votre code de fonction Lambda accède à d'autres AWS ressources, telles que la lecture d'un objet depuis un compartiment S3, le rôle d'exécution doit être autorisé pour effectuer cette action.

Rôles liés à un service pour Lambda@Edge

Lambda @Edge utilise des rôles liés à un service IAM. Un rôle lié à un service est un type unique de rôle IAM lié directement à un service. Les rôles liés à un service sont prédéfinis par le service et comprennent toutes les autorisations nécessaires au service pour appeler d'autres services AWS en votre nom.

Lambda @Edge utilise les rôles liés aux services IAM suivants :

  • AWSServiceRoleForLambdaReplicator – Lambda@Edge utilise ce rôle pour autoriser Lambda@Edge à répliquer des fonctions vers Régions AWS.

    Lorsque vous ajoutez un déclencheur Lambda @Edge pour la première fois CloudFront, un rôle nommé AWSServiceRoleForLambdaReplicator est créé automatiquement pour permettre à Lambda @Edge de répliquer des fonctions sur. Régions AWS Ce rôle est requis pour utiliser les fonctions Lambda @Edge. L'ARN du AWSServiceRoleForLambdaReplicator rôle ressemble à l'exemple suivant :

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

  • AWSServiceRoleForCloudFrontLogger— CloudFront utilise ce rôle pour transférer les fichiers journaux dans CloudWatch. Vous pouvez utiliser des fichiers journaux pour corriger les erreurs de validation Lambda @Edge.

    Le AWSServiceRoleForCloudFrontLogger rôle est créé automatiquement lorsque vous ajoutez une association de fonctions Lambda @Edge pour permettre de transférer les fichiers CloudFront journaux d'erreurs Lambda @Edge vers. CloudWatch L’ARN pour le rôle AWSServiceRoleForCloudFrontLogger prend la forme suivante :

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

Un rôle lié à un service simplifie la configuration et l'utilisation de Lambda@Edge, car vous n'avez pas besoin d'ajouter manuellement les autorisations requises. Lambda@Edge définit les autorisations de ses rôles liés un service et seul Lambda@Edge peut endosser ces rôles. Les autorisations définies comprennent la politique d'approbation et la politique d'autorisations. Vous ne pouvez pas attacher la politique d'autorisations à une autre entité IAM.

Vous devez supprimer toutes les ressources associées CloudFront ou Lambda @Edge avant de pouvoir supprimer un rôle lié à un service. Cela permet de protéger vos ressources Lambda @Edge afin de ne pas supprimer un rôle lié à un service qui est toujours nécessaire pour accéder aux ressources actives.

Pour plus d’informations sur les rôles liés à un service, consultez Rôles liés à un service pour CloudFront.

Autorisations du rôle lié à un service pour Lambda@Edge

Lambda@Edge utilise deux rôles liés à un service nommé AWSServiceRoleForLambdaReplicator et AWSServiceRoleForCloudFrontLogger. Les sections suivantes décrivent comment gérer les autorisations pour chacun de ces rôles.

Autorisations du rôle lié à un service pour Lambda Replicator

Ce rôle lié à un service permet à Lambda de répliquer les fonctions Lambda@Edge vers Régions AWS.

Le rôle lié à un service AWSServiceRoleForLambdaReplicator fait confiance au service replicator.lambda.amazonaws.com pour endosser le rôle.

La politique d'autorisations du rôle permet à Lambda@Edge de réaliser les actions suivantes sur les ressources spécifiées :

  • lambda:CreateFunction sur arn:aws:lambda:*:*:function:*

  • lambda:DeleteFunction sur arn:aws:lambda:*:*:function:*

  • lambda:DisableReplication sur arn:aws:lambda:*:*:function:*

  • iam:PassRole sur all AWS resources

  • cloudfront:ListDistributionsByLambdaFunction sur all AWS resources

Autorisations de rôle liées au service pour l'enregistreur CloudFront

Ce rôle lié à un service permet de CloudFront transférer des fichiers journaux CloudWatch afin que vous puissiez corriger les erreurs de validation Lambda @Edge.

Le rôle lié à un service AWSServiceRoleForCloudFrontLogger fait confiance au service logger.cloudfront.amazonaws.com pour endosser le rôle.

La politique d'autorisation des rôles permet à Lambda @Edge d'effectuer les actions suivantes sur la ressource spécifiée arn:aws:logs:*:*:log-group:/aws/cloudfront/* :

  • logs:CreateLogGroup

  • logs:CreateLogStream

  • logs:PutLogEvents

Vous devez configurer les autorisations de manière à permettre à une entité IAM (comme un utilisateur, groupe ou rôle) de supprimer les rôles liés à un service Lambda@Edge. Pour plus d’informations, consultez Autorisations de rôles liés à un service dans le Guide de l’utilisateur IAM.

Création de rôles liés à un service pour Lambda@Edge

Vous n'avez généralement pas besoin de créer manuellement les rôles liés à un service pour Lambda@Edge. Le service crée les rôles automatiquement pour vous dans les scénarios suivants :

  • Lorsque vous créez un déclencheur pour la première fois, le service crée le AWSServiceRoleForLambdaReplicator rôle (s'il n'existe pas déjà). Ce rôle permet à Lambda de répliquer les fonctions Lambda @Edge sur. Régions AWS

    Si vous supprimez le rôle lié à un service, le rôle sera à nouveau créé lorsque vous ajouterez un nouveau déclencheur pour Lambda@Edge dans une distribution.

  • Lorsque vous mettez à jour ou créez une CloudFront distribution associée à Lambda @Edge, le service crée le AWSServiceRoleForCloudFrontLogger rôle (si le rôle n'existe pas déjà). Ce rôle permet CloudFront de transférer vos fichiers journaux vers CloudWatch.

    Si vous supprimez le rôle lié à un service, le rôle sera créé à nouveau lorsque vous mettrez à jour ou créerez une CloudFront distribution associée à Lambda @Edge.

Pour créer manuellement ces rôles liés à un service, vous pouvez exécuter les commandes suivantes AWS Command Line Interface (AWS CLI) :

Pour créer le rôle AWSServiceRoleForLambdaReplicator
  • Exécutez la commande suivante.

    aws iam create-service-linked-role --aws-service-name replicator.lambda.amazonaws.com
Pour créer le rôle AWSServiceRoleForCloudFrontLogger
  • Exécutez la commande suivante.

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

Modification des rôles liés à un service Lambda@Edge.

Lambda @Edge ne vous permet pas de modifier les rôles AWSServiceRoleForLambdaReplicator ou les rôles liés à un AWSServiceRoleForCloudFrontLogger service. Une fois que le service a créé un rôle lié au service, vous ne pouvez pas modifier le nom du rôle car différentes entités peuvent y faire référence. Néanmoins, vous pouvez utiliser IAM pour modifier la description du rôle. Pour plus d’informations, consultez Modification d’un rôle lié à un service dans le guide de l’utilisateur IAM.

Pris en charge Régions AWS pour les CloudFront rôles liés à un service

CloudFront prend en charge l'utilisation de rôles liés à un service pour Lambda @Edge dans les domaines suivants : Régions AWS

  • US East (N. Virginia) – us-east-1

  • US East (Ohio) – us-east-2

  • US West (N. California) – us-west-1

  • US West (Oregon) – us-west-2

  • Asia Pacific (Mumbai) – ap-south-1

  • Asie-Pacifique (Séoul) – ap-northeast-2

  • Asia Pacific (Singapore) – ap-southeast-1

  • Asie-Pacifique (Sydney) – ap-southeast-2

  • Asie-Pacifique (Tokyo) – ap-northeast-1

  • Europe (Frankfurt) – eu-central-1

  • Europe (Ireland) – eu-west-1

  • Europe (London) – eu-west-2

  • South America (São Paulo) – sa-east-1