获取从aws cli运行的ecs任务的外部链接

时间:2016-08-30 05:47:14

标签: amazon-web-services aws-cli amazon-ecs

如何获取正在运行的aws ecs任务的外部链接,其中包含容器实例的公共ip和正在运行的任务的端口?

我正在管理来自cli的任务/服务执行,并希望从aws cli获取aws UI中显示的外部链接。我尝试了aws cli的describe-tasks命令,但它没有返回正在运行任务的实例的公共IP地址。

有没有办法从aws cli中获取相同的内容?

提前致谢!

3 个答案:

答案 0 :(得分:3)

这确实是脖子上的疼痛,但是它将满足您的要求:

  1. 按服务名称列出您的任务

aws ecs list-tasks --cluster mycluster --service-name my-service-name

  1. 使用上面的任务ARN获取任务的详细信息。

aws ecs describe-tasks --cluster mycluster --tasks arn:aws:ecs:us-east-1:999999999999:task/ad0ba3e9-ac3b-4a4c-a1af-de3e06f46dfa

  1. 任务描述包括您需要的两条信息:网络绑定(包括端口(查找映射到您关心的服务端口的端口))和容器实例ARN。 (不是容器ARN。不要犯该错误,并且在下一步失败时会感到困惑,就像我一样)。使用容器实例的ARN,获取容器实例的详细信息:

aws ecs describe-container-instances --cluster mycluster --container-instances arn:aws:ecs:us-east-1:999999999999:container-instance/707e5193-51e3-454b-ba09-9745c5d7f527

  1. 作为此描述的一部分,您应该能够获取EC2实例ID并查询EC2以获得更多详细信息:

aws ec2 describe-instances --instance-ids i-c91aee40d92c23b3c ^^^^ NOT ECS

此命令的输出应包括EC2实例的专用IP。此IP +先前计算的端口应对应于Web UI的外部链接。

注意:数据已被匿名处理,但仍应看起来像您期望看到的那样。另外,我省略了AWS区域和配置文件参数,这些参数已使用环境变量设置为默认值。

答案 1 :(得分:2)

这应该显示您的Ingress IP地址,这是一个公共URL,然后通常使用AWS route53控制台作为A类记录映射到您的域,这样您的用户只需使用您的URL domain.com/lalala

aws ecs describe-services --service my-http-service

发现这个命令和其他人一般aws命令行工具实际上非常友好......只是问题

aws help

然后查看可用子命令的顶级列表,然后通过发出

进行深入研究
aws ecs help

并在上面重复深入挖掘可用命令,直到找到可行的方式......如

ecs ecs describe-services help

答案 2 :(得分:1)

您可以通过以下方式获得所需的答案:

aws ecs describe-tasks --cluster foo --tasks 8591006e-6f05-4886-bc4a-58d9063d3852

这将包含networkBindings部分,如下所示:

"networkBindings": [
                    {
                        "protocol": "tcp", 
                        "bindIP": "0.0.0.0", 
                        "containerPort": 7000, 
                        "hostPort": 32769
                    }, 
                    {
                        "protocol": "tcp", 
                        "bindIP": "0.0.0.0", 
                        "containerPort": 7001, 
                        "hostPort": 32768
                    }
                ]

然后你是金色的!