2015-03-03 25 views
5

Kann jemand mir eine gute Dokumentation sorgen für Dateien auf S3 hochladen asw-sdk Version 2. Verwendung überprüfte ich die Haupt-doc und in v1 verwendeten wir wieAWS SDK v2 für s3

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

Jetzt zu tun in v2, wenn ich versuche, wie

s3 = Aws::S3::Client.new 

am Ende mit

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

jemand mir mit diesem helfen?

+0

Hier ist die Dokumentation: http://docs.aws.amazon.com/sdkforruby/api/index.html, sollten Sie alles finden, was Sie brauchen würde. –

Antwort

3

Gemäß offiziellen documentation:

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

Daher

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

Alternativ kann eine Standardregion von einem der folgenden Speicherorte geladen werden:

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

Mein Problem hier ist der Zugriff auf Buckets. Zuvor haben wir eine Methode, um auf '3.buckets ['my-bucket'] '' zuzugreifen. Es sieht wie in Version 2 geändert aus. – user3655415

+0

sollte es sein '3.bucket ['mein-bucket'] ' – shivam

+1

Ja, ich habe das auch versucht, aber am Ende ohne Methodenfehler. '5] PRY (Haupt)> S3 = AWS :: S3 :: Client.New (Region: 'US-West-2') => # [8] PRY (main)> s3.bucket [ENV ['AWS_BUCKET']] NoMethodError: undefined Methode 'bucket 'für # ' – user3655415

2

Hier ist eine komplette S3-Demo auf aws v2 Juwel, die für mich funktionierte:

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.

Wenn Sie unsicher über die Region, die beste Vermutung wäre US-Standard sein, der die ID us-east-1 für Konfigurationszwecke hat, wie oben gezeigt.

1

Wenn Sie eine aws.yml Datei für Ihre Anmeldeinformationen in Rails verwendet haben, könnten Sie eine Datei config/initializers/aws.rb mit folgendem Inhalt erstellt werden soll:

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

Die config/aws.yml Datei benötigen würde Adapter, um die Region zu schließen .

development: &development 
    region: 'your region' 
    access_key_id: 'your access key' 
    secret_access_key: 'your secret access key' 
production: 
    <<: *development