【问题标题】:AWS SDK v2 for s3适用于 s3 的 AWS 开发工具包 v2
【发布时间】:2015-10-21 07:30:03
【问题描述】:

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

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

现在在 v2 中,当我尝试 as 时

s3 = Aws::S3::Client.new

我结束了

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

谁能帮我解决这个问题?

【问题讨论】:

标签: ruby amazon-s3 ruby-on-rails-4.2 aws-sdk


【解决方案1】:

按照官方documentation

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

因此,

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

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

Aws.config[:region]
ENV['AWS_REGION']

【讨论】:

  • 我的问题是访问存储桶。以前我们有一个方法可以访问它s3.buckets['my-bucket']。好像在version2中发生了变化。
  • 应该是s3.bucket['my-bucket']
  • 是的,我也尝试过,但最终没有出现方法错误。 5] pry(main)&gt; s3 = Aws::S3::Client.new(region:'us-west-2') =&gt; #&lt;Aws::S3::Client&gt; [8] pry(main)&gt; s3.bucket[ENV['AWS_BUCKET']] NoMethodError: undefined method bucket' 用于#<:s3::client>`
【解决方案2】:

这是一个适用于我的关于 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)

Gist

Official list of AWS region IDs here.

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

【讨论】:

    【解决方案3】:

    如果您在 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
    

    【讨论】:

      猜你喜欢
      • 2021-09-04
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 2023-01-18
      • 2015-04-15
      • 2011-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多