RailsからS3オブジェクトをアップロードする

個人開発したアプリの宣伝
目的地が設定できる手帳のような使い心地のTODOアプリを公開しています。
Todo with Location

Todo with Location

  • Yoshiko Ichikawa
  • Productivity
  • Free

スポンサードリンク

RailsアプリケーションからS3オブジェクトを作成します。

gem

aws-adkが必要となるので、Gemfileに記述し、記述後bundle installを行います。

gem 'aws-sdk'


AWSクレデンシャルの設定

S3にアクセスロールがあるIAMユーザのクレデンシャルをAWSクライアントに設定します。尚、クレデンシャルの設定は、.env

AWS_ACCESS_KEY = your_access_key
AWS_SECRET_ACCESS_KEY = your_secret_key

のように設定済みのものとします。

.envのインストールについては省略します。


aws initializerの設定

Railsアプリケーションのconfig/initializer/aws.rbファイルを作成します。

※リージョンは利用するリージョン名を指定します。

access = ENV["AWS_ACCESS_KEY"]
secret = ENV["AWS_SECRET_ACCESS_KEY"]

Aws.config.update({
  region: 'ap-northeast-1',
  credentials: Aws::Credentials.new(access, secret),
})


S3へオブジェクトの書き込み

例として、配列dataをJsonエンコードしたfilename.jsonファイルを書き出します。

filename = "pathTo/filename.json"
client = Aws::S3::Client.new
client.put_object(bucket: "bucketName", key: filename, body: data.to_json)