使用 Ruby 将文件上传到 S3 时出现 aws::Errors::MissingRegionError



我正在按照这里的教程进行操作:http://docs.aws.amazon.com/AmazonS3/latest/dev/UploadObjSingleOpRuby.html 为了了解如何使用 Ruby 将文件上传到 S3,我写了这篇文章:

require 'aws-sdk'
s3 = Aws::S3::Client.new(
access_key_id: '.......',
secret_access_key: '........'
)
s3 = Aws::S3::Resource.new(region:'us-east-1')
obj = s3.bucket('aws-adms-whitelisting-rules').object('test')
obj.upload_file('~/Desktop/ruby/test.rb') 

但出现以下错误:

/Library/Ruby/Gems/2.0.0/gems/aws-sdk-core-2.10.7/lib/aws-sdk-core/plugins/regional_endpoint.rb:34:in `after_initialize': missing region; use :region option or export region name to ENV['AWS_REGION'] (Aws::Errors::MissingRegionError)
from /Library/Ruby/Gems/2.0.0/gems/aws-sdk-core-2.10.7/lib/seahorse/client/base.rb:84:in `block in after_initialize'
from /Library/Ruby/Gems/2.0.0/gems/aws-sdk-core-2.10.7/lib/seahorse/client/base.rb:83:in `each'
from /Library/Ruby/Gems/2.0.0/gems/aws-sdk-core-2.10.7/lib/seahorse/client/base.rb:83:in `after_initialize'
from /Library/Ruby/Gems/2.0.0/gems/aws-sdk-core-2.10.7/lib/seahorse/client/base.rb:21:in `initialize'
from /Library/Ruby/Gems/2.0.0/gems/aws-sdk-core-2.10.7/lib/seahorse/client/base.rb:105:in `new'
from /Library/Ruby/Gems/2.0.0/gems/aws-sdk-resources-2.10.7/lib/aws-sdk-resources/resource.rb:169:in `extract_client'
from /Library/Ruby/Gems/2.0.0/gems/aws-sdk-resources-2.10.7/lib/aws-sdk-resources/resource.rb:15:in `initialize'
from test.rb:35:in `new'
from test.rb:35:in `<main>'

你能告诉我一条前进的道路吗?谢谢

执行此操作的更标准方法是将区域作为参数传递给您创建的Aws::S3::Client实例。

然后,您只需将Aws::S3::Client(文档(的实例传递给您正在创建的Aws::S3::Resource(文档(。

例如:

require 'aws-sdk'
s3 = Aws::S3::Client.new(
region: 'us-east-1',
access_key_id: '.......',
secret_access_key: '........'
)
resource = Aws::S3::Resource.new(client: s3)
obj = resource.bucket('aws-adms-whitelisting-rules').object('test')
obj.upload_file('~/Desktop/ruby/test.rb') 

最新更新