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

Ant*_*ong 8 amazon-ec2 aws-cli

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

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

我试过了

 aws ec2 --profile prod describe-instances --filters Name=instance-id,Values=i-00914683ababcba7eb1
Run Code Online (Sandbox Code Playgroud)

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

我可以使用什么 aws cli 命令来检索此信息?

Pey*_*rov 12

通常,您可以使用 --query 过滤器来完成。

如果您只需要私有 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
Run Code Online (Sandbox Code Playgroud)

如果您只需要公共 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
Run Code Online (Sandbox Code Playgroud)

或者你可以同时拥有:

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
Run Code Online (Sandbox Code Playgroud)

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

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