无法使用ruby aws-sdk v2在S3中创建存储桶

时间:2015-02-05 18:31:39

标签: ruby amazon-s3 aws-sdk

尝试使用ruby aws-sdk版本2在S3帐户中创建新存储桶时,我总是遇到以下异常:

NoMethodError: undefined method `location_name' for nil:NilClass
  index_members_by_location_name at /home/ubuntu/.rvm/gems/jruby-1.7.4/gems/aws-sdk-core-2.0.21/lib/seahorse/model/shapes.rb:283
...

我使用正确的区域和正确的凭据初始化了S3客户端。以下是我的示例代码的一部分:

...
s3 = Aws::S3::Client.new(region: region, credentials: credentials)

bucket = s3.create_bucket(bucket: 'mynewbucket')
puts bucket.inspect

# List the available buckets
puts "Available buckets:"
resp = s3.list_buckets
resp.buckets.each do |bucket|
    puts bucket.inspect
end

需要注意的是,列出存储桶的代码运行正常。 谁知道我做错了什么?

修改

我甚至添加了此代码以列出现有存储桶中的对象,并且它会抛出与上面完全相同的错误:

resp = s3.list_objects(bucket: 'existingbucket')
resp.contents.each do |object|
  puts "#{object.key} => #{object.etag}"
end

1 个答案:

答案 0 :(得分:2)

该错误是由JRuby 1.7.4中的错误以及它如何处理可枚举的#inject和#each.with_object引起的。升级JRuby将解决此问题。