ecs-cli通过负载均衡器组成服务

时间:2018-12-22 19:07:54

标签: amazon-web-services docker amazon-ecs

我正在尝试使用ecs-cli compose在Amazon ECS上管理我的服务和任务。

我找不到使用service up命令通过应用程序负载平衡器创建新服务的方法(即使该负载平衡器已经存在)。

使用service create似乎可以实现,但是API与service up API不同,而且我不确定如何使用create来指定参数。而且通常最好只使用up命令以保持一致性。文档非常分散,做相同的事情有很多不同的方法,只是想知道这里有什么最佳实践。任何建议,不胜感激。

值得一提的是,只要我具有现有的任务定义,并且在指定负载均衡器时通过Amazon AWS GUI创建服务,一切都对我有用。因此,我正在考虑将我所有的撰写配置移至task-definition.json并直接与aws ecs cli一起使用。

我有一个有效的docker-compose.yml文件:

# docker-compose.yml

version: "3"

services:
  application:
    image: ${IMAGE_ARN}
    command: npm start
    ports:
      - "8000:8000"
  nginx:
    image: ${IMAGE_ARN}
    ports:
      - "80:80"

以及随附的ecs-params.yml文件:

# ecs-params.yml

version: 1

task_definition:
  task_role_arn: ${ROLE_ARN}
  task_execution_role: ${ROLE_ARN}
  ecs_network_mode: awsvpc
  task_size:
    mem_limit: 0.5GB
    cpu_limit: 256
  container_definitions:
    - name: application
    - name: nginx

run_params:
  network_configuration:
    awsvpc_configuration:
      assign_public_ip: ENABLED
      subnets:
        - ${SUBNET_1_ID}
        - ${SUBNET_2_ID}
      security_groups:
        - ${SECURITY_GROUP_ID}

我运行来启动该服务的命令是:

ecs-cli compose service up \
--file docker-compose.yaml \
--ecs-params ecs-params.yaml \
--project-name service-name

通过该命令指定负载均衡器配置的任何方法吗?

1 个答案:

答案 0 :(得分:3)

似乎最新的ecs-cli版本确实支持负载均衡器配置以及服务启动。

您是否尝试提供--target-group-arn选项?假设您已经创建了ALB和目标组来关联ECS服务。这是我刚刚测试过的示例命令。

ecs-cli compose --file docker-compose.yaml --project-name nginx \
--ecs-params ecs-params.yaml service up \
--target-group-arn "arn:aws:elasticloadbalancing:us-east-1:xxxxxxxx:targetgroup/awsvpc-nginx/2bf8921935c827bd" \
--container-name nginx --container-port 80

注意-

  1. target-group-arncontainer-namecontainer-port选项对于负载均衡器关联是必需的,并且必须在service up之后的命令中提供。
  2. 我看到您正在尝试使用awsvpc模式执行任务。我不确定您是否尝试启动EC2或Fargate类型的启动容器。
  3. 如果您确实希望使用awsvpc模式,请确保您的负载均衡器目标组创建的目标类型为ip而不是instance
  4. 如果您使用的是EC2启动类型,但是处于awsvpc模式,请确保EC2 AMI是Amazon-ECS优化AMI。如果您使用的是Fargate类型,那么您的assign_public_ip应该为DISABLED

请让我知道您的反馈。

参考- https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cmd-ecs-cli-compose-service.html

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html