Связь между контейнерами в определении задачи ECS - PullRequest
0 голосов
/ 02 октября 2019

У меня есть определение задачи в ECS, работающем в режиме awsvpc, содержащем 2 док-контейнера. У меня вопрос, как я могу общаться между контейнерами в определении задачи. Они действуют подобно docker-compose?

Ответы [ 2 ]

0 голосов
/ 03 октября 2019

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

Вот архитектура системы

enter image description here

И мы будем использовать Обнаружение службы для задачи регистрации в службе (задача Fargate / EC2)

Это пример того, как запустить одну службу в ECS с CloudFormation

...
Resources:

    DiscoveryService:
        Type: AWS::ServiceDiscovery::Service
        Properties:
          DnsConfig:
            RoutingPolicy: MULTIVALUE
            DnsRecords:
              - TTL: 60
                Type: A
              - TTL: 60
                Type: SRV
          HealthCheckCustomConfig:
            FailureThreshold: 1
          Name: !Ref ServiceName
          NamespaceId: !Ref PrivateNamespaceId // Example: ns-foobar
...
    Service:
        Type: AWS::ECS::Service
        DependsOn: LoadBalancerRule
        Properties:
            Cluster: !Ref ClusterName
            LaunchType: "FARGATE"
            DesiredCount: !Ref DesiredCount
            ...
            ServiceRegistries:
                - RegistryArn: !GetAtt DiscoveryService.Arn
                  Port: 80 // Container port and service port

Вотрезультат

enter image description here

После этого вы можете использовать curl переопределение команды для контейнера для тестирования:

enter image description here

0 голосов
/ 02 октября 2019

Концепция связывания действительна только в случае службы типа AWS ec2, вы не можете использовать связывание в awsvpc сетевом режиме. связь между задачами разрешена только в том контейнере, который является частью одного и того же определения задачи, это означает, что вы должны запустить два контейнера в одном и том же определении задачи, чтобы создать связь, аналогичную docker-compose.

links
Type: string array

Required: no

Параметр link позволяет контейнерам связываться друг с другом без необходимости сопоставления портов. Поддерживается только в том случае, если в сетевом режиме определения задачи установлен мост. Конструкция name:internalName аналогична name:alias в ссылках Docker. Допускается использование до 255 букв (прописных и строчных), цифр, дефисов и подчеркиваний.

Примечание

Этот параметрне поддерживается для контейнеров или задач Windows, использующих сетевой режим awsvpc.

определение контейнера в задачах

Вы можете использовать обнаружение службы в случае AWS VPC - рекомендуемый подход AWS в случае настроения AWSvpc.

...