4

Согласно документации определений задач ECS, мы определяем сопоставления портов.AWS EC2 Container Service/Elastic Beanstalk Docker Container Port udp binding

"portMappings": [ 
    { 
     "containerPort": integer, 
     "hostPort": integer 
    } 
    ... 
] 

По умолчанию это порт связывания через tcp. Как достичь udp привязки портов к контейнерам докеров, работающим в AWS Elastic Beanstalk (Multi-container) или с AWS ECS?

ответ

2

Поддержка UDP по-прежнему отсутствует в выпуске GA Amazon EC2 Container Service, см. Ports are assumed to be TCP (issue #2) of Amazon ECS Container Agent. К счастью, этот неожиданный разрыв уже был рассмотрен, и новая версия агента ECS - в ожидании выпуска - Я ожидаю, что этот выпуск произойдет в ближайшее время, и команда AWS Elastic Beanstalk обычно быстро обновляет свои официальные изображения со временем (следите за Elastic Beanstalk forum для заявлений).

+0

Я считаю, что это все еще не поддерживается на эластичном бобовом стебле. Может ли кто-нибудь подтвердить это? Грустно, что это заставляет их так долго. Мухи в отличие от вышеприведенного утверждения о том, что они «быстрые» 6 месяцев, конечно, не соответствуют моим стандартам. –

1

@ ответ JRC является правильным. Я протестировал его с изображением стека с графическим изображением Raintank's, raintank/graphite-stack, на многоконтейнерной среде Docker на эластичном бобовом стебле (что в отличие от одноконтейнерной среды Docker, которая использует nginx как обратный прокси-сервер к порту контейнера и не поддерживает мульти -ports и UDP, является интерфейсом для ECS). Соответствующие Dockerrun.aws.json выглядит следующим образом:

{ 
    "AWSEBDockerrunVersion": 2, 
    "containerDefinitions": [ 
    { 
     "name": "stack", 
     "image": "raintank/graphite-stack", 
     "essential": true, 
     "memory": 850, 
     "portMappings": [ 
     { 
      "containerPort": 3000, 
      "hostPort": 80 
     }, 
     { 
      "containerPort": 8125, 
      "hostPort": 8125, 
      "protocol": "udp" 
     } 
     ] 
    } 
    ] 
} 

Затем, войдя в соответствующий экземпляр EC2 и набрав sudo docker ps дает:

CONTAINER ID  IMAGE       COMMAND     CREATED    STATUS    PORTS                  NAMES 
12a5711dab47  raintank/graphite-stack   "/usr/bin/supervisord" 2 minutes ago  Up 2 minutes  443/tcp, 2003/tcp, 8125/tcp, 0.0.0.0:8125->8125/udp, 0.0.0.0:80->3000/tcp ecs-awseb-test-abc-1-stack-abc 
930a9b814df4  amazon/amazon-ecs-agent:latest "/agent"     3 minutes ago  Up 3 minutes                     ecs-agent 

Выдача statsd UDP пакет вручную, echo "test.statsd:1|c" | nc -w 1 -u test.aws-region.elasticbeanstalk.com 8125, я вижу, что появляется в графите ,