Comment résoudre les problèmes d'autorisations associés à Lambda ?

Lecture de 6 minute(s)
0

J'ai plusieurs problèmes d'autorisations associés à ma fonction AWS Lambda. Quelles mesures de dépannage dois-je prendre ?

Brève description

Les problèmes d'autorisations des fonctions Lambda se produisent pour les raisons suivantes :

  • la fonction Lambda n'est pas autorisée à exécuter les actions contenues dans le code ;
  • le service AWS chargé d'appeler la fonction Lambda ne dispose pas des autorisations suffisantes pour appeler la fonction ;
  • un compte utilisateur ne dispose pas des autorisations nécessaires pour créer, mettre à jour ou supprimer des ressources Lambda ;
  • Lambda n'est pas autorisée à créer une interface réseau élastique en raison de l'absence d'autorisations Amazon Elastic Compute Cloud (Amazon EC2).

Résolution

Considérations relatives aux autorisations

  • Le rôle d'exécution d'une fonction Lambda est un rôle AWS Identity and Access Management (IAM) qui accorde à la fonction des autorisations d'accès aux services et ressources AWS. Vous fournissez ce rôle lorsque vous créez une fonction, et Lambda assume ce rôle lorsque votre fonction est invoquée. Vous pouvez créer un rôle d'exécution autorisé à envoyer des journaux à Amazon CloudWatch et à télécharger des données de suivi vers AWS X-Ray.
  • Vous pouvez ajouter ou supprimer des autorisations du rôle d'exécution d'une fonction Lambda à tout moment. Vous pouvez également configurer votre fonction Lambda pour qu'elle utilise un rôle différent. Ajoutez des autorisations pour tous les services AWS que votre fonction appelle avec un kit SDK AWS. Ajoutez ensuite des autorisations pour les services AWS que Lambda utilise pour activer des fonctionnalités facultatives.
  • Vous fournissez un rôle d'exécution lorsque vous créez une fonction Lambda. Lorsque vous invoquez votre nouvelle fonction Lambda, Lambda fournit automatiquement à votre fonction des informations d'identification temporaires en assumant le rôle d'exécution. Vous n'avez pas besoin d'appeler sts:AssumeRole dans le code de votre fonction. Lorsque vous ajoutez des autorisations à votre fonction Lambda, veillez à mettre également à jour le code ou la configuration de la fonction. En mettant à jour le code ou la configuration de la fonction, les instances en cours d'exécution de votre fonction sont obligées de s'arrêter afin de pouvoir être remplacées. Pour plus d'informations, consultez Utilisation des politiques basées sur les ressources pour Lambda.
  • Utilisez des politiques basées sur les ressources pour accorder des autorisations d'utilisation à d'autres comptes ou organisations AWS pour chaque ressource. Une politique basée sur les ressources peut autoriser un service AWS à appeler votre fonction Lambda en votre nom.
  • Pour appeler ou gérer une fonction Lambda, veuillez accorder une autorisation à un compte. Créez une politique unique basée sur les ressources pour accorder des autorisations à l'ensemble d'une organisation dans AWS Organizations. Utilisez des politiques basées sur les ressources pour accorder l'autorisation de faire appel à un service AWS afin qu'une fonction puisse être appelée en réponse à des activités de compte spécifiques.
  • Les politiques basées sur les ressources s'appliquent à une fonction, une version, un alias ou une version de couche unique. Les politiques basées sur les ressources accordent des autorisations à un ou plusieurs services et comptes AWS. Pour les comptes de confiance qui ont besoin d'accéder à plusieurs ressources, ou pour utiliser des actions d'API que les politiques basées sur les ressources ne prennent pas en charge, utilisez des rôles entre comptes. Pour plus d'informations, consultez Autorisations Lambda.
  • Utilisez les politiques IAM basées sur l'identité pour autoriser les utilisateurs de votre compte à accéder à Lambda. Les politiques basées sur l'identité peuvent s'appliquer directement aux utilisateurs ou aux groupes et rôles associés à un utilisateur. Accordez aux utilisateurs d'un autre compte l'autorisation d'assumer un rôle dans votre compte et d'accéder à vos ressources Lambda.
  • Lambda fournit des politiques gérées par AWS qui donnent accès aux actions d'API Lambda. Les politiques gérées peuvent accorder l'accès à d'autres services AWS utilisés pour développer et gérer des ressources Lambda. Lambda met à jour ces politiques gérées selon les besoins pour garantir que vos utilisateurs ont accès aux nouvelles fonctionnalités dès leur publication. Pour en savoir plus, consultez Politiques IAM basées sur l'identité pour Lambda.

Étapes de résolution des problèmes

1.    Si la fonction Lambda est censée appeler une autre fonction ou un autre service AWS et qu'elle échoue, vérifiez le rôle d'exécution Lambda.
Pour plus d'informations, consultez la section Rôle d'exécution Lambda.

2.    Vérifiez que l'autorisation du service ou de l'utilisateur AWS est définie pour l'action lambda:InvokeFunction.
Pour plus d'informations, consultez Actions, ressources et clés de condition pour AWS Lambda.

3.    Dans un scénario multicomptes, accédez aux comptes source et de destination pour vérifier les autorisations nécessaires pour assumer un rôle IAM afin d'appeler la fonction Lambda.
Pour plus d'informations, consultez Comment configurer une fonction Lambda pour qu'elle assure un rôle IAM dans un autre compte AWS ?

4.    Pour vous connecter à un VPC, le rôle d'exécution de votre fonction Lambda doit disposer des autorisations suivantes :
ec2:CreateNetworkInterface
ec2:DescribeNetworkInterfaces
ec2:DeleteNetworkInterface

5.    Résolvez les problèmes d'autorisations en comparant les autorisations non opérationnelles définies avec n'importe laquelle de vos configurations de travail. Vous pouvez également vous référer à la documentation AWS pour vérifier les autorisations.

6.    Le compte source doit être autorisé à appeler la fonction Lambda. Passez en revue les autorisations de mappage des sources d'événements requises pour la fonction Lambda. Un mappage de source d'événement utilise les autorisations du rôle d'exécution de la fonction afin de lire et gérer les éléments de la source d'événement. Les autorisations, la structure des événements, les paramètres et le comportement d'interrogation varient selon la source d'événement. Pour plus d'informations, consultez la section Résolution des problèmes IAM AWS Lambda.

7.    Consultez vos journaux AWS CloudTrail pour suivre les appels d'API effectués vers Lambda. Passez en revue les informations collectées par CloudTrail pour déterminer :
la demande effectuée auprès de Lambda ;
l'adresse IP à partir de laquelle la demande a été effectuée ;
l'auteur de la demande ;
le moment de la demande.
Pour plus d'informations, consultez Journalisation des appels d'API Lambda avec CloudTrail.

8.    Si vous ne parvenez toujours pas à résoudre le problème, ouvrez un dossier auprès d'AWS Support. Fournissez les informations suivantes :

  • La fonction Lambda ARN.
  • Le flux de travail relatif à la configuration de la fonction Lambda avec tous les services AWS inclus.
  • Détails indiquant si le problème est intermittent ou continu.
  • Détails indiquant s'il s'agit d'un scénario multicomptes.
  • Les noms des autorisations et/ou rôles IAM concernés.
  • Complétez les journaux CloudWatch au format .txt à partir du moment où le problème s'est produit. Ces journaux CloudWatch sont utilisés pour identifier les erreurs de fonction Lambda, notamment les problèmes de délai d'expiration, de durée d'initialisation et d'autorisations.
  • L'horodatage exact du problème avec le fuseau horaire ou l'horodatage en UTC.

Remarque : Les représentants d'AWS Support n'ont pas accès aux journaux CloudWatch des clients pour des raisons de sécurité et de confidentialité.


Informations connexes

Comment utiliser des politiques basées sur les ressources avec AWS Lambda pour accorder des autorisations aux services AWS ?

Comment configurer une fonction Lambda pour qu'elle assure un rôle IAM dans un autre compte AWS ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an