Loading

BLOG

Refile に CDN (AWS CloudFront) を設定する

前回の Refile 関連の記事からだいぶ経ってしまいましたが、今回は CDN (AWS CloudFront) の設定についてご紹介いたします。

なぜ CDN を設定するのか

Refile で登録されたファイルは S3 等に保存されています。
標準の設定の場合、クライアントは直接 S3 のオブジェクトにリクエストするのではなく APP Server を介してリクエストしているため、一旦 APP Server で画像変換処理等を行なってからクライアントへサーブしています。
また、APP Server には変換されたファイルは基本的にキャッシュされていない (はず) のでクライアントからのリクエストの度に変換処理を行なっており、パフォーマンスに結構な影響を及ぼしてしまいます。

変換されたファイルをキャッシュする方法はいろいろあると思いますが、構築の手軽さを重視して CDN を選択しました。

CloudFront の設定

AWS のコンソールから CloudFront の設定を行います。
今回は最低限の設定を例示します。

[Create Distribution] をクリック.

スクリーンショット 2016-02-14 17.28.56

Web の [Get Started] をクリック.

スクリーンショット 2016-02-14 17.30.00

Create Distribution のページで各種設定をします. 最低限必要なのは Origin Domain Name と Origin Protocol Prolicy くらいです. [Create Distribution] をクリックすると作成が開始されます. Status が Deployed になったら利用可能になります.
Domain Name 欄の ‘d********.cloudfront.net’ を Refile で設定するので控えておきます。

AWS CloudFront Management Console

CloudFront Management Console

 

Refile の設定

基本的には config/initializers/refile.rb に下記のような内容を記述すればオッケイです。

Refile.cdn_host = "https://d********.cloudfront.net"

ただしこのまま書くと production 以外の環境でちゃんと動かなくなるので環境別に設定をする必要があります。
settingslogic を使うと便利です。

defaults: &defaults
  cdn_host: nil

[..snip..]

production:
  <<: *defaults
  cdn_host: https://d********.cloudfront.net
Refile.cdn_host = Settings.cdn_host

production 以外の環境には nil を与えておけば良いです。

まとめ

上記の設定を行うことで Refile の attachment_url で生成される URL のホストが設定した CloudFront のホストになっているはすです。
ファイルにアクセスがあると 1 回目は CloudFront から Rails 側にリクエストがされるので変換処理が行われますが、自動的に CloudFront にキャッシュされるので 2 回目からは直接 CloudFront からレスポンスを返します。

おじさんも悪くない・・・

売却コンサルタントとして感じること

関連記事

  1. ITを活用した重要事項説明について

    2015.02.03
  2. はじめまして、田沼です。

    2017.07.03
  3. 圧倒的な違い

    2015.10.13
  4. -備品紹介します-

    2015.03.13
  5. 皆さん、初めまして。

    2017.06.28
  6. 新メンバーの藤井です!!

    2017.04.24
PAGE TOP