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  }