【问题标题】:Find unassigned Elastic IPs查找未分配的弹性 IP
【发布时间】:2015-12-20 19:17:49
【问题描述】:

我正在尝试使用 Fog 查找所有未分配的弹性 IP,但似乎 Fog::Compute::AWS::Addresses 中的过滤不允许您过滤空值。

例如,

ips = Fog::Compute.new(credentials).addresses.all('domain' => 'vpc', 'instance-id' => '')

返回一个空数组,但是

ips = Fog::Compute.new(credentials).addresses.all('domain' => 'vpc').find_all {|eip| eip.server.nil? }

我正在寻找的列表中的结果。但是,我们有大量的弹性 IP,而后一种方法非常慢。

有什么方法可以过滤 Fog 中的空值吗?或者也许是一种更有效的方式来梳理结果以获得我正在寻找的列表?

【问题讨论】:

  • 为什么不'instance-id' => nil
  • @Beartech 这也导致了一个空数组。
  • 我对您使用的系统不熟悉,但是您可以使用.where()吗?如 `.addresses.where( 'domain' => 'vpc' ).where( 'instance-id' => '' ) 。
  • 第二个有效的事实让我认为该列是null,因为.nil? 在该查询中返回true。但是像'' 这样的空白字符串不是零。
  • @Beartech 是请求后映射到模型的 REST API。我怀疑问题出在 Fog 的参数构造函数中,因为我知道 Amazon 的 API 能够过滤空白值。

标签: ruby amazon-web-services fog


【解决方案1】:

我找不到我的问题的确切答案,但我找到了一种更快的方法来完成我的任务。 eip.server 将触发 Fog 尝试查找服务器资源,因此如果您可以通过使用 eip.server_id 来获得更快的结果。即,

ips = Fog::Compute.new(credentials).addresses.all('domain' => 'vpc').find_all {|eip| eip.server_id.nil? }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 2018-07-28
    • 1970-01-01
    • 2013-11-10
    • 2018-11-01
    相关资源
    最近更新 更多