如何在 Amazon EC2 上获取所有公共 IP 及其实例名称的列表
Posted
技术标签:
【中文标题】如何在 Amazon EC2 上获取所有公共 IP 及其实例名称的列表【英文标题】:How to get a list of all public IPs and their instance names on Amazon EC2 【发布时间】:2014-11-09 14:50:14 【问题描述】:有人知道如何使用 aws CLI 在 Amazon EC2 上获取所有公共 IP 及其实例名称的列表吗?
这让我得到了公共 IP 的列表,但没有得到它们关联的实例名称。 aws ec2 describe-instances --query "Reservations[].Instances[].PublicIpAddress" --输出文本
提前致谢。
【问题讨论】:
aws ec2 describe-instances --query "Reservations[].Instances[].Tags[].[Key,Value]" 给出了实例的名称和其他标签,但我该如何给出只是名称标签,还有公共 IP? How do I get a simple list of my public IP addresses 的可能重复项 【参考方案1】:http://docs.aws.amazon.com/cli/latest/userguide/controlling-output.html
更新:CLI 现在支持过滤器:
aws ec2 describe-instances --query "Reservations[].Instances[].[PublicIpAddress,InstanceId,Tags[?Key=='Name'].Value]"
【讨论】:
这让我得到了实例 ID 和公共 IP,但我需要带有实例名称的标签。【参考方案2】:使用这个就可以了:
aws ec2 describe-instances --output table --query 'Reservations[].Instances[].[Tags[?Key==`Name`] | [0].Value, PublicIpAddress]'
【讨论】:
【参考方案3】:为那些在搜索如何获取实例信息时通常会找到此帖子的人添加此内容。
在 powershell 中,您可以使用以下内容:
(Get-EC2Instance -ProfileName Profile).Instances | select InstanceId,PrivateIPAddress,PublicIpAddress @Name="Servername";
Expression=$_.tags | where key -eq "Name" | select Value -expand Value | Format-Table.
借助 Python AWS CLI,您可以使用:
aws ec2 describe-instances --region=us-east-1 --query 'Reservations[*].Instances[*].[InstanceId,Tags[?Key==`Name`].Value|[0],PrivateIpAddress,PublicIpAddress]' --output text --profile ProfileName
【讨论】:
以上是关于如何在 Amazon EC2 上获取所有公共 IP 及其实例名称的列表的主要内容,如果未能解决你的问题,请参考以下文章
在 Amazon EC2 实例上阻止与 GeoServer 的公共连接
如何使用 Amazon .NET 库列出所有 EC2 实例?
了解 Amazon 为 EC2 实例分配的公共 DNS 的使用以及弹性 IP 的重要性