如何使用 Ruby SDK 从 AWS 获取公共 IP 地址

Posted

技术标签:

【中文标题】如何使用 Ruby SDK 从 AWS 获取公共 IP 地址【英文标题】:How to get public ip address from AWS with Ruby SDK 【发布时间】:2016-12-15 18:10:33 【问题描述】:

我是 AWS 的新手。

我想从 Ruby SDK 获取公共 IP 地址,但找不到如何获取它。

需要'aws-sdk'

ec2 = Aws::EC2::Resource.new(region: 'us-west-2')

i = ec2.instance('i-XXXXXX')

用这两个命令,我只得到状态和代码。

公网IP地址在我们关闭实例时通常会发生变化,如何获取?

提前致谢

【问题讨论】:

也许这很难看,但你可以做一个 curl 调用。像这样;卷曲169.254.169.254/latest/meta-data/public-ipv4 感谢您的回复。是的,通过该解决方案,我们可以获得公共 IP 地址。我尝试使用编程方式来处理它。我可以在 Java SDK 中找到,但在 Ruby SDK 中找不到。 【参考方案1】:

一旦您拥有Instance 对象(在您的情况下为i 变量),请使用public_ip_address 属性来引用您的EC2 实例的公共IP 地址。

例子:

require 'aws-sdk'
ec2 = Aws::EC2::Resource.new(region: 'us-west-2')
i = ec2.instance('i-XXXXXX')
publicIp = i.public_ip_address

文档:http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Instance.html#public_ip_address-instance_method

【讨论】:

谢谢。这是新手的错。当我打印“I.state”并看到类型是 INstanceState 时我迷路了,所以我认为它没有公共 IP 地址。这有助于我澄清它是如何工作的干杯

以上是关于如何使用 Ruby SDK 从 AWS 获取公共 IP 地址的主要内容,如果未能解决你的问题,请参考以下文章

ruby 本要点展示了我如何使用Ruby AWS SDK,Fog和Carrierwave在我的应用程序中实现AWS假设角色功能

从Ruby中的JSON获取值

如何使用 aws java SDK 从子网 ID 获取 VPC id?

使用 aws-sdk ruby​​ gem 知道自己的实例 ID

如何从 AWS API Gateway cloudwatch 日志中获取用户的公共 IP?

AWS S3 SDK:如何从多文件上载中的进度回调中获取文件名?