Closed flostadler closed 2 weeks ago
Looking good! No breaking changes found. No new resources/functions.
Attention: Patch coverage is 59.43152%
with 157 lines
in your changes missing coverage. Please review.
Project coverage is 48.13%. Comparing base (
04539b4
) to head (b184dc0
). Report is 1 commits behind head on master.
Files with missing lines | Patch % | Lines |
---|---|---|
provider/pkg/resources/cfn_custom_resource.go | 59.43% | 142 Missing and 15 partials :warning: |
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
This PR adds support for CloudFormation Custom Resource to the aws-native provider. It implements an emulator that enables Pulumi programs to interact with Lambda-backed CloudFormation Custom Resources.
A CloudFormation custom resource is essentially an extension point to run arbitrary code as part of the CloudFormation lifecycle. It is similar in concept to the Pulumi Command Provider, the difference being that CloudFormation CustomResources are executed in the Cloud; either through Lambda or SNS.
For the first implementation we decided to limit the scope to Lambda backed Custom Resources, because the SNS variants are not widely used.
Custom Resource Protocol
The implementation follows the CloudFormation Custom Resource protocol. I derived the necessary parts by combining information from the docs, CDKs CustomResource Framework and trial&error.
Notable aspects of that protocol are:
ResponseURL
that needs to be included in the request payload.Custom Resource Lifecycle
Reviewer Notes
Key areas to review:
Update
lifecycleExposing this resource and schematizing it is part of this PR https://github.com/pulumi/pulumi-aws-native/pull/1807. Automatically cleaning up the response objects is not included in this PR in order to keep its size manageable. Implementing this is tracked here: https://github.com/pulumi/pulumi-aws-native/issues/1813.
Please pay special attention to:
Testing
Related Issues