cfn_custom_resource provides an abstract base class to make it easier to implement
AWS CloudFormation custom resources.
It was developed from Gene Wood's
cfnlambda, which provides lower-level functions and decorators for the same purpose.
At its simplest, you subclass the
CloudFormationCustomResource and implement three methods:
delete, for each of the respective CloudFormation actions. Indicate failure by raising an exception. If you want attributes available on the resource within CloudFormation, return them as a dictionary. Your subclass has a class method
get_handler, which will return a Lambda handler function.
Logging to CloudWatch is provided by the
from cfn_custom_resource import CloudFormationCustomResource # For resources of type Custom::MyCustomResource class MyCustomResource(CloudFormationCustomResource): def create(self): # Implement # For AWS SDKs, use: # self.get_boto3_client(service_name) # self.get_boto3_resource(service_name) # Set the name of what you are creating to the value in # self.physical_resource_id # This id is autogenerated for you, but you can set it if you want or need # This id is what CloudFormation uses for Ref # The resource properties defined in the template are in # self.resource_properties # Attributes can be set by returning a dictionary def update(self): # Implement # The name of what you previously created is # self.physical_resource_id # The updated properties are in # self.resource_properties # To check what's changed, compare with # self.old_resource_properties # If you set attributes in create(), you need to set them here too def delete(self): # implement handler = MyCustomResource.get_handler()
See more details in the wiki
How to contribute
Feel free to open issues or fork and submit PRs.