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
Lambda ne prend actuellement pas en charge les déclencheurs multicomptes de Kinesis.
Comme solution alternative, 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 plus d'informations, consultez Stratégies basées sur l'identité IAM pour Lambda et Création d'un rôle pour déléguer des 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 section Octroi 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.
Informations connexes
Utilisation de AWS Lambda avec Amazon Kinesis
Didacticiel : Utilisation d'AWS Lambda avec Amazon Kinesis
Réplication de flux sans serveur entre comptes à l'aide de AWS Lambda, Amazon DynamoDB, et Amazon Kinesis Firehose
Facilité d’autorisation des fonctions Lambda AWS