AWS S3和x2B;Ruby SDK:如何列出存储桶

AWS S3和x2B;Ruby SDK:如何列出存储桶,ruby,amazon-web-services,amazon-s3,Ruby,Amazon Web Services,Amazon S3,我正在运行一个相当简单的程序来列出S3存储桶。有两种方法。然而,这两种方法都给了我相同的错误 方法1: 代码: 输出: /var/lib/gems/1.9.1/gems/aws-sdk-1.14.1/lib/aws/s3/client.rb:459:in `block (2 levels) in <class:Client>': uninitialized constant AWS::Core::XML::ListBuckets (NameError) 输出: /var/lib/g

我正在运行一个相当简单的程序来列出S3存储桶。有两种方法。然而,这两种方法都给了我相同的错误

方法1:

代码:

输出:

/var/lib/gems/1.9.1/gems/aws-sdk-1.14.1/lib/aws/s3/client.rb:459:in `block (2 levels) in <class:Client>': uninitialized constant AWS::Core::XML::ListBuckets (NameError)
输出:

/var/lib/gems/1.9.1/gems/aws-sdk-1.14.1/lib/aws/s3/client.rb:459:in `block (2 levels) in <class:Client>': uninitialized constant AWS::Core::XML::ListBuckets (NameError)
/var/lib/gems/1.9.1/gems/aws-sdk-1.14.1/lib/aws/s3/client.rb:459:in`block(2个级别)in':未初始化常量aws::Core::XML::ListBucket(NameError)

我做错了什么?好吧,我的代码遵循每种方法中提到的内容。这是列出bucket的最基本的代码,我做得不好。

仔细阅读错误后,我发现
aws-sdk-1.14.1
。然后我查看了AWS,发现他们发布了更新版本的Ruby SDK。它是
1.29.1

  • 所以我从ubuntu中清理了AWS SDK 1.14.1
  • 删除红宝石以及。(是1.9.1)
  • 已安装的ruby 1.9.2
    • 更新的AWS-SDK需要更新的Ruby才能工作
    • 更准确地说,AWS-SDK的较新版本有较新版本的nokogiri,而nokogiri需要ruby 1.9.2或更高版本
    • 因此,我最终从源代码处安装了ruby 1.9.2,因为我的Ubuntu是10.04,它非常旧,而且它的apt get repo只提供ruby 1.9.1
  • 已安装
    AWS-SDK 1.29.1
  • 现在我上面的代码都运行得很好


    因此,可能是较早版本的SDK导致了错误。

    在仔细阅读错误后,我发现
    aws-SDK-1.14.1
    。然后我查看了AWS,发现他们发布了更新版本的Ruby SDK。它是
    1.29.1

  • 所以我从ubuntu中清理了AWS SDK 1.14.1
  • 删除红宝石以及。(是1.9.1)
  • 已安装的ruby 1.9.2
    • 更新的AWS-SDK需要更新的Ruby才能工作
    • 更准确地说,AWS-SDK的较新版本有较新版本的nokogiri,而nokogiri需要ruby 1.9.2或更高版本
    • 因此,我最终从源代码处安装了ruby 1.9.2,因为我的Ubuntu是10.04,它非常旧,而且它的apt get repo只提供ruby 1.9.1
  • 已安装
    AWS-SDK 1.29.1
  • 现在我上面的代码都运行得很好

    因此,可能是较早版本的SDK导致了错误

    #!/usr/bin/ruby
    require 'aws-sdk'
    require 'awesome_print'
    AWS.config( :access_key_id      => 'My Access Key', 
                :secret_access_key  => 'My Secret Key',
                :region             => 'us-west-2')
    
    s3obj = AWS::S3.new
    s3obj.buckets.each do |bucket|
      puts bucket
    end
    
    /var/lib/gems/1.9.1/gems/aws-sdk-1.14.1/lib/aws/s3/client.rb:459:in `block (2 levels) in <class:Client>': uninitialized constant AWS::Core::XML::ListBuckets (NameError)