Comment appeler une fonction Lambda à l'aide d'un flux Kinesis inter-comptes ?

Dernière mise à jour : 16-12-2021

Je veux appeler une fonction AWS Lambda à l'aide d'un flux Amazon Kinesis se trouvant dans un autre compte AWS. Comment procéder ?

Brève description

La fonction Lambda ne prend actuellement pas en charge les déclenchements entre comptes depuis Kinesis et les sources basées sur des flux.

Comme solution palliative, vous pouvez créer une fonction Lambda « interrogateur » dans le même compte que le flux Kinesis (compte 1). Ensuite, configurez la fonction pour appeler une deuxième fonction Lambda « processeur » dans l'autre compte (compte 2).

Avertissement : cette configuration supprime de nombreux avantages liés à l'utilisation de Kinesis Data Streams. Vous ne pouvez pas bloquer des enregistrements ou créer un ordre séquentiel dans une partition après avoir terminé cette procédure. Nous vous recommandons d'utiliser cette solution uniquement si votre application n'a pas besoin de ces fonctions.

Solution

Configurer une fonction Lambda « interrogateur » dans le même compte que le flux Kinesis (compte 1)

1.    Créez une fonction Lambda dans le compte 1 qui comprend un rôle d'exécution.

Remarque : vous pouvez créer la fonction en utilisant la console Lambda ou en créant et chargeant votre propre package de déploiement.

2.    Ajoutez les autorisations requises pour votre flux Kinesis au rôle d'exécution de la fonction.

3.    Configurez le flux Kinesis en tant que source d'événement.

Important : lorsque vous créez le mappage de source d'événement, veillez à ce que la fonction Lambda et le flux Kinesis se trouvent dans le même compte.

Configurer une fonction Lambda « processeur » dans le deuxième compte (compte 2)

1.    Créez une fonction Lambda dans le compte 2 qui comprend un rôle d'exécution.

2.    Créez un rôle AWS Identity and Access Management (IAM) (rôle d'appel) dans le compte 2.

Remarque : ce rôle d'appel est assumé par la fonction « interrogateur » du compte 1 pour appeler la fonction « processeur » du compte 2.

3.    Modifiez la stratégie du rôle d'appel dans le compte 2 des manières suivantes :

  • Donnez au rôle d'appel les autorisations nécessaires pour appeler (à l'aide de l'action lambda:InvokeFunction) la fonction Lambda « processeur » du compte 2.
  • Modifiez la relation d'approbation pour permettre au rôle d'exécution de la fonction Lambda « interrogateur » du compte 1 d'assumer le rôle d'appel du compte 2.

Pour en savoir plus, consultez Stratégies IAM basées sur une identité pour AWS Lambda, ainsi que Création d'un rôle pour la délégation d'autorisations à un service AWS.

Configurez la fonction Lambda « interrogateur » du compte 1 pour assumer le rôle d'appel du compte 2

1.    Accordez à la stratégie de rôle d'exécution du compte 1 les autorisations nécessaires pour appeler l'API AssumeRole et assumer le rôle d'appel du compte 2. Assurez-vous d'utiliser l'action sts:AssumeRole. Pour plus d'informations, consultez la sectionOctroi d'autorisations à un utilisateur pour endosser un rôle.

2.    Mettez à jour la fonction « interrogateur » du compte 1 afin qu'elle effectue les opérations suivantes :

  • Assume le rôle d'appel du compte 2. Pour obtenir des instructions, consultez Assumer un rôle IAM (API AWS).
  • Transmet l'événement d'entrée de Kinesis à la fonction « processeur » du compte 2. Pour que la fonction transmette l'événement d'entrée, instanciez un client de service et utilisez la méthode SDK appropriée pour demander un appel asynchrone (type d'appel d'événement).
    Remarque : pour déterminer la méthode d'appel SDK appropriée, consultez la documentation SDK pour votre environnement d'exécution.

3.    Configurez une file d'attente de lettres mortes (DLQ) pour la fonction du compte 2. Cela vous permet d'examiner ou de réessayer les événements manqués en cas d'erreur de fonction.

Configurer une destination pour les enregistrements d'événements ayant échoué

Configurez une destination pour les enregistrements d'événements ayant échoué pour la source d'événement configurée pour la fonction « interrogateur » du compte 1.

Remarque : la configuration d'une destination pour les enregistrements d'événements ayant échoué indique à Lambda d'envoyer des détails sur les enregistrements rejetés à la file d'attente ou à la rubrique de destination.