2015-03-03 35 views
5

Bất kỳ một thể cung cấp cho tôi một tài liệu tốt để tải lên các tập tin để sử dụng S3 ASW-sdk Version 2. Tôi đã kiểm tra ra doc chính và trong v1 chúng tôi sử dụng để làm nhưAWS SDK v2 cho s3

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

Bây giờ trong v2 khi tôi cố gắng như

s3 = Aws::S3::Client.new 

đang kết thúc với

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

bất cứ ai có thể giúp tôi với điều này?

+0

Đây là tài liệu: http://docs.aws.amazon.com/sdkforruby/api/index.html, Bạn nên tìm mọi thứ bạn cần. –

Trả lời

3

Theo chính thức documentation:

To use the Ruby SDK, you must configure a region and credentials.

Do đó,

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

Ngoài ra, một khu vực mặc định có thể được nạp từ một trong các địa điểm sau:

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

Vấn đề của tôi ở đây là truy cập vào nhóm. Trước đây chúng ta có một phương thức để truy cập nó 's3.buckets ['my-bucket']'. Có vẻ như đã thay đổi trong phiên bản 2. – user3655415

+0

nó phải là 's3.bucket ['my-bucket']' – shivam

+1

Vâng tôi đã thử điều đó nhưng cũng kết thúc mà không có lỗi phương pháp. '5] pry (chính)> s3 = Aws :: S3 :: Client.new (vùng: 'us-west-2') => # [8] pry (chính)> s3.bucket [ENV ['AWS_BUCKET']] NoMethodError: phương thức không xác định 'bucket 'cho # ' – user3655415

2

Dưới đây là một hoàn chỉnh Bản demo S3 trên aws v2 gem đã hoạt động với tôi:

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.

Nếu bạn không chắc chắn của khu vực, đoán tốt nhất là Mỹ chuẩn, trong đó có ID us-east-1 cho mục đích cấu hình, như trình bày ở trên.

1

Nếu bạn đang sử dụng một tập tin aws.yml cho thông tin của bạn trong Rails, bạn có thể muốn tạo một file config/initializers/aws.rb với nội dung sau:

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]) 
       }) 

File config/aws.yml sẽ cần phải có bộ chuyển đổi để bao gồm khu vực .

development: &development 
    region: 'your region' 
    access_key_id: 'your access key' 
    secret_access_key: 'your secret access key' 
production: 
    <<: *development 
Các vấn đề liên quan