使用Ruby和AWS-SDK拉EC2标签 [英] Using ruby and aws-sdk to pull ec2 tags
问题描述
伙计们, 我试图通过红宝石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屋!