如何通过 aws cli 找出 ec2 实例的私有 IP 和公共 IP?

如何通过 aws cli 找出 ec2 实例的私有 IP 和公共 IP?

我到目前为止找到的答案(例如查找 EC2 服务器的公网 IP 地址) 建议使用wgetcurl访问服务器。

它们对我没有用,因为我的 ec2 实例无法直接从互联网访问。

我努力了

aws ec2 --profile prod describe-instances --filters Name=instance-id,Values=i-00914683ababcba7eb1

但返回的JSON结果中没有IP。

我可以使用哪个awsCLI 命令来检索此信息?

答案1

通常您可以使用 --query filter 来完成。

如果您只需要私有IP地址:

aws --region YOUR-AWS-REGION \
ec2 describe-instances \
--filters \
"Name=instance-state-name,Values=running" \
"Name=instance-id,Values=i-00914683ababcba7eb1" \
--query 'Reservations[*].Instances[*].[PrivateIpAddress]' \
--output text

如果你只需要公网 IP 地址:

aws --region YOUR-AWS-REGION \
ec2 describe-instances \
--filters \
"Name=instance-state-name,Values=running" \
"Name=instance-id,Values=i-00914683ababcba7eb1" \
--query 'Reservations[*].Instances[*].[PublicIpAddress]' \
--output text

或者你可以同时拥有两者:

aws --region YOUR-AWS-REGION \
ec2 describe-instances \
--filters \
"Name=instance-state-name,Values=running" \
"Name=instance-id,Values=i-00914683ababcba7eb1" \
--query 'Reservations[*].Instances[*].[PrivateIpAddress, PublicIpAddress]' \
--output text

当然,你也可以以 json 格式输出。只需更改--output text--output json

有关 --query 过滤器的更多信息。

答案2

使用标签名称搜索

aws ec2 describe-instances --filters "名称=标签:名称,值=我的实例“--查询‘预订[].实例[].{实例:InstanceId、操作系统:平台详细信息、状态:状态、私有IP地址:私有IP地址、公共IP地址:公共IP地址、标签:标签}'

答案3

事实证明我能做到这一点

aws ec2 --profile prod describe-instances \
--filters Name=instance-id,Values=i-0f47d09e1d9659981 \
| jq ".Reservations[0].Instances[0].NetworkInterfaces[0].PrivateIpAddress"

它会返回

10.0.9.7

NetworkInterfaces问题中的命令失败了,因为碰巧那个实例正在关闭。所以结果中没有这个部分。

相关内容