web-dev-qa-db-ja.com

aws-sdkv2を使用してS3にイメージをアップロードする

私はaws-sdkドキュメントで作業するのに大変な時間を費やしています。私がたどるすべてのリンクは古く、使用できないようです。

RubyのS3バケットに画像ファイルをアップロードする簡単な実装例を探しています。

  • 画像パスがscreenshots/image.pngだとしましょう
  • バケットにアップロードしたいmy_bucket
  • AWSクレジットは私のENVにあります

どんなアドバイスも大歓迎です。

19
YoDK

ディスクから名前付きバケットとキーにファイルをアップロードする方法は次のとおりです。

s3 = Aws::S3::Resource.new
s3.bucket('my_bucket').object('key').upload_file('screenshots/image.png')

これが最も簡単な方法です。 'key'を、AmazonS3に保存するキーに置き換える必要があります。これにより、マルチパートアップロードAPIを使用して大きなファイルが自動的にアップロードされ、失敗したパーツが再試行されます。

常にPUTオブジェクトを使用してアップロードする場合は、#putを呼び出すか、Aws::S3::Clientを使用できます。

# using put
s3 = Aws::S3::Resource.new
File.open('screenshots/image.png', 'rb') do |file|
  s3.bucket('my_bucket').object('key').put(body:file)
end

# using a client
s3 = Aws::S3::Client.new
File.open('screenshots/image.png', 'rb') do |file|
  s3.put_object(bucket:'my_bucket', key:'key', body:file)
end

また、v2 SDKのAPIリファレンスドキュメントは次のとおりです。 http://docs.aws.Amazon.com/sdkforruby/api/index.html

35
Trevor Rowe