Comment utiliser une fonction Lambda créée dans un compte AWS avec une ressource personnalisée AWS CloudFormation dans un autre compte AWS ?

Date de la dernière mise à jour : 15/02/2021

Je souhaite créer une fonction AWS Lambda dans un compte, puis appeler cette fonction à partir d'une ressource personnalisée AWS CloudFormation dans un autre compte.

Brève description

Vous pouvez appeler une fonction Lambda à partir d'une ressource personnalisée dans un compte différent uniquement si la fonction Lambda et la ressource personnalisée se trouvent dans la même région AWS. La propriété ServiceToken d' AWS::CloudFormation::CustomResource doit se trouver dans la même région où vous avez créé votre pile AWS CloudFormation. Vous devez utiliser une stratégie basée sur les ressources pour accorder aux comptes avec autorisation des ressources personnalisées d'appeler votre fonction Lambda.

Remarque : lorsque vous associez une fonction Lambda à une ressource personnalisée, la fonction est appelée chaque fois que la ressource personnalisée est créée, mise à jour ou supprimée. AWS CloudFormation appelle une API Lambda pour appeler la fonction et pour transmettre toutes les données de la demande à la fonction. Par exemple, les données de demande incluent le type de demande et les propriétés de la ressource.

Résolution

Remarque : si vous recevez des erreurs lors de l'exécution de commandes depuis l'interface de ligne de commande (CLI) AWS, assurez-vous d'utiliser la version la plus récente de l'interface.

Pour accorder à votre fonction Lambda l'accès à votre ressource personnalisée à partir d'un autre compte (compte B), exécutez la commande d'interface de ligne de commande AWS add-permission dans votre compte principal ( compte A).

-ou-

1.    Lorsqu'une fonction Lambda est créée via une pile dans le compte A, utilisez la ressource AWS::Lambda::Permission pour accorder l'autorisation au compte B.

2.    Dans le compte B, lancez la pile AWS CloudFormation qui contient votre ressource personnalisée.

Remarque : assurez-vous que le ServiceToken fait référence à Amazon Resource Name (ARN) de la fonction Lambda à partir du compteA. Incluez toutes les propriétés supplémentaires à envoyer à la ressource personnalisée en tant qu'entrée.

3.    Utilisez Amazon CloudWatch Logs pour confirmer que votre ressource personnalisée du compte B a appelé votre fonction Lambda dans le compteA.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?