github.com/mweagle/Sparta@v1.15.0/aws/step/fargate.go (about) 1 package step 2 3 import ( 4 "math/rand" 5 6 gocf "github.com/mweagle/go-cloudformation" 7 ) 8 9 // FargateNetworkConfiguration contains the AWSVPCConfiguration 10 // information 11 type FargateNetworkConfiguration struct { 12 AWSVPCConfiguration *gocf.ECSServiceAwsVPCConfiguration `json:"AwsvpcConfiguration,omitempty"` 13 } 14 15 // FargateTaskParameters contains the information 16 // for a Fargate task 17 type FargateTaskParameters struct { 18 Cluster gocf.Stringable `json:",omitempty"` 19 Group string `json:",omitempty"` 20 LaunchType string `json:",omitempty"` 21 NetworkConfiguration *FargateNetworkConfiguration `json:",omitempty"` 22 Overrides map[string]interface{} `json:",omitempty"` 23 PlacementConstraints []map[string]string `json:",omitempty"` 24 PlacementStrategy []map[string]string `json:",omitempty"` 25 PlatformVersion string `json:",omitempty"` 26 TaskDefinition gocf.Stringable `json:",omitempty"` 27 } 28 29 // FargateTaskState represents a FargateTask 30 type FargateTaskState struct { 31 BaseTask 32 parameters FargateTaskParameters 33 } 34 35 // MarshalJSON for custom marshalling, since this will be stringified and we need it 36 // to turn into a stringified Ref: 37 // https://docs.aws.amazon.com/step-functions/latest/dg/connectors-ecs.html 38 func (fts *FargateTaskState) MarshalJSON() ([]byte, error) { 39 return fts.BaseTask.marshalMergedParams("arn:aws:states:::ecs:runTask.sync", 40 &fts.parameters) 41 } 42 43 // NewFargateTaskState returns an initialized FargateTaskState 44 func NewFargateTaskState(stateName string, parameters FargateTaskParameters) *FargateTaskState { 45 ft := &FargateTaskState{ 46 BaseTask: BaseTask{ 47 baseInnerState: baseInnerState{ 48 name: stateName, 49 id: rand.Int63(), 50 }, 51 }, 52 parameters: parameters, 53 } 54 return ft 55 }