×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Cloudfront with Rails クラウドフロントとRails の ツンデレ な関係 2016.07.26 「AWSのおJAWSな使い方」JAWS-UG大阪&JAWS-UG関西女子会合同企画
Slide 2
Slide 2 text
自己紹介 TiNm’S( ティムズ )と読みます。 プログラマーです。 Ruby On RailsとAWSが主戦場です。 好きなAWS サービスは、OpsWorks。 花澤香菜ちゃん好き。 JAWS-UG-KOBE 所属。 ポケモンGOはまだやってません。
Slide 3
Slide 3 text
はじめに...
Slide 4
Slide 4 text
に をかぶせたら、 Webサービスが動かなくなった 体験談をお話します。 今回は... ※Railsはやったことあるけど、 AWSには構築したことないなあ。な人向けの内容です。
Slide 5
Slide 5 text
なぜ話したいと思ったか。
Slide 6
Slide 6 text
Cloudfrontはデプロイに20分くらいかかる。 「ちょっとかえて、デプロイ、20分待つ。」 を繰り返すと、時間だけが取られていく。 もう、Prime Video見るしかなくなる。
Slide 7
Slide 7 text
Agenda ● RailsでCloudfrontを導入する理由 ● 転送するhttpメソッドではまる。 ● 転送するhttpヘッダではまる。 ● Cookieの転送ではまる。 ● クエリストリングの転送ではまる。
Slide 8
Slide 8 text
RailsでCloudfrontを導入する理由
Slide 9
Slide 9 text
アセット※のキャッシング Cloudfrontにアセットを設置することで、 js、css、 imageファイルをキャッシュできる。 その昔、アセットは、 asset_sync などのgemを利 用してS3に配置していた。 この方法は現在推奨されていない。 (Heroku も assets は、CDNに設置することを推 奨) 参考: http://guides.rubyonrails.org/asset_pipeline.html ※ Railsで言うところの静的なファイル群のことで、おもに js、css、画像ファイルがそれに当たる。
Slide 10
Slide 10 text
HTTPS化 Cloudfrontに証明書を設置して、 HTTPS化する。 サーバーやELBに証明書を入れ込む必要がないので、 Railsの設定を単純化できる。 また、バックエンドを httpにすることで、暗号化、複合化を Rails側で実施する必要がなくなり、パフォーマン ス的にも効果が見込める。 (証明書もACM(AWS Certificate Manager)を利用すれば、証明書の管理もできて効率的。 )
Slide 11
Slide 11 text
WAFの導入 悪い人をCloudfrontで弾いてしまう。 SQLインジェクションなどの脆弱性対策も Cloudfrontでやってしまう。
Slide 12
Slide 12 text
1: 転送するhttpメソッドではまる。
Slide 13
Slide 13 text
POST, PUTできない (>m<)0 Cloudfrontが受信するHTTPメソッドの デフォルト設定はGET,HEADのみ。 (つまり静的サイト向け ) Rails(に限らずほとんどの Webアプリ)では、 PUT、POST、PATCH、DELETEの許可が必 須。 すべてのHTTPメソッドを許可する。
Slide 14
Slide 14 text
2: 転送するhttpヘッダではまる。
Slide 15
Slide 15 text
いつもoriginが返る。
Slide 16
Slide 16 text
Hostヘッダを転送しておく。 RailsはHostヘッダでResponse先を判断している。 Hostヘッダが転送されない場合、 Railsは、Responseとして”//”(ルート)返却する。 つまり、ELBやEC2インスタンスのアドレス (origin)が返ることになる。
Slide 17
Slide 17 text
3: cookieの転送ではまる。
Slide 18
Slide 18 text
ログインできん。 Cloudfrontをかぶせたとたんにログイ ンできない。
Slide 19
Slide 19 text
Cookieを転送する。 RailsのセッションはデフォルトでCookieを利用する。 Cookieが転送されないとログインもできない。
Slide 20
Slide 20 text
4: クエリストリングではまる。
Slide 21
Slide 21 text
検索できん。 検索機能でよくあるURL。 http://example.com/search?q=XXXXXXX originでは効くのに、Cloudfrontをかぶせると 効かなくなる。
Slide 22
Slide 22 text
クエリストリングを転送する。 Cloudfrontはデフォルトでquerystringを転送しない。 検索機能を提供するransack を利用するならこの設定が必須。
Slide 23
Slide 23 text
まとめると
Slide 24
Slide 24 text
● すべてのHTTPメソッドを許可する。 ● Hostヘッダを転送する。 ● (セッションデフォルトなら)Cookieを転送する。 ● (gemによっては)クエリストリングを転送する。
Slide 25
Slide 25 text
明日は、 Alexa !!!!!!!!!!!!!! そして....
Slide 26
Slide 26 text
https://www.youtube.com/watch?v=vizNdRTXK90&feature=youtu.be