2016-03-22 10 views
0

amazon S3にはうまく動作するcarrierwaveでアップロードします。rails AWS S3ファイルを削除する

しかし、今私は、私はこれを試してみました削除機能を追加したい:

AWS::S3::S3Object.delete(@vid.video, 'bucket') 

私はこのエラーを得た:

uninitialized constant MoviesController::AWS 

理由は明確である..しかし、どのように私はAWS定数を設定します正しく、どこに?

設定/初期化子/ carrierwave.rb

CarrierWave.configure do |config| 
config.fog_credentials = { 
    :provider => 'AWS', 
    :aws_access_key_id => '----', 
    :aws_secret_access_key => '----', 
    :region => 'eu-central-1', 
} 
config.fog_use_ssl_for_aws = false 
config.fog_directory = 'bucekt' 
config.storage = :fog 
end 
+0

あなたは 'Gemfile'に' AWS SDKのgem'を追加しました:

その後、どこでもあなたのアプリやコントローラのアクションで、あなたはこのようなS3 APIが呼び出すことができますか? –

+0

はい私はこれをしました – Felix

+0

わかりませんが、あなたのコードに 'AWS' gemを設定する必要もあります。私の直感は、オートローディングではないが、それはすべきである。 –

答えて

1

あなたが最初AWS宝石を設定する必要があります。このコードをconfig/initializers/aws.rbファイルに追加してください。

Aws.config.update({ 
    region: '<default-region>', 
    credentials: Aws::Credentials.new('<access-key-id>', '<secret-access-key') 
}) 

また、環境変数AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYを設定して、サーバー上のAWS_REGIONSDKはそれらを自動的にピックアップしますすることができます。

def some_action 
    # You can simply call Aws::S3::Client.new 
    # if you are already configuring using the 
    # above methods or configure by passing 
    # parameters explicitly 
    s3_client = Aws::S3::Client.new(
    credentials: Aws::Credentials.new('<aws_access_key_id>', '<aws_secret_key>'), 
    region: '<aws_region>' 
) 

    # delete object by passing bucket and object key 
    s3_response = s3_client.delete_object({ 
    bucket: '<bucket-name>', # required 
    key: '<object-key>', # required 
    }) 
end 
+0

私はAwsを設定します。 aws.rb ...なぜs3_clientで資格情報を再度設定する必要がありますか? – Felix

+0

コードコメントをお読みください:) –

+0

ここでs3_client = ...コードを設定しますか? aws.rbまたはどこで? – Felix

関連する問題