ecs-cli 使用负载均衡器组合服务
ecs-cli compose service up with a load balancer
我正在尝试使用 ecs-cli compose 来管理我在 Amazon ECS 上的服务和任务。
我无法找到使用 service up
命令创建带有应用程序负载均衡器的新服务的方法(即使该负载均衡器已经存在)。
service create
似乎可行,但 API 与 service up
API 不同,我不确定如何在相同的参数中指定参数create
的方式。为了保持一致性,通常最好只使用 up
命令。文档非常分散,有很多不同的方法可以做同样的事情,只是想知道这里有什么最佳实践。非常感谢任何建议。
值得注意的是,只要我有一个现有的任务定义并在指定负载均衡器的同时通过 Amazon AWS GUI 创建我的服务,一切都对我有用。所以我正在考虑将我所有的撰写配置移动到任务-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
是否可以通过该命令指定负载平衡器配置?
最新的 ecs-cli
版本似乎支持服务启动时的负载平衡器配置。
您是否尝试过提供 --target-group-arn
选项?。假设您已经创建了 ALB 和 Target Group 来关联 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
备注 -
target-group-arn
、container-name
和 container-port
选项对于负载均衡器关联是必需的,并且必须在 service up
之后的命令中提供。
- 我看到您正在尝试使用
awsvpc
模式来完成任务。我不确定您是要启动 EC2 还是 Fargate 类型的启动容器。
- 如果您确实需要
awsvpc
模式,那么请确保您的负载均衡器目标组创建的目标类型为 ip
而不是 instance
。
- 如果您使用的是 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
我正在尝试使用 ecs-cli compose 来管理我在 Amazon ECS 上的服务和任务。
我无法找到使用 service up
命令创建带有应用程序负载均衡器的新服务的方法(即使该负载均衡器已经存在)。
service create
似乎可行,但 API 与 service up
API 不同,我不确定如何在相同的参数中指定参数create
的方式。为了保持一致性,通常最好只使用 up
命令。文档非常分散,有很多不同的方法可以做同样的事情,只是想知道这里有什么最佳实践。非常感谢任何建议。
值得注意的是,只要我有一个现有的任务定义并在指定负载均衡器的同时通过 Amazon AWS GUI 创建我的服务,一切都对我有用。所以我正在考虑将我所有的撰写配置移动到任务-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
是否可以通过该命令指定负载平衡器配置?
最新的 ecs-cli
版本似乎支持服务启动时的负载平衡器配置。
您是否尝试过提供 --target-group-arn
选项?。假设您已经创建了 ALB 和 Target Group 来关联 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
备注 -
target-group-arn
、container-name
和container-port
选项对于负载均衡器关联是必需的,并且必须在service up
之后的命令中提供。- 我看到您正在尝试使用
awsvpc
模式来完成任务。我不确定您是要启动 EC2 还是 Fargate 类型的启动容器。 - 如果您确实需要
awsvpc
模式,那么请确保您的负载均衡器目标组创建的目标类型为ip
而不是instance
。 - 如果您使用的是 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