github.com/mweagle/Sparta@v1.15.0/aws/cloudformation/resources/helloworldresource.go (about) 1 package resources 2 3 import ( 4 "encoding/json" 5 6 "github.com/aws/aws-sdk-go/aws/session" 7 gocf "github.com/mweagle/go-cloudformation" 8 "github.com/sirupsen/logrus" 9 ) 10 11 // HelloWorldResourceRequest is what the UserProperties 12 // should be set to in the CustomResource invocation 13 type HelloWorldResourceRequest struct { 14 Message *gocf.StringExpr 15 } 16 17 // HelloWorldResource is a simple POC showing how to create custom resources 18 type HelloWorldResource struct { 19 gocf.CloudFormationCustomResource 20 HelloWorldResourceRequest 21 } 22 23 // IAMPrivileges returns the IAM privs for this custom action 24 func (command *HelloWorldResource) IAMPrivileges() []string { 25 return []string{} 26 } 27 28 // Create implements resource create 29 func (command HelloWorldResource) Create(awsSession *session.Session, 30 event *CloudFormationLambdaEvent, 31 logger *logrus.Logger) (map[string]interface{}, error) { 32 33 requestPropsErr := json.Unmarshal(event.ResourceProperties, &command) 34 if requestPropsErr != nil { 35 return nil, requestPropsErr 36 } 37 logger.Info("create: Hello ", command.Message.Literal) 38 return map[string]interface{}{ 39 "Resource": "Created message: " + command.Message.Literal, 40 }, nil 41 } 42 43 // Update implements resource update 44 func (command HelloWorldResource) Update(awsSession *session.Session, 45 event *CloudFormationLambdaEvent, 46 logger *logrus.Logger) (map[string]interface{}, error) { 47 requestPropsErr := json.Unmarshal(event.ResourceProperties, &command) 48 if requestPropsErr != nil { 49 return nil, requestPropsErr 50 } 51 logger.Info("update: ", command.Message.Literal) 52 return nil, nil 53 } 54 55 // Delete implements resource delete 56 func (command HelloWorldResource) Delete(awsSession *session.Session, 57 event *CloudFormationLambdaEvent, 58 logger *logrus.Logger) (map[string]interface{}, error) { 59 requestPropsErr := json.Unmarshal(event.ResourceProperties, &command) 60 if requestPropsErr != nil { 61 return nil, requestPropsErr 62 } 63 logger.Info("delete: ", command.Message.Literal) 64 return nil, nil 65 }