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  }