Не уверен, что это полностью соответствует вашим потребностям, но я успешно настроил функцию Lambda с событием CloudWatch, которое будет запускаться при вызовах API CloudFormation.
Вам понадобится CloudTrail, чтобы сделать это.
Возможно, вы можете ограничить выполнение функции конкретными стеками (возможно, используя атрибут resources
в событии CloudTrail )
...
functions:
stack-deployment-function:
handler: stack-deployment-function.handler
description: Lambda function triggered by Stack changes/deployments
timeout: 300
environment:
FOO: bar
events:
- cloudwatchEvent:
name: ${self:service}-${opt:stage, self:provider.stage}-stack-deployment-function
description: 'Updates XYZ after CloudFormation update'
event:
source:
- "aws.cloudformation"
detail-type:
- "AWS API Call via CloudTrail"
detail:
eventName:
# Need to call DescribeStacks in Lambda to confirm successful deployment before making any changes
- "UpdateStack"
- "CreateStack"