このエントリーをはてなブックマークに追加

2017年1月10日火曜日

carrierwave-awsを使ってS3に画像をアプロードする

こんにちは、h_ono_222です。
今回はcarrirewave-awsを使ってS3に画像をアップロードする方法を紹介します。

目次

  1. carrierwave-awsとは
  2. gemをインストールする
  3. initializerの設定

1. carrierwave-awsとは

carrierwave-awsはfogに似たgemで、Amazon S3へのアップロード機能を提供します。

carrierwaveでS3などのストレージ画像をアップロードするにはfogがよく使われると思いますが、
AWSへのアクセスをaws-sdkに統一するために、今回carrierwave-awsを利用しました。

GitHubのリポジトリはこちら

2. gemをインストールする

下記のgemをインストールします。
# Gemfile
gem 'carrierwave'
gem 'carrierwave-aws'

3. initializerの設定

carrierwaveの設定を行います。()
# Gemfile
CarrierWave.configure do |config|
  if Rails.env.production?
    config.storage    = :aws
    config.aws_bucket = 'data.hoge.upload'
    config.aws_acl    = 'public-read'

    # The maximum period for authenticated_urls is only 7 days.
    config.aws_authenticated_url_expiration = 60 * 60 * 24 * 7

    # Set custom options such agit s cache control to leverage browser caching
    config.aws_attributes = {
        expires: 1.week.from_now.httpdate,
        cache_control: 'max-age=604800'
    }

    # aws credential
    config.aws_credentials = {
        # 今回はIAM ロールを使用するため記載しない
        # access_key_id:     ENV.fetch('AWS_ACCESS_KEY_ID'),
        # secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
        region:            'ap-northeast-1' # Required
    }
  else
    # テスト時はローカルにファイルを保存する
    config.storage    = :file
  end
end
設定は以上です。
アップローダの方で特に意識することなく、S3へファイルをアップロードできました。

0 件のコメント:

コメントを投稿