我到目前为止找到的答案(例如查找 EC2 服务器的公网 IP 地址) 建议使用wget
或curl
访问服务器。
它们对我没有用,因为我的 ec2 实例无法直接从互联网访问。
我努力了
aws ec2 --profile prod describe-instances --filters Name=instance-id,Values=i-00914683ababcba7eb1
但返回的JSON结果中没有IP。
我可以使用哪个aws
CLI 命令来检索此信息?
答案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
答案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
问题中的命令失败了,因为碰巧那个实例正在关闭。所以结果中没有这个部分。