获取当前EC2实例的公共IP地址

oba*_*sta 51 amazon-ec2 amazon-web-services

使用Amazon CLI,有没有办法获取当前EC2的公共IP地址?我只是在寻找单个字符串值,所以不是json响应describe-addresses返回.

Joh*_*ein 80

在AWS命令行界面(CLI)可用于返回任何信息/所有的Amazon EC2实例,如:

$ aws ec2 describe-instances --instance-ids i-0c9c9b44b --query 'Reservations[*].Instances[*].PublicIpAddress' --output text

54.232.200.77
Run Code Online (Sandbox Code Playgroud)

如果您正在寻找有关执行该命令的EC2实例的信息,则可以通过实例元数据服务获取当前IP地址:

$ curl http://169.254.169.254/latest/meta-data/

ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
hostname
iam/
instance-action
instance-id
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
profile
public-hostname
public-ipv4
public-keys/
reservation-id
security-groups
services/
Run Code Online (Sandbox Code Playgroud)

因此,私有IP地址可通过以下方式获得:

$ curl http://169.254.169.254/latest/meta-data/local-ipv4

172.31.10.221
Run Code Online (Sandbox Code Playgroud)

在公共IP地址可通过:

$ curl http://169.254.169.254/latest/meta-data/public-ipv4

54.232.200.77
Run Code Online (Sandbox Code Playgroud)


Duk*_*gal 18

curl http://checkip.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

这将返回公共IP地址。


mar*_*xor 7

如果您在实例内 -

$ curl icanhazip.com
162.202.17.123
Run Code Online (Sandbox Code Playgroud)

这是另一种方式

$ curl -s ifconfig.me
162.202.17.123
Run Code Online (Sandbox Code Playgroud)

这些方法不仅限于 AWS。

  • 就我个人而言,我尝试避开这些网站,因为我无法控制它们在公共地址周围捕获和记录的内容。最好根据其他答案在您自己的基础设施、aws cli 或 169.254.169.254 上使用受控端点。 (2认同)