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

Fetch external link of ecs task running from aws cli

如何获取 aws ecs 任务 运行 的外部 link,它具有容器实例的 public ip 和任务 运行 的端口?

我正在从 cli 管理 task/service 执行,并希望从 aws cli 获取 aws UI 中显示的外部 link。我尝试了 aws cli 的 describe-tasks 命令,但它没有 return 任务 运行 所在实例的 public IP 地址。

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

提前致谢!

这应该会显示您的入口 IP 地址,它是一个 public URL,然后通常使用 AWS route53 控制台将其作为 A 类记录映射到您的域,以便您的用户只需使用您的 URL 域名。com/lalala

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

为了发现这个命令和其他命令,aws 命令行工具实际上非常友好...只需发出

aws help

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

向下钻取
aws ecs help

并重复上述操作,深入了解可用命令,直到找到可行的命令...如

ecs ecs describe-services help

您可以通过运行:

找到您想要的答案
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
                    }
                ]

那你就是金子!

这很让人头疼,但它会如你所愿:

  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 + 先前计算的端口应对应来自网络 UI.

的外部 link

注意:数据已被匿名化,但看起来应该与您预期的一样。我还省略了 AWS 区域和配置文件参数,我已使用环境变量将其设置为默认值。