Loading

BLOG

Refile のバックエンドに S3 を利用する

以前ご紹介した (CarrierWave の後継ファイルアップローダー Refile が良い感じらしい) Rails の新しいファイルアップローダー Refile ですが、今回はバックエンドに S3 を設定してみます。

環境

  • Ruby: 2.2.1
  • Rails: 4.2.1

S3 バケットの作成と AMI の作成

バケットの作成 を参考にしてバケットを作成してください。
Bucket Name はお好きな名前をつけて下さい。Region は今回は Tokyo を選択しました。

一時的に利用する cache を一定期間で削除するための設定を行いましょう。
作成したバケットを選択し、画面右のプロパティタブ内にあるライフサイクルを開き、「ルールを追加する」をクリックし、設定を追加します。

  • 次のルールを適用: プレフィックスに “cache/” を入力
  • ルールの設定 をクリック
  • 完全に削除 を選択、1日後を入力
  • 確認 をクリック
  • 適当な名前をつけてルールを作成

次に、作成した S3 を操作する権限を持った IAM ユーザーを作成します。
IAM メニューの「ユーザー」=>「新規ユーザーの作成」と進み、作成してください。
アクセスキー ID と秘密アクセスキーのダウンロードの案内が表示されるので保存します。

AWS リソースの管理に関するポリシーの例 を参考に先ほど作った S3 に適当なアクセス制限を設定します。

Refile の設定

Gemfile に refile-s3 を追加します。

gem "refile-s3"

Refile に S3 の設定をします。

require "refile/s3"

aws = {
  access_key_id: "アクセスキー ID",
  secret_access_key: "秘密アクセスキー",
  region: "リュージョン名",
  bucket: "バケット名",
}
Refile.cache = Refile::S3.new(prefix: "cache", **aws)
Refile.store = Refile::S3.new(prefix: "store", **aws)

リュージョン名は Tokyo の場合 ap-northeast-1 ですので注意してください。

まとめ

以上の手順で基本的な設定は完了です。
最新のヴァージョンでは改良されているらしいですが、CarrierWave のときは一時ファイルを S3 に格納するのが簡単にはできなかったので、ロードバランサー配下に複数台 AP サーバー配置する構成の場合にはいろいろと工夫が必要でしたが、Refile は非常に簡単にできるようになっており感動しております。

次回は CDN (AWS CloudFront) の設定についてご紹介したいと思います。

サーバーメンテナンスによるサービス停止のお知らせ

「らしくない」こと

関連記事

  1. 改めて考える住宅の意味

    2016.04.18
  2. 契約の手間は千差万別

    2016.08.29
  3. 現在の不動産仲介業について思う事

    2014.12.12
  4. 『マンションマーケット』との出逢い

    2019.01.17
  5. パッと見で分かりやすく◎

    2016.05.24
  6. 狂騒の時代

    2015.06.05
PAGE TOP