Skip to content

iRobotCorporation/cfn-custom-resource

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cfn-custom-resource

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: create, update, and 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 logger field.

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.

About

Collection of tools to enable use of AWS Lambda with CloudFormation

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages