in ecs-cli/modules/cli/compose/entity/task/task.go [308:395]
func (t *Task) buildRunTaskInput(taskDefinition string, count int, overrides map[string][]string) (*ecs.RunTaskInput, error) {
cluster := t.Context().CommandConfig.Cluster
launchType := t.Context().CommandConfig.LaunchType
group := entity.GetTaskGroup(t)
ecsParams := t.ecsContext.ECSParams
networkConfig, err := composeutils.ConvertToECSNetworkConfiguration(ecsParams)
if err != nil {
return nil, err
}
placementConstraints, err := composeutils.ConvertToECSPlacementConstraints(ecsParams)
if err != nil {
return nil, err
}
placementStrategy, err := composeutils.ConvertToECSPlacementStrategy(ecsParams)
if err != nil {
return nil, err
}
// NOTE: this validation is not useful if called after RegisterTaskDefinition
if err := entity.ValidateFargateParams(ecsParams, launchType); err != nil {
return nil, err
}
taskOverride, err := convertToECSTaskOverride(overrides)
if err != nil {
return nil, err
}
runTaskInput := &ecs.RunTaskInput{
Cluster: aws.String(cluster),
TaskDefinition: aws.String(taskDefinition),
Group: aws.String(group),
Count: aws.Int64(int64(count)),
}
if networkConfig != nil {
runTaskInput.NetworkConfiguration = networkConfig
}
if taskOverride != nil {
runTaskInput.Overrides = taskOverride
}
if placementConstraints != nil {
runTaskInput.PlacementConstraints = placementConstraints
}
if placementStrategy != nil {
runTaskInput.PlacementStrategy = placementStrategy
}
if launchType != "" {
runTaskInput.LaunchType = aws.String(launchType)
}
tags, err := t.GetTags()
if err != nil {
return nil, err
}
if len(tags) > 0 {
runTaskInput.Tags = tags
}
if !t.Context().CLIContext.Bool(flags.DisableECSManagedTagsFlag) {
enabled, err := isTaskLongARNEnabled(t.Context().ECSClient)
if err != nil {
return nil, err
}
if enabled {
log.Info("Auto-enabling ECS Managed Tags")
runTaskInput.EnableECSManagedTags = aws.Bool(true)
}
}
// TODO: revert to "LATEST" when latest refers to 1.4.0
if launchType == config.LaunchTypeFargate && ecsParams != nil && len(ecsParams.TaskDefinition.EFSVolumes) > 0 {
log.Warnf("Detected an EFS Volume in task definition %s", taskDefinition)
log.Warnf("Using Fargate platform version %s, which includes changes to the networking flows for VPC endpoint customers.", config.PlatformVersion140)
log.Warn("Learn more: https://aws.amazon.com/blogs/containers/aws-fargate-launches-platform-version-1-4/")
runTaskInput.PlatformVersion = aws.String(config.PlatformVersion140)
}
return runTaskInput, nil
}