2017-09-21 85 views
1

私はherokuとaws-s3バケットで設定したruby on railsプロジェクトにUsersコントローラを作成しようとしています。私はS3_BUCKET、AWS_ACCESS_KEY_ID、およびAWS_SECRET_ACCESS_KEYを使用して自分の.envとherokuローカルを設定しました。また、私はこのように見えるように、私の初期化/ aws.rbファイルを設定します。Railsコントローラのawsエラーでバケット名が見つからない

Aws.config.update({ 
    region: 'us-east-1', 
    credentials: Aws::Credentials.new(ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']), 
}) 

S3_BUCKET = Aws::S3::Resource.new.bucket(ENV['S3_BUCKET']) 

私はこのようなAWSの宝石をバンドルをインストールしている:

gem 'aws-sdk', '~> 3' 

しかし、私はコマンドを実行

rails g controller Users new 

端末で次のエラーが発生します。

aws-sdk-s3/bucket.rb:658:in `extract_name': missing required option :name (ArgumentError) 

私はそのファイルを見てS3バケット名を探していますが、すでに.envとherokuローカルに設定しています。これを設定する必要がある他の場所はありますか?私が読んだガイドのどれにもこのエラーは言及されていません。

+0

以下のコードが有効かどうかを教えてください –

答えて

2

こんにちは、正しい資格情報とバケット名を指定しているかどうかを確認してください。を:(「公開読み」ファイル、ACL)。また、あなたは右の地域.Tryファイルか何か

obj.upload_fileをアップロードしたい場合は、以下のコード

s3 = Aws::S3::Resource.new(
     credentials: Aws::Credentials.new(ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']), 
     region: 'us-west-1' 
    ) 

    obj = s3.bucket(ENV['S3_BUCKET']).object('key') 

を提供していることを確認してください

0

これは私のプロジェクトでこのように使いました。 1./config/initializersフォルダにaws.rbファイルを作成します。 2.次に、以下のコードをコピーし、

S3Client = Aws::S3::Client.new(
    access_key_id: 'ACCESS_KEY_ID', 
    secret_access_key: 'SECRET_ACCESS_KEY', 
    region: 'REGION' 
) 

ザッツすべて、これは動作します。 ハッピーコーディング:)

関連する問題