github.com/mweagle/Sparta@v1.15.0/doc_workflowhooks_test.go (about)

     1  package sparta
     2  
     3  import (
     4  	"archive/zip"
     5  	"context"
     6  	"io"
     7  	"strings"
     8  
     9  	"github.com/aws/aws-lambda-go/lambdacontext"
    10  	"github.com/aws/aws-sdk-go/aws/session"
    11  	"github.com/sirupsen/logrus"
    12  )
    13  
    14  const userdataResourceContents = `
    15  {
    16    "Hello" : "World",
    17  }`
    18  
    19  func helloZipLambda(ctx context.Context,
    20  	props map[string]interface{}) (string, error) {
    21  	lambdaCtx, _ := lambdacontext.FromContext(ctx)
    22  	Logger().WithFields(logrus.Fields{
    23  		"RequestID":  lambdaCtx.AwsRequestID,
    24  		"Properties": props,
    25  	}).Info("Lambda event")
    26  	return "Event processed", nil
    27  }
    28  
    29  func archiveHook(context map[string]interface{},
    30  	serviceName string,
    31  	zipWriter *zip.Writer,
    32  	awsSession *session.Session,
    33  	noop bool,
    34  	logger *logrus.Logger) error {
    35  
    36  	logger.Info("Adding userResource")
    37  	resourceFileName := "userResource.json"
    38  	binaryWriter, binaryWriterErr := zipWriter.Create(resourceFileName)
    39  	if nil != binaryWriterErr {
    40  		return binaryWriterErr
    41  	}
    42  	userdataReader := strings.NewReader(userdataResourceContents)
    43  	_, copyErr := io.Copy(binaryWriter, userdataReader)
    44  	return copyErr
    45  }
    46  
    47  func ExampleWorkflowHooks() {
    48  	workflowHooks := WorkflowHooks{
    49  		Archive: archiveHook,
    50  	}
    51  
    52  	var lambdaFunctions []*LambdaAWSInfo
    53  	helloWorldLambda, _ := NewAWSLambda("PreexistingAWSLambdaRoleName",
    54  		helloZipLambda,
    55  		nil)
    56  	lambdaFunctions = append(lambdaFunctions, helloWorldLambda)
    57  	MainEx("HelloWorldArchiveHook",
    58  		"Description for Hello World HelloWorldArchiveHook",
    59  		lambdaFunctions,
    60  		nil,
    61  		nil,
    62  		&workflowHooks,
    63  		false)
    64  }