5

任何人都可以为我提供一个很好的文档来使用 asw-sdk 版本 2 将文件上传到 S3。我检查了主文档,在 v1 中我们曾经这样做过

s3 = AWS::S3.new
obj = s3.buckets['my-bucket']

现在在 v2 中,当我尝试

s3 = Aws::S3::Client.new

我结束了

Aws::Errors::MissingRegionError: missing region; use :region option or export region name to ENV['AWS_REGION']

谁能帮我这个?

4

3 回答 3

3

根据官方文档

要使用 Ruby SDK,您必须配置区域和凭据。

所以,

s3 = Aws::S3::Client.new(region:'us-west-2')

或者,可以从以下位置之一加载默认区域:

Aws.config[:region]
ENV['AWS_REGION']
于 2015-03-03T05:58:53.533 回答
3

这是对我有用的关于 aws v2 gem 的完整 S3 演示:

Aws.config.update(
  region: 'us-east-1',
  credentials: Aws::Credentials.new(
    Figaro.env.s3_access_key_id,
    Figaro.env.s3_secret_access_key
  )
)
s3 = Aws::S3::Client.new
resp = s3.list_buckets
puts resp.buckets.map(&:name)

要旨

AWS 区域 ID 的官方列表在这里。

如果您不确定该地区,最好的猜测是美国标准,它具有us-east-1用于配置目的的 ID,如上所示。

于 2015-04-27T17:38:08.247 回答
1

如果您在 Rails 中使用aws.yml文件作为凭证,您可能需要创建一个config/initializers/aws.rb包含以下内容的文件:

filename = File.expand_path(File.join(Rails.root, "config", "aws.yml"))
config = YAML.load_file(filename)
aws_config = config[Rails.env.to_s].symbolize_keys

Aws.config.update({
                  region: aws_config[:region],
                  credentials: Aws::Credentials.new(aws_config[:access_key_id], aws_config[:secret_access_key])
              })

config/aws.yml文件需要成为适配器才能包含该区域。

development: &development
  region: 'your region'
  access_key_id: 'your access key'
  secret_access_key: 'your secret access key'
production:
  <<: *development
于 2015-10-20T23:30:03.527 回答