AWS SDK v2 для s3

Может ли кто-нибудь предоставить мне хорошую документацию для загрузки файлов на S3 с помощью asw-sdk версии 2. Я проверил основной документ, и в версии 1 мы делали так:

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']

Кто-нибудь может мне с этим помочь?


person user3655415    schedule 03.03.2015    source источник
comment
Вот документация: docs.aws.amazon.com/sdkforruby/api/index .html, вы должны найти все, что вам нужно.   -  person TJ-    schedule 03.03.2015


Ответы (3)


Согласно официальной документации:

Чтобы использовать Ruby SDK, необходимо настроить регион и учетные данные.

Следовательно,

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

Кроме того, регион по умолчанию можно загрузить из одного из следующих мест:

Aws.config[:region]
ENV['AWS_REGION']
person shivam    schedule 03.03.2015
comment
Моя проблема здесь - доступ к ведрам. Раньше у нас был метод доступа к нему s3.buckets['my-bucket']. Похоже, изменено в версии 2. - person user3655415; 03.03.2015
comment
должно быть s3.bucket['my-bucket'] - person shivam; 03.03.2015
comment
Да, я тоже пробовал это, но в итоге не было ошибки метода. 5] pry(main)> s3 = Aws::S3::Client.new(region:'us-west-2') => #<Aws::S3::Client> [8] pry(main)> s3.bucket[ENV['AWS_BUCKET']] NoMethodError: undefined method bucket' для #‹Aws::S3::Client›` - person user3655415; 03.03.2015

Вот полная демонстрация S3 на aws v2 gem, которая сработала для меня:

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 здесь.

Если вы не уверены в регионе, лучшим предположением будет US Standard, который имеет идентификатор us-east-1 для целей конфигурации, как показано выше.

person mahemoff    schedule 27.04.2015

Если вы использовали файл aws.yml для своих учетных данных в Rails, вы можете создать файл 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
person vas    schedule 20.10.2015