Add event definitions for CloudFormation custom resources #695
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue #, if available:
Related to #680 - see below
Description of changes:
This PR adds event definitions for CloudFormation custom resource request objects. Requests are either a Create, Update, or Delete event, implemented as enum variants with internally tagged representation.
Note that, in addition to the fields documented in the links above, in practice CloudFormation sends a
ServiceToken
field in every request. Since this isn't documented I've encoded it as anOption<String>
with#[serde(default)]
, so deserialisation will tolerate it being missing, but I can change this if desired.This is intended as an initial building block of a framework for implementing Lambda custom resource handlers, of the kind requested in #680. These work by invoking a Lambda with one of the above event types, all of which include an S3 presigned URL to which a response must be posted. Failing to post a response can result in long delays, so tools to make it easy to send a response, and a fallback mechanism to send a failure response if the Lambda is about to time out, are desirable.
I'd appreciate feedback on whether further PRs to add this functionality (probably in a
lambda_cfn
crate) would be appreciated, but either way I think the event definitions are a useful addition.By submitting this pull request