AWS LambdaRôle d'exécution - AWS Lambda

AWS LambdaRôle d'exécution

Le rôle d'exécution d'une fonction Lambda est un rôle AWS Identity and Access Management (IAM) qui accorde à la fonction l'autorisation d'accéder aux services et aux ressources AWS. Vous fournissez ce rôle lorsque vous créez une fonction, et Lambda endosse le rôle lorsque votre fonction est appelée. Vous pouvez créer un rôle d'exécution pour un développement autorisé à envoyer des journaux à Amazon CloudWatch et à charger des données de suivi vers AWS X-Ray.

Pour afficher le rôle d'exécution d'une fonction

  1. Ouvrez la page Functions (Fonctions) de la console Lambda.

  2. Choisissez une fonction.

  3. Sélectionnez Configuration (Configuration), puis Permissions (Autorisations).

  4. Sous Récapitulatif des ressources, affichez les services et les ressources auxquels la fonction peut accéder.

  5. Choisissez un service dans la liste déroulante pour afficher les autorisations associées à ce service.

À tout moment, vous pouvez ajouter ou supprimer des autorisations à partir du rôle d'exécution d'une fonction ou configurer votre fonction afin d'utiliser un autre rôle. Ajoutez des autorisations pour des services appelés par votre fonction avec le kit SDK AWS et pour des services utilisés par Lambda afin d'activer des fonctions facultatives.

Lorsque vous ajoutez des autorisations à votre fonction, mettez également à jour son code ou sa configuration. Cela force l'arrêt et le remplacement des instances en cours d'exécution de votre fonction, qui ont des informations d'identification obsolètes.

Création d'un rôle d'exécution dans la console IAM

Par défaut, Lambda crée un rôle d'exécution avec des autorisations minimales lorsque vous créez une fonction dans la console Lambda. Vous pouvez également créer un rôle d'exécution dans la console IAM.

Pour créer un rôle d'exécution dans la console IAM

  1. Ouvrez la page Roles (Rôles) dans la console IAM.

  2. Sélectionnez Créer un rôle.

  3. Sous Cas d'utilisation courants, choisissez Lambda.

  4. Sélectionnez Étape suivante : autorisations.

  5. Sous Attach permissions policies (Attacher des stratégies d'autorisation), choisissez les stratégies gérées AWS AWSLambdaBasicExecutionRole et AWSXRayDaemonWriteAccess.

  6. Choisissez Next: Tags (Suivant : Balises).

  7. Choisissez Étape suivante : vérification).

  8. Sous Role name (Nom du rôle), saisissez lambda-role.

  9. Sélectionnez Créer un rôle.

Pour obtenir les instructions complètes, consultez Création d'un rôle pour un service AWS (console) dans le Guide de l'utilisateur IAM.

Accorder un accès assorti d'un privilège minimum à votre rôle d'exécution Lambda

Lorsque vous créez pour la première fois un rôle IAM pour votre fonction Lambda pendant la phase de développement, il peut arriver que vous accordiez des autorisations au-delà de ce que est nécessaire. Avant de publier votre fonction dans l'environnement de production, une bonne pratique consiste à ajuster la stratégie de manière à inclure uniquement les autorisations requises. Pour plus d'informations, consultez Accorder un privilège minimum.

Utilisez IAM Access Analyzer pour identifier les autorisations requises pour la stratégie de rôle d'exécution IAM. IAM Access Analyzer examine vos journaux AWS CloudTrail sur la plage de dates que vous spécifiez, et génère un modèle de stratégie avec uniquement les autorisations que la fonction a utilisées pendant cette période. Vous pouvez utiliser le modèle pour créer une stratégie gérée avec des autorisations affinées, puis l'attacher au rôle IAM. De cette façon, vous accordez uniquement les autorisations dont le rôle a besoin pour interagir avec les ressources AWS pour votre cas d'utilisation spécifique.

Pour en savoir plus, consultez Générer des stratégies basées sur l'activité d'accès dans le Guide IAM de l'utilisateur.

Gestion des rôles avec l'API IAM

Pour créer un rôle d'exécution avec l'AWS Command Line Interface(AWS CLI), utilisez la commande create-role.

Dans l'exemple suivant, vous spécifiez la politique d'approbation en ligne. Les exigences pour l'échappement des guillemets dans la chaîne JSON varient en fonction de votre interpréteur.

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

Vous pouvez également définir la politique d'approbation pour le rôle à l'aide d'un fichier JSON. Dans l'exemple suivant, le fichier trust-policy.json se trouve dans le répertoire actuel. Cette stratégie d'approbation permet à Lambda d'utiliser les autorisations du rôle en donnant au mandataire du service lambda.amazonaws.com l'autorisation d'appeler l'action d'AWS Security Token Service AssumeRole.

Exemple 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

Vous devriez voir la sortie suivante :

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

Pour ajouter des autorisations au rôle, utilisez la commande attach-policy-to-role. Commencez par ajouter la stratégie gérée AWSLambdaBasicExecutionRole.

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

Stratégies gérées par AWS pour les fonctions Lambda

Les stratégies gérées par AWS ci-après fournissent les autorisations requises pour utiliser les fonctions Lambda.

Modification Description Date

AWSLambdaBasicExecutionRole— Lambda a commencé à suivre les modifications apportées à cette stratégie.

AWSLambdaBasicExecutionRoleaccorde des autorisations pour charger les journaux sur CloudWatch.

14 février 2022

AWSLambdaDynamoDBExecutionRole— Lambda a commencé à suivre les modifications apportées à cette stratégie.

AWSLambdaDynamoDBExecutionRoleaccorde des autorisations pour lire des enregistrements à partir d'un flux Amazon DynamoDB et pour écrire sur CloudWatch Logs.

14 février 2022

AWSLambdaKinesisExecutionRole— Lambda a commencé à suivre les modifications apportées à cette stratégie.

AWSLambdaKinesisExecutionRoleaccorde des autorisations pour lire des événements à partir d'un flux Amazon Kinesis et pour écrire sur CloudWatch Logs.

14 février 2022

AWSLambdaMSKExecutionRole— Lambda a commencé à suivre les modifications apportées à cette stratégie.

AWSLambdaMSKExecutionRoleaccorde des autorisations pour lire et accéder aux enregistrements à partir d'un cluster Amazon Managed Streaming for Apache Kafka (Amazon MSK), gère les interfaces réseau Elastic (ENIS) et écrit sur CloudWatch Logs.

14 février 2022

AWSLambdaSQSQueueExecutionRole— Lambda a commencé à suivre les modifications apportées à cette stratégie.

AWSLambdaSQSQueueExecutionRoleautorise à lire un message à partir d'une file d'attente Amazon Simple Queue Service (Amazon SQS) et à écrire dans CloudWatch Logs.

14 février 2022

AWSLambdaVPCAccessExecutionRole— Lambda a commencé à suivre les modifications apportées à cette stratégie.

AWSLambdaVPCAccessExecutionRoleaccorde des autorisations pour gérer les ENI au sein d'un Amazon VPC et écrire dans CloudWatch Logs.

14 février 2022

AWSXRayDaemonWriteAccess— Lambda a commencé à suivre les modifications apportées à cette stratégie.

AWSXRayDaemonWriteAccessaccorde des autorisations pour charger des données de suivi vers X-Ray.

14 février 2022

CloudWatchLambdaInsightsExecutionRolePolicy— Lambda a commencé à suivre les modifications apportées à cette stratégie.

CloudWatchLambdaInsightsExecutionRolePolicy autorisation d'écrire des métriques d’exécution dans CloudWatch Lambda Insights.

14 février 2022

Amazons3ObjectLambdaExecutionRolePolicy— Lambda a commencé à suivre les modifications apportées à cette stratégie.

AmazonS3ObjectLambdaExecutionRolePolicyaccorde des autorisations pour interagir avec Amazon S3 Object Lambda et écrire dans CloudWatch Logs.

14 février 2022

Pour certaines fonctionnalités, la console Lambda tente d'ajouter les autorisations manquantes au rôle d'exécution dans une stratégie gérée par le client. Ces stratégies peuvent être excessivement nombreuses. Afin d'éviter la création de stratégies supplémentaires, ajoutez les stratégies gérées AWS pertinentes au rôle d'exécution avant d'activer les fonctions.

Lorsque vous utilisez un mappage de source d'événement pour appeler votre fonction, Lambda utilise le rôle d'exécution pour lire les données d'événement. Par exemple, un mappage de source d'événement pour Kinesis lit les événements d'un flux de données et les envoie à votre fonction par lots. Vous pouvez utiliser les mappages de source d'événement avec les services suivants :

Outre les stratégies gérées par AWS, la console Lambda fournit des modèles permettant de créer une stratégie personnalisée dotée d'autorisations pour d'autres cas d'utilisation. Lorsque vous créez une fonction dans la console Lambda, vous pouvez choisir de créer un nouveau rôle d'exécution doté des autorisations d'un ou plusieurs modèles. Ces modèles s'appliquent également automatiquement lorsque vous créez une fonction à partir d'un plan ou lorsque vous configurez les options qui nécessitent l'accès à d'autres services. Vous trouverez des exemples de modèles dans le référentiel GitHub de ce guide.