Je souhaite créer une fonction AWS Lambda dans un compte, puis invoquer cette fonction à partir d’une ressource personnalisée AWS CloudFormation dans un autre compte.
Brève description
Vous pouvez invoquer une fonction Lambda à partir d’une ressource personnalisée d’un autre compte uniquement si la fonction et la ressource 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 que celle dans laquelle vous avez créé votre stack AWS CloudFormation. Vous devez utiliser une politique basée sur les ressources pour autoriser les comptes dotés de vos ressources personnalisées à invoquer votre fonction Lambda.
Remarque : lorsque vous associez une fonction Lambda à une ressource personnalisée, la ressource personnalisée invoque la fonction chaque fois qu’elle est créée, mise à jour ou supprimée. CloudFormation appelle une API Lambda pour transmettre toutes les données de demande, telles que le type de demande et les propriétés des ressources, à la fonction.
Résolution
Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre les erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.
Exécutez la commande add-permission de l’interface de ligne de commande AWS sur votre compte principal (Compte A). La commande permet à la fonction Lambda d'accéder à la ressource personnalisée d’un autre compte (Compte B).
-ou-
Utilisez la ressource AWS::Lambda::Permission pour autoriser le Compte B à invoquer la fonction Lambda dans le Compte A :
- 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.
- 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 au nom de ressource Amazon (ARN) de la fonction Lambda depuis le Compte A. Incluez toutes les propriétés supplémentaires à envoyer à la ressource personnalisée en tant qu’entrée.
- Utilisez Amazon CloudWatch Logs pour confirmer que votre ressource personnalisée du Compte B a invoqué votre fonction Lambda dans le Compte A.
Informations connexes
Octroi de l’accès aux fonctions à d’autres comptes