EventBridge CloudFormation Events
--
It’s possible to use EventBridge event “CloudFormation Resource Status Change” to execute code when the CloudFormation stack itself is created.
This can be done describing the EventBridge event rule for a Lambda function that match the emitted event:
PostScript:
Type: AWS::Serverless::Function
Properties:
FunctionName: !Sub "${AWS::StackName}-post-script"
Runtime: nodejs16.x
Handler: index.handler
InlineCode: !Sub |
exports.handler = async (event) => {
console.log(event);
};
Policies:
- AWSLambdaExecute
Events:
StackCreatedOrUpdated:
Type: EventBridgeRule
Properties:
EventBusName: default
Pattern:
source:
- aws.cloudformation
detail-type:
- CloudFormation Stack Status Change
detail:
stack-id:
- !Ref AWS::StackId
status-details:
status:
- UPDATE_COMPLETE
- CREATE_COMPLETE
The event rule pattern is interpolated with AWS::StackId pseudo parameter reference. So far the only status change that is reported is CREATE_COMPLETE.
This approach can be used for executing a script when a stack resource is create, update or removed:
PostResourceScript:
Type: AWS::Serverless::Function
Properties:
FunctionName: !Sub "${AWS::StackName}-post-resource-script"
Runtime: nodejs16.x
Handler: index.handler
InlineCode: !Sub |
exports.handler = async (event) => {
console.log(event);
};
Policies:
- AWSLambdaExecute
Events:
ResourceUpdate:
Type: EventBridgeRule
Properties:
EventBusName: default
Pattern:
source:
- aws.cloudformation
detail-type:
- CloudFormation Resource Status Change
detail:
stack-id:
- !Ref AWS::StackId
resource-type:
- AWS::EC2::Instance
logical-resource-id:
- Instance
Credits: Cloudcraft.
Originally written on Oct 3, 2022.