Quero criar uma função do AWS Lambda em uma conta e, em seguida, invocar essa função a partir de um recurso personalizado do AWS CloudFormation em outra conta.
Breve descrição
Você pode invocar uma função do Lambda de um recurso personalizado em outra conta somente se a função e o recurso estiverem na mesma região da AWS. A propriedade ServiceToken do AWS::CloudFormation::CustomResource deve estar na mesma região em que você criou a pilha do AWS CloudFormation. Você deve usar uma política baseada em recursos para conceder às contas, com seus recursos personalizados, permissão para invocar sua função do Lambda.
Observação: quando você associa uma função do Lambda a um recurso personalizado, o recurso personalizado invoca a função sempre que ela é criada, atualizada ou excluída. O CloudFormation chama uma API do Lambda para passar todos os dados da solicitação, como tipo de solicitação e propriedades do recurso, para a função.
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Execute o comando add-permission do AWS CLI em sua conta principal (Conta A). O comando dá à função do Lambda acesso ao recurso personalizado em outra conta (Conta B).
-ou-
Use o recurso AWS::Lambda::Permission para conceder permissão à Conta B para invocar a função do Lambda na Conta A:
- Quando uma função do Lambda é criada por meio de uma pilha na Conta A, use o recurso AWS::Lambda::Permission para conceder permissão à Conta B.
- Na Conta B, inicie a pilha do AWS CloudFormation que contém seu recurso personalizado.
Observação: verifique se o ServiceToken se refere ao nome do recurso da Amazon (ARN) da função do Lambda da Conta A. Inclua quaisquer propriedades adicionais para enviar ao recurso personalizado como entrada.
- Use o Amazon CloudWatch Logs para confirmar que o recurso personalizado da Conta B invocou sua função do Lambda na Conta A.
Informações relacionadas
Conceder a outras contas acesso à função