使用Ruby和AWS-SDK拉EC2标签 [英] Using ruby and aws-sdk to pull ec2 tags

查看:243
本文介绍了使用Ruby和AWS-SDK拉EC2标签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

伙计们,   我试图通过红宝石AWS-SDK和IAM角色的EC2标签拉。的code以下位会产生以下错误。我究竟做错了什么?

 需要'rubygems的'
要求AWS-SDK
要求文件实用程序

EC2 = AWS :: EC2.new()

实例ID =`wget的-q -O  -  HTTP:// 169.254.169.254 /最新/元数据/实例ID`
OUTDIR =/选择/事实/标签/

除非File.directory?(outdir)
  FileUtils.mkdir_p(OUTDIR)
结束

EC2 = AWS :: EC2.new()
例如= ec2.instances [实例ID]
标签= instance.tags

tags.each做|民|
  File.open方法(OUTDIR + NUM [0],W)做| F |
    f.write(NUM [1])
  结束
结束
 

下面的输出:

  /usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/core/http/connection_pool.rb:127:in`session_for :未定义的方法`continue_timeout ='为#<网:: HTTP ec2.us-east-1.amazonaws.com:443开放=假> (NoMethodError)
从/usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/core/http/net_http_handler.rb:52:in'把手'
从/usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/core/client.rb:236:in`make_sync_request
从/usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/core/client.rb:262:in`retry_server_errors
从/usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/core/client.rb:229:in`make_sync_request
从/usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/core/client.rb:489:in`client_request
从/usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/core/client.rb:371:in`log_client_request
从/usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/core/client.rb:457:in`client_request
从/usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/core/client.rb:353:in`return_or_raise
从/usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/core/client.rb:456:in`client_request
从(EVAL):3:`describe_tags
从/usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/ec2/filtered_collection.rb:44:in'送'
从/usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/ec2/filtered_collection.rb:44:in`filtered_request
从/usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/ec2/resource_tag_collection.rb:156:in`每个
从./puppetclient.rb:22
 

解决方案

这似乎是,今天已报告的错误:的未定义的方法`continue_timeout =',你可以尝试指向git仓库的主要分支,因为有已经是一个补丁吧。

编辑:

您已经可以指向了最新版本的的RubyGems ,因为他们已经部署在固定版本1.9.1 https://rubygems.org/gems/aws-sdk

Folks, I am trying to pull in the EC2 tags via ruby aws-sdk and iam roles. The following bit of code produces error below. What am I doing wrong?

require 'rubygems'
require 'aws-sdk'
require 'fileutils'

ec2 = AWS::EC2.new()

instance_id = `wget -q -O - http://169.254.169.254/latest/meta-data/instance-id`
outdir = '/opt/facts/tags/'

unless File.directory?(outdir)
  FileUtils.mkdir_p(outdir)
end

ec2= AWS::EC2.new()
instance = ec2.instances[instance_id]
tags = instance.tags

tags.each do |num|
  File.open(outdir+num[0], "w") do |f|
    f.write(num[1])
  end
end

Following output:

/usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/core/http/connection_pool.rb:127:in `session_for': undefined method `continue_timeout=' for #<Net::HTTP ec2.us-east-1.amazonaws.com:443 open=false> (NoMethodError)
from /usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/core/http/net_http_handler.rb:52:in `handle'
from /usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/core/client.rb:236:in `make_sync_request'
from /usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/core/client.rb:262:in `retry_server_errors'
from /usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/core/client.rb:229:in `make_sync_request'
from /usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/core/client.rb:489:in `client_request'
from /usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/core/client.rb:371:in `log_client_request'
from /usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/core/client.rb:457:in `client_request'
from /usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/core/client.rb:353:in `return_or_raise'
from /usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/core/client.rb:456:in `client_request'
from (eval):3:in `describe_tags'
from /usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/ec2/filtered_collection.rb:44:in `send'
from /usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/ec2/filtered_collection.rb:44:in `filtered_request'
from /usr/lib/ruby/gems/1.8/gems/aws-sdk-1.9.0/lib/aws/ec2/resource_tag_collection.rb:156:in `each'
from ./puppetclient.rb:22

解决方案

That seems to be a bug that was already reported today: undefined method `continue_timeout=', you could try pointing to the main branch of the git repository since there's already a patch for it.

Edit:

You can already point the latest version in rubygems since they already deployed the fix on version 1.9.1: https://rubygems.org/gems/aws-sdk

这篇关于使用Ruby和AWS-SDK拉EC2标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆