// Copyright 2015-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). You may // not use this file except in compliance with the License. A copy of the // License is located at // // http://aws.amazon.com/apache2.0/ // // or in the "license" file accompanying this file. This file is distributed // on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either // express or implied. See the License for the specific language governing // permissions and limitations under the License. package converter import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ecs" composeV3 "github.com/docker/cli/cli/compose/types" "github.com/pkg/errors" ) const ( // jsonFileLogDriver is the default Docker logger. jsonFileLogDriver = "json-file" ) // ConvertToComposeOverride returns a Docker Compose object to be used to override containers defined // in the task definition. // // Overrides the logging driver to "json-file" for every service. func ConvertToComposeOverride(taskDefinition *ecs.TaskDefinition) (*composeV3.Config, error) { if taskDefinition == nil { return nil, errors.New("task definition cannot be nil") } if len(taskDefinition.ContainerDefinitions) == 0 { return nil, errors.New("task definition needs to have container definitions") } var services []composeV3.ServiceConfig for _, container := range taskDefinition.ContainerDefinitions { config := composeV3.ServiceConfig{ Name: aws.StringValue(container.Name), Logging: &composeV3.LoggingConfig{ Driver: jsonFileLogDriver, }, } services = append(services, config) } return &composeV3.Config{ Version: composeVersion, Services: services, }, nil }