Развертывание контейнеров Docker на ECS

Обзор

Интерфейс командной строки Docker Compose позволяет разработчикам использовать собственные команды Docker для запуска приложений в Amazon Elastic Container Service (ECS) при создании облачных приложений.

Интеграция между Docker и Amazon ECS позволяет разработчикам использовать интерфейс командной строки Docker Compose для:

  • Настраивает контекст AWS с помощью одной команды Docker, что позволит вам переключаться с локального контекста на облачный контекст и быстро и легко запускать приложения.

  • Упростите разработку многоконтейнерных приложений на Amazon ECS с помощью файлов Compose.

Также см. Архитектура интеграции ECS, полный список возможностей создания и Создание примеров для интеграции с ECS.

Пререквизиты

Чтобы развернуть контейнеры Docker на ECS, необходимо выполняет следующие требования:

  1. Загружает и устанавливает последнюю версию Docker Desktop.

    В качестве альтернативы устанавливает пакет Docker Compose CLI для Linux.

  2. Убедиться, что у вас есть учетная запись AWS.

Docker не только запускает многоконтейнерные приложения локально, но и позволяет разработчикам беспрепятственно развертывать контейнеры Docker в Amazon ECS с помощью файла Compose с помощью команды docker compose up. В следующих разделах содержатся инструкции по развертыванию приложения Compose в Amazon ECS.

Запуск приложения на ECS

Требования

AWS использует детализированную модель разрешений с определенной ролью для каждого типа ресурса и операции.

Чтобы гарантировать, что интеграции Docker ECS разрешено управлять ресурсами для вашего приложения Compose, вы должны убедиться, что ваши учетные данные AWS предоставить доступ к следующим разрешениям AWS IAM:

  • application-autoscaling:*

  • cloudformation:*

  • ec2: Авторизесекуритиграупингресс

  • ec2:CreateSecurityGroup

  • ec2:CreateTags

  • ec2: DeleteSecurityGroup

  • ec2:DescribeRouteTables

  • ec2:DescribeSecurityGroups

  • ec2:DescribeSubnets

  • ec2:DescribeVpcs

  • ec2:RevokeSecurityGroupIngress

  • ecs:CreateCluster

  • ecs:CreateService

  • ecs: DeleteCluster

  • ecs:DeleteService

  • ecs:DeregisterTaskDefinition

  • ecs:DescribeClusters

  • ecs:DescribeServices

  • ecs:DescribeTasks

  • ecs:ListAccountSettings

  • ecs:ListTasks

  • ecs:RegisterTaskDefinition

  • ecs:UpdateService

  • elasticloadbalancing:*

  • iam:AttachRolePolicy

  • iam:CreateRole

  • iam:DeleteRole

  • iam:DetachRolePolicy

  • iam:PassRole

  • logs:CreateLogGroup

  • logs:DeleteLogGroup

  • logs:DescribeLogGroups

  • logs:FilterLogEvents

  • route53:CreateHostedZone

  • route53:DeleteHostedZone

  • route53:GetHealthCheck

  • route53:GetHostedZone

  • route53:ListHostedZonesByName

  • servicediscovery:*

Поддержка графического процессора, которая зависит от экземпляров EC2 для запуска контейнеров с подключенными устройствами графического процессора, требует нескольких дополнительных разрешений:

  • ec2:DescribeVpcs

  • autoscaling:*

  • iam:CreateInstanceProfile

  • iam:AddRoleToInstanceProfile

  • iam:RemoveRoleFromInstanceProfile

  • iam:DeleteInstanceProfile

Создание контекста AWS

Запускает команду docker context create ecs myecscontext, чтобы создать контекст Amazon ECS Docker с именем myecscontext. Если вы уже установили и настроили интерфейс командной строки AWS, команда настройки позволяет выбрать существующий профиль AWS для подключения к Amazon. В противном случае вы можете создать новый профиль, передав Идентификатор ключа доступа AWS и секретный ключ доступа. Наконец, вы можете настроить свой контекст ECS для получения учетных данных AWS с помощью переменных среды AWS_*, что является распространенным способом интеграции со сторонними инструментами и поставщиками единого входа.

? Create a Docker context using:  [Use arrows to move, type to filter]
  An existing AWS profile
  AWS secret and token credentials
> AWS environment variables

После того, как вы создали контекст AWS, вы можете просмотреть список своих контекстов Docker, выполнив команду docker context ls:

NAME                TYPE                DESCRIPTION                               DOCKER ENDPOINT               KUBERNETES ENDPOINT   ORCHESTRATOR
myecscontext        ecs                 credentials read from environment
default *           moby                Current DOCKER_HOST based configuration   unix:///var/run/docker.sock                         swarm

Запускает приложение Compose

Вы можете развертывать мультиконтейнерные приложения, определённые в Compose files, и управлять ими в Amazon ECS с помощью команды docker compose. Сделать это:

  • Убедиться, что вы используете контекст ECS. Вы можете сделать это либо указав флаг --context myecscontext с вашей командой, либо установив текущий контекст с помощью команды docker context use myecscontext.

  • Запускает docker compose up и docker compose down, чтобы запускает, а затем останавливает полное приложение Compose.

По умолчанию docker compose up использует файл compose.yaml или docker-compose.yaml в текущей папке. Вы можете указывает рабочий каталог с помощью флага –workdir или указывает файл Compose напрямую с помощью docker compose --file mycomposefile.yaml up.

Вы также можете указывает имя для приложения Compose, используя флаг --project-name во время развертывания. Если имя не указано, имя будет получено из рабочего каталога.

Интеграция Docker ECS преобразует модель приложения Compose в множество ресурсов AWS, описываемых как шаблон Облако. Фактическое отображение приведено в техническая документация. Вы можете просмотреть сгенерированный шаблон с помощью команды docker compose convert и следовать CloudFormation, применяя эту модель в веб-консоль AWS при запуске docker compose up, в дополнение к событиям CloudFormation, отображаемым в вашем терминале.

  • Сервисы, созданные для приложения Compose в Amazon ECS, и их состояние можно просмотреть с помощью команды docker compose ps.

  • Вы можете просматривать журналы из контейнеров, которые являются частью приложения Compose, с помощью команды docker compose logs.

Также см. полный список возможностей создания.

Постоянное обновление

Чтобы обновить приложение, не прерывая рабочий процесс, вы можете просто использовать docker compose up в обновленном проекте Compose. Службы ECS создаются с конфигурацией непрерывного обновления. Когда вы запускаете docker compose up с измененным файлом Compose, стек будет обновляться, чтобы отражать изменения, и при необходимости некоторые службы будут заменены. Данный процесс замены будет следовать конфигурации последовательного обновления, заданной конфигурацией службы развернуть.update_config.

AWS ECS использует модель на основе процентов для определения количества контейнеров, которые должны быть запущены или закрыты во время последовательного обновления. Интерфейс командной строки Docker Compose вычисляет конфигурацию непрерывного обновления в соответствии с полями parallelism и replicas. Однако вы можете предпочесть напрямую настроить последовательное обновление, используя поля расширения x-aws-min_percent и x-aws-max_percent. Первый устанавливает минимальный процент контейнеров, запускаемых для обслуживания, а второй устанавливает максимальный процент запуска дополнительных контейнеров до удаления предыдущих версий.

По умолчанию скользящее обновление ECS настроено на запуск вдвое большего количества контейнеров для службы (200 %) и имеет возможность отключить 100 % контейнеров во время обновления.

Просмотр журналов приложений

Интерфейс командной строки Docker Compose настраивает сервис AWS CloudWatch Logs для ваших контейнеров. По умолчанию вы можете просматривать журналы вашего приложения Compose так же, как вы проверяете журналы локальных развертываний:

# fetch logs for application in current working directory
$ docker compose logs

# specify compose project name
$ docker compose --project-name PROJECT logs

# specify compose file
$ docker compose --file /path/to/docker-compose.yaml logs

Группа журналов создаётся для приложения как docker-compose/<application_name>, а потоки журналов создаются для каждой службы и контейнера в вашем приложении как <application_name>/<service_name>/<container_ID>.

Вы можете точно настроить журналы AWS CloudWatch, используя поле расширения x-aws-logs_retention в файле Compose, чтобы задать количество дней хранения для событий журнала. По умолчанию журналы хранятся вечно.

Вы также можете передать параметры awslogs в свой контейнер как стандартные элементы Compose file logging.driver_opts. См. документация AWS для получения подробной информации о доступных параметрах драйвера журнала.

Частные образы Docker

Интерфейс командной строки Docker Compose автоматически настраивает авторизацию, чтобы вы могли получать частные образы из реестра Amazon ECR в той же учетной записи AWS. Чтобы получает частные образы из другого реестра, включая Docker Hub, вам нужно будет создать секрет имени пользователя и пароля (или имени пользователя и токена) в Сервис AWS Secrets Manager.

Для вашего удобства Docker Compose CLI предлагает команду docker secret, поэтому вы можете управлять секретами, созданными в AWS SMS, без необходимости устанавливать AWS CLI.

Сначала создаёт файл token.json, чтобы определить имя пользователя DockerHub и токен доступа.

Инструкции по созданию маркеров доступа см. в Управление токенами доступа.

{
  "username":"DockerHubUserName",
  "password":"DockerHubAccessToken"
}

Затем вы можете создать секрет из этого файла, используя docker secret:

$ docker secret create dockerhubAccessToken token.json
arn:aws:secretsmanager:eu-west-3:12345:secret:DockerHubAccessToken

После создания вы можете использовать данный ARN в своём файле Compose, используя пользовательское расширение x-aws-pull_credentials с URI образа Docker для вашей службы.

services:
  worker:
    image: mycompany/privateimage
    x-aws-pull_credentials: "arn:aws:secretsmanager:eu-west-3:12345:secret:DockerHubAccessToken"

Примечание

Если вы устанавливает для файла Compose версию 3.8 или более позднюю, вы сможете использовать тот же файл Compose для локального развертывания с помощью docker-compose. Пользовательские расширения ECS в этом случае будут игнорироваться.

Обнаружение службы

Связь между службами по умолчанию реализована прозрачно, поэтому вы можете развертывать свои приложения Compose с несколькими взаимосвязанными службами, не изменяя compose-файл между локальным развертыванием и развертыванием ECS. Отдельные службы могут работать с различными ограничениями (память, ЦП) и правилами репликации.

Имена сервисов

Службы автоматически регистрируются интерфейсом командной строки Docker Compose на Карта облака AWS во время развертывания приложения. Они объявляются как полные доменные имена вида: <service>.<compose_project_name>.local.

Службы могут получать свои зависимости, используя имена служб Compose (как они делают при локальном развертывании с помощью docker-compose), или, при желании, использовать полные имена.

Примечание

Ни короткие имена служб, ни полные имена служб не будут разрешены, если вы не включает общедоступные имена DNS в своём VPC.

Зависимое время запуска службы и разрешение DNS

Службы планируются одновременно в ECS при развертывании файла Compose. AWS Cloud Map вводит первоначальную задержку для службы DNS, чтобы разрешить доменные имена ваших служб. Ваш код должен поддерживать эту задержку, ожидая готовности зависимых служб или добавляя сценарий ожидания в качестве точки входа в образ Docker, как приведено в Управлять порядком запуска. Обратите внимание, что необходимость ожидания зависимых служб в приложении Compose также существует при локальном развертывании с помощью docker-compose, но задержка обычно короче. Проблемы могут стать более заметными при развертывании в ECS, если службы не ждут, пока их зависимости станут доступными.

Кроме того, вы можете использовать функцию зависит_ от формата файла Compose. При этом сначала будет создана зависимая служба, а развертывание приложения будет ожидать её запуска и запуска, прежде чем начинать создание зависимых служб.

Изоляция службы

Изоляция служб реализована с помощью правил Группы безопасности, что позволяет службам, использующим общую «сеть» файлов Compose, взаимодействовать друг с другом, используя имена своих служб Compose.

Тома

Интеграция ECS поддерживает управление томами на основе Amazon Elastic File System (Amazon EFS). Чтобы файл Compose объявлял volume, интеграция ECS определит создание файловой системы EFS в шаблоне CloudFormation с политикой Retain, чтобы данные не удалялись при завершении работы приложения. Если то же приложение (то же имя проекта) будет развернуто снова, файловая система будет повторно подключена, чтобы предложить тот же пользовательский интерфейс, к которому разработчики привыкли с помощью docker-compose.

Базовый сервис компоновки, использующий том, может быть объявлен следующим образом:

services:
  nginx:
    image: nginx
    volumes:
      - mydata:/some/container/path
volumes:
  mydata:

Без конкретных параметров тома том по-прежнему должен быть объявлен в разделе volumes, чтобы составной файл был действительным (в приведённом выше примере пустая запись mydata:). При необходимости исходную файловую систему можно настроить с помощью driver-opts:

volumes:
  my-data:
    driver_opts:
      # Filesystem configuration
      backup_policy: ENABLED
      lifecycle_policy: AFTER_14_DAYS
      performance_mode: maxIO
      throughput_mode: provisioned
      provisioned_throughput: 1

Файловые системы, созданные при выполнении docker compose up в AWS, могут быть перечислены с помощью docker volume ls и удалены с помощью docker volume rm <filesystemID>.

Существующую файловую систему также можно использовать для пользователей, у которых уже есть данные, хранящиеся в EFS, или которые хотят использовать файловую систему, созданную другим стеком Compose.

volumes:
  my-data:
    external: true
    name: fs-123abcd

Доступ к тому из контейнера может привести к проблемам с разрешениями идентификатора пользователя POSIX, поскольку образы Docker могут определять произвольный идентификатор пользователя / идентификатор группы для запуска процесса внутри контейнера. Однако тот же uid:gid должен соответствовать разрешениям POSIX в файловой системе. Чтобы обойти возможный конфликт, вы можете установить тома uid и gid, которые будут использоваться при доступе к тому:

volumes:
  my-data:
    driver_opts:
      # Access point configuration
      uid: 0
      gid: 0

Секреты

Вы можете передавать секреты своим службам ECS, используя модель Docker для привязки конфиденциальных данных в виде файлов в /run/secrets. Если ваш файл Compose объявляет секрет как файл, такой секрет будет создан как часть развертывания вашего приложения в ECS. Если вы используете существующий секрет в качестве ссылки external: true в файле Compose, используйте полное ARN ECS Secrets Manager в качестве имени секрета:

services:
  webapp:
    image: ...
    secrets:
      - foo

secrets:
  foo:
    name: "arn:aws:secretsmanager:eu-west-3:1234:secret:foo-ABC123"
    external: true

Секреты будут доступны во время выполнения вашей службы в виде простого текстового файла /run/secrets/foo.

AWS Secrets Manager позволяет хранить конфиденциальные данные либо в виде простого текста (как это делает секрет Docker), либо в виде иерархического документа JSON. Вы можете использовать последний с Docker Compose CLI, используя настраиваемое поле x-aws-keys, чтобы определить, какие записи в документе JSON следует привязать в качестве секрета в контейнере службы.

services:
  webapp:
    image: ...
    secrets:
      - foo

secrets:
  foo:
    name: "arn:aws:secretsmanager:eu-west-3:1234:secret:foo-ABC123"
    x-aws-keys:
      - "bar"

При этом секрет для ключа bar будет доступен во время выполнения вашей службы в виде простого текстового файла /run/secrets/foo/bar. Вы можете использовать специальное значение *, чтобы связать все ключи в вашем контейнере.

Автоматическое масштабирование

Статическая информация службы масштабирования (без автоматического масштабирования) может быть указана с использованием обычного синтаксиса Compose:

services:
  foo:
    deploy:
      replicas: 3

Файловая модель Compose не определяет никаких атрибутов для объявления условий автоматического масштабирования. Поэтому мы полагаемся на пользовательское расширение x-aws-autoscaling для определения диапазона автоматического масштабирования, а также на ЦП * или * память для определения целевой метрики, выраженной в процентах использования ресурсов.

services:
  foo:
    deploy:
      x-aws-autoscaling:
        min: 1
        max: 10 #required
        cpu: 75
        # mem: - mutualy exlusive with cpu

IAM-роли

Ваши задачи ECS выполняются с помощью выделенной роли IAM, предоставляющей доступ к политикам AWS Managed Политика ролей выполнения задач Amazon ECS и Реестр контейнеров Amazon EC2 Только для чтения. Кроме того, если ваш сервис использует секреты, роль IAM получает дополнительные разрешения на чтение и расшифровку секретов от AWS Secret Manager.

Вы можете предоставить дополнительные управляемые политики для выполнения службы, используя x-aws-policies внутри определения службы:

services:
  foo:
    x-aws-policies:
      - "arn:aws:iam::aws:policy/AmazonS3FullAccess"

Вы также можете написать свой собственный Документ политики IAM, чтобы точно настроить роль IAM, которая будет применяться к вашей службе ECS, и использовать x-aws-role внутри определения службы для передачи документа политики в формате yaml.

services:
  foo:
    x-aws-role:
      Version: "2012-10-17"
      Statement:
        - Effect: "Allow"
          Action:
            - "some_aws_service"
          Resource:
            - "*"

Настройка шаблона CloudFormation

Интерфейс командной строки Docker Compose использует Формирование облака Амазонки для управления развертыванием приложения. Чтобы получает больший контроль над созданными ресурсами, вы можете использовать docker compose convert для создания файла стека CloudFormation из файла Compose. Это позволяет проверять определяемые им ресурсы или настраивать шаблон в соответствии со своими потребностями, а затем применять шаблон к AWS с помощью интерфейса командной строки AWS или веб-консоли AWS.

После того, как вы определили изменения, необходимые для вашего шаблона CloudFormation, вы можете включить наложения в свой файл Compose, которые будут автоматически применены к compose up. Оверлей — это объект yaml, который использует ту же структуру данных шаблона CloudFormation, что и созданная интеграцией с ECS, но содержит только атрибуты, которые нужно обновить или добавить. Он будет объединен с созданным шаблоном перед применением в инфраструктуре AWS.

Настройка конфигурации Load Balancer http HealthCheck

В то время как кластер ECS использует команду HealthCheck в контейнере для проверки работоспособности службы, балансировщики нагрузки приложений определяют свой собственный механизм HealthCheck на основе URL-адресов для маршрутизации трафика. Поскольку модель Compose не предлагает такую абстракцию (пока), применяется опция по умолчанию, который запрашивает вашу службу под /, ожидая код состояния HTTP 200.

Вы можете настроить это поведение с помощью наложения cloudformation, следуя Руководство пользователя AWS Cloud Formation для ссылки на конфигурацию:

services:
  webapp:
    image: acme/webapp
    ports:
      - "80:80"

x-aws-cloudformation:
  Resources:
    WebappTCP80TargetGroup:
      Properties:
        HealthCheckPath: /health
        Matcher:
          HttpCode: 200-499

Настройка завершения SSL с помощью балансировщика нагрузки

Вы можете использовать Application Load Balancer для обработки завершения SSL для служб HTTPS, чтобы ваш код, работающий внутри контейнера, не нуждался в этом. В настоящее время это не поддерживается интеграцией ECS из-за отсутствия эквивалентной абстракции в спецификации Compose. Однако вы можете положиться на оверлеи, чтобы включить эту функцию в сгенерированной конфигурации прослушивателей:

services:
  webapp:
    image: acme/webapp
    ports:
      - "80:80"

x-aws-cloudformation:
  Resources:
    WebappTCP80Listener:
      Properties:
        Certificates:
          - CertificateArn: "arn:aws:acm:certificate/123abc"
        Protocol: HTTPS
        Port: 443

Использование существующих сетевых ресурсов AWS

По умолчанию интерфейс командной строки Docker Compose создаёт кластер ECS для вашего приложения Compose, группу безопасности для каждой сети в вашем файле Compose в VPC по умолчанию вашей учетной записи AWS и LoadBalancer для маршрутизации трафика к вашим сервисам.

Со следующим базовым файлом компоновки интерфейс командной строки Docker Compose автоматически создаст данные конструкции ECS, включая балансировщик нагрузки, для маршрутизации трафика на открытый порт 80.

services:
  nginx:
    image: nginx
    ports:
      - "80:80"

Если в вашей учетной записи AWS нет разрешения для создания таких ресурсов или если вы хотите управлять ими самостоятельно, вы можете использовать следующие настраиваемые расширения Compose:

  • Используйте x-aws-cluster в качестве элемента верхнего уровня в файле Compose, чтобы установить идентификатор кластера ECS при развертывании приложения Compose. В противном случае для проекта Compose будет создан кластер.

  • Используйте x-aws-vpc в качестве элемента верхнего уровня в файле Compose, чтобы установить ARN VPC при развертывании приложения Compose.

  • Используйте x-aws-loadbalancer в качестве элемента верхнего уровня в файле Compose, чтобы установить ARN существующего LoadBalancer.

Последнее можно использовать для тех, кто хочет настроить доступность приложения, как правило, для использования существующего доменного имени для вашего приложения:

  1. Используйте веб-консоль AWS или интерфейс командной строки, чтобы получает идентификаторы VPC и подсетей. Вы можете получает идентификатор VPC по умолчанию и подключенные подсети, используя следующие команды интерфейса командной строки AWS:

    $ aws ec2 describe-vpcs --filters Name=isDefault,Values=true --query 'Vpcs[0].VpcId'
    
    "vpc-123456"
    $ aws ec2 describe-subnets --filters Name=vpc-id,Values=vpc-123456 --query 'Subnets[*].SubnetId'
    
    [
        "subnet-1234abcd",
        "subnet-6789ef00",
    ]
    
  2. Используйте интерфейс командной строки AWS для создания балансировщика нагрузки. Можно также использовать веб-консоль AWS, но для этого потребуется добавить хотя бы один прослушиватель, который здесь нам не нужен.

    $ aws elbv2 create-load-balancer --name myloadbalancer --type application --subnets "subnet-1234abcd" "subnet-6789ef00"
    
    {
        "LoadBalancers": [
            {
                "IpAddressType": "ipv4",
                "VpcId": "vpc-123456",
                "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-east-1:1234567890:loadbalancer/app/myloadbalancer/123abcd456",
                "DNSName": "myloadbalancer-123456.us-east-1.elb.amazonaws.com",
    <...>
    
  3. Чтобы назначить вашему приложению существующее доменное имя, вы можете настроить свой DNS с записью CNAME, указывающей на DNSName только что созданного балансировщика нагрузки, о котором сообщается при создании балансировщика нагрузки.

  4. Используйте ARN Loadbalancer для установки x-aws-loadbalancer в файле компоновки и разверните приложение с помощью команды docker compose up.

Обратите внимание, что интеграция Docker ECS не будет знать об этом доменном имени, поэтому команда docker compose ps будет сообщать URL-адреса с DNS-именем балансировщика нагрузки, а не с вашим собственным доменом.

Вы также можете использовать external: true внутри определения сети в файле Compose для Docker Compose CLI, чтобы не создавать группу безопасности, и установить name с идентификатором существующей группы безопасности, которую вы хотите использовать для сетевого подключения между службами:

networks:
  back_tier:
    external: true
    name: "sg-1234acbd"

Локальное моделирование

При развертывании приложения в ECS вы также можете полагаться на дополнительные сервисы AWS. В таких случаях ваш код должен встраивать AWS SDK и получать учетные данные API во время выполнения. AWS предлагает механизм обнаружения учетных данных, полностью реализованный SDK и основанный на доступе к службе метаданных по фиксированному IP-адресу.

После того, как вы примете данный подход, запуск вашего приложения локально для целей тестирования или отладки может быть затруднен. Поэтому мы представили возможность создания контекста для установки контекста ecs-local для обеспечения переносимости приложений между локальной рабочей станцией и облачным провайдером AWS.

$ docker context create ecs --local-simulation ecsLocal
Successfully created ecs-local context "ecsLocal"

Когда вы выбираете локальный контекст моделирования, выполнение команды docker compose up не развертывает ваше приложение в ECS. Поэтому вы должны запускать его локально, автоматически настраивая приложение Compose таким образом, чтобы оно включало в себя Локальные конечные точки ECS. Это позволяет AWS SDK, используемому кодом приложения, получать доступ к локальному фиктивному контейнеру как «API метаданных AWS» и получать учетные данные из вашего собственного локального файла конфигурации .aws/credentials.

Устанавливает интерфейс командной строки Docker Compose в Linux.

Интерфейс командной строки Docker Compose добавляет поддержку запуска и управления контейнерами в ECS.

Устанавливает необходимые компоненты

Докер 19.03 или новее

Установить скрипт

Вы можете установить новый CLI с помощью скрипта установки:

$ curl -L https://raw.githubusercontent.com/docker/compose-cli/main/scripts/install/install_linux.sh | sh

Часто задаваемые вопросы

Что означает ошибка this tool requires the "new ARN resource ID format"?

Это сообщение об ошибке означает, что для вашей учетной записи требуется новый формат идентификатора ресурса ARN для ECS. Чтобы узнать больше, см. Перенос развертывания Amazon ECS на новый формат ARN и идентификатора ресурса.

Обратная связь

Спасибо, что попробовали интерфейс командной строки Docker Compose. Ваше мнение очень важно для нас. Сообщите нам свой отзыв, создав задачу в репозитории интерфейса командной строки Compose GitHub.