// ConvertToTaskDefinition transforms the yaml configs to its ecs equivalent (task definition) func ConvertToTaskDefinition(taskDefinitionName string, context *project.Context, serviceConfigs *config.ServiceConfigs) (*ecs.TaskDefinition, error) { if serviceConfigs.Len() == 0 { return nil, errors.New("cannot create a task definition with no containers; invalid service config") } logUnsupportedConfigFields(context.Project) containerDefinitions := []*ecs.ContainerDefinition{} volumes := make(map[string]string) // map with key:=hostSourcePath value:=VolumeName for _, name := range serviceConfigs.Keys() { serviceConfig, ok := serviceConfigs.Get(name) if !ok { return nil, fmt.Errorf("Couldn't get service with name=[%s]", name) } logUnsupportedServiceConfigFields(name, serviceConfig) containerDef := &ecs.ContainerDefinition{ Name: aws.String(name), } if err := convertToContainerDef(context, serviceConfig, volumes, containerDef); err != nil { return nil, err } containerDefinitions = append(containerDefinitions, containerDef) } taskDefinition := &ecs.TaskDefinition{ Family: aws.String(taskDefinitionName), ContainerDefinitions: containerDefinitions, Volumes: convertToECSVolumes(volumes), } return taskDefinition, nil }