in ecs/task_definition.go [36:89]
func (ecs *ECS) CreateTaskDefinition(input *CreateTaskDefinitionInput) string {
console.Debug("Creating ECS task definition")
logConfiguration := &awsecs.LogConfiguration{
LogDriver: aws.String(awsecs.LogDriverAwslogs),
Options: map[string]*string{
"awslogs-region": aws.String(input.LogRegion),
"awslogs-group": aws.String(input.LogGroupName),
"awslogs-stream-prefix": aws.String(logStreamPrefix),
},
}
containerDefinition := &awsecs.ContainerDefinition{
Environment: input.Environment(),
Essential: aws.Bool(true),
Image: aws.String(input.Image),
LogConfiguration: logConfiguration,
Name: aws.String(input.Name),
Command: aws.StringSlice(input.TaskCommand),
}
if input.Port != 0 {
containerDefinition.SetPortMappings(
[]*awsecs.PortMapping{
&awsecs.PortMapping{
ContainerPort: aws.Int64(int64(input.Port)),
},
},
)
}
resp, err := ecs.svc.RegisterTaskDefinition(
&awsecs.RegisterTaskDefinitionInput{
ContainerDefinitions: []*awsecs.ContainerDefinition{containerDefinition},
Cpu: aws.String(input.Cpu),
ExecutionRoleArn: aws.String(input.ExecutionRoleArn),
Family: aws.String(fmt.Sprintf("%s_%s", input.Type, input.Name)),
Memory: aws.String(input.Memory),
NetworkMode: aws.String(awsecs.NetworkModeAwsvpc),
RequiresCompatibilities: aws.StringSlice([]string{awsecs.CompatibilityFargate}),
TaskRoleArn: aws.String(input.TaskRole),
},
)
if err != nil {
console.ErrorExit(err, "Couldn't register ECS task definition")
}
td := resp.TaskDefinition
console.Debug("Created ECS task definition [%s:%d]", aws.StringValue(td.Family), aws.Int64Value(td.Revision))
return aws.StringValue(td.TaskDefinitionArn)
}