STERFIELD

RailsのアプリケーションからS3にファイルをアップロードする

RailsのアプリケーションからS3にファイルをアップロードする

もともとCarrierWaveを使用してファイルをサーバーに保存していたものを、S3(Amazon Simple Storage Service)に変更する場合の手続きを記事にしてみました。

AWS側での設定

S3でバケットの作成

s3でのバケットの作成を行う。

IAM(Identity and Access Management)にてユーザーの作成

AWSのIAMにてユーザーの作成を行う。
ユーザー作成を行った際に、Access Key Id、Secret Access Keyが発行されるので保存しておく(csvダウンロードできる)。
また、アクセス許可からポリシーのアタッチができるので、AmazonS3FullAccessの付与を行っておく。

Rails側での設定

Gemfileにfogの追加

Gemfileに下記を追加。

CarrierWaveのUploadクラスの修正

storage先の変更

fogを使用する前は、storageがfileになっていると思うので、そちらをコメントアウトし、storage先をfogに変更します。

CarrierWaveの設定ファイルの修正

config/initializers/carrierwave.rb
に追記を行う。もし、今までに作成していなければここで作成する(railsでCarrierWave導入時に自動作成はされない)。

上記の設定を行う。
{{ Access Key Id }}、{{ Secret Access Key }} : IAM(Identity and Access Management)にてユーザーの作成にて、取得できる。
{{ region }} : 東京リージョンであれば、ap-northeast-1などとなる。
{{ bucket name }} : s3で作成したバケット名。
開発環境によって、バケット名を変える場合はここで行うこともできる。

以上で設定はおわりで、アプリケーションから画像をアップロードすれば、S3にファイルがアップロードされる。

おわりに

carrierwaveやfogを使用しない場合は、aws-sdkを使用することになる。
Module: AWS – http://docs.aws.amazon.com/AWSRubySDK/latest/AWS.html

Author Profile

著者近影

スターフィールド編集部

SHARE

合わせて読みたい