Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Cloudfront with Rails
Search
haruharuharuby
July 27, 2016
Programming
0
110
Cloudfront with Rails
Using cloudfront with rails.
2016.07.26 JAWS-UG Osaka Study Meeting
haruharuharuby
July 27, 2016
Tweet
Share
More Decks by haruharuharuby
See All by haruharuharuby
Effective AWS Step Functions
haruharuharuby
0
160
JP_Stripes 5th anniversary - Plan migration consideration -
haruharuharuby
0
77
Alexa Warming Up my Live Stream!
haruharuharuby
1
67
AAJUG meetup September
haruharuharuby
0
29
How Voice Technology is Changing Customer Experience from Brain Perspectives
haruharuharuby
0
49
IVSの盛り上げ役にAlexaをつかってみようか
haruharuharuby
0
670
Let's make a blog with live streaming in 10 minutes
haruharuharuby
0
500
Alexa Audio Player @Deep Diving
haruharuharuby
0
260
VoiceLunchJp#02 Share VUI App and reputation
haruharuharuby
1
260
Other Decks in Programming
See All in Programming
バグを見つけた?それAppleに直してもらおう!
uetyo
0
140
開発者とQAの越境で自動テストが増える開発プロセスを実現する
92thunder
1
160
ソフトウェアの振る舞いに着目し 複雑な要件の開発に立ち向かう
rickyban
0
890
第5回日本眼科AI学会総会_AIコンテスト_3位解法
neilsaw
0
160
似たもの同士のPerlとPHP
uzulla
1
120
Mermaid x AST x 生成AI = コードとドキュメントの完全同期への道
shibuyamizuho
0
140
あれやってみてー駆動から成長を加速させる / areyattemite-driven
nashiusagi
1
190
Amazon Aurora Serverless v2のアプデと、Amazon Aurora PostgreSQL Limitless DatabaseのGAについて
satoshi256kbyte
0
120
プロダクトの品質に コミットする / Commit to Product Quality
pekepek
2
760
RWC 2024 DICOM & ISO/IEC 2022
m_seki
0
190
わたしの星のままで一番星になる ~ 出産を機にSIerからEC事業会社に転職した話 ~
kimura_m_29
0
170
Discord Bot with AI -for English learners-
xin9le
1
120
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
95
17k
Being A Developer After 40
akosma
87
590k
Designing for Performance
lara
604
68k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
It's Worth the Effort
3n
183
28k
Thoughts on Productivity
jonyablonski
67
4.3k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.6k
A Philosophy of Restraint
colly
203
16k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
A Tale of Four Properties
chriscoyier
157
23k
Transcript
Cloudfront with Rails クラウドフロントとRails の ツンデレ な関係 2016.07.26 「AWSのおJAWSな使い方」JAWS-UG大阪&JAWS-UG関西女子会合同企画
自己紹介 TiNm’S( ティムズ )と読みます。 プログラマーです。 Ruby On RailsとAWSが主戦場です。 好きなAWS サービスは、OpsWorks。
花澤香菜ちゃん好き。 JAWS-UG-KOBE 所属。 ポケモンGOはまだやってません。
はじめに...
に をかぶせたら、 Webサービスが動かなくなった 体験談をお話します。 今回は... ※Railsはやったことあるけど、 AWSには構築したことないなあ。な人向けの内容です。
なぜ話したいと思ったか。
Cloudfrontはデプロイに20分くらいかかる。 「ちょっとかえて、デプロイ、20分待つ。」 を繰り返すと、時間だけが取られていく。 もう、Prime Video見るしかなくなる。
Agenda • RailsでCloudfrontを導入する理由 • 転送するhttpメソッドではまる。 • 転送するhttpヘッダではまる。 • Cookieの転送ではまる。 •
クエリストリングの転送ではまる。
RailsでCloudfrontを導入する理由
アセット※のキャッシング Cloudfrontにアセットを設置することで、 js、css、 imageファイルをキャッシュできる。 その昔、アセットは、 asset_sync などのgemを利 用してS3に配置していた。 この方法は現在推奨されていない。 (Heroku
も assets は、CDNに設置することを推 奨) 参考: http://guides.rubyonrails.org/asset_pipeline.html ※ Railsで言うところの静的なファイル群のことで、おもに js、css、画像ファイルがそれに当たる。
HTTPS化 Cloudfrontに証明書を設置して、 HTTPS化する。 サーバーやELBに証明書を入れ込む必要がないので、 Railsの設定を単純化できる。 また、バックエンドを httpにすることで、暗号化、複合化を Rails側で実施する必要がなくなり、パフォーマン ス的にも効果が見込める。 (証明書もACM(AWS
Certificate Manager)を利用すれば、証明書の管理もできて効率的。 )
WAFの導入 悪い人をCloudfrontで弾いてしまう。 SQLインジェクションなどの脆弱性対策も Cloudfrontでやってしまう。
1: 転送するhttpメソッドではまる。
POST, PUTできない (>m<)0 Cloudfrontが受信するHTTPメソッドの デフォルト設定はGET,HEADのみ。 (つまり静的サイト向け ) Rails(に限らずほとんどの Webアプリ)では、 PUT、POST、PATCH、DELETEの許可が必
須。 すべてのHTTPメソッドを許可する。
2: 転送するhttpヘッダではまる。
いつもoriginが返る。
Hostヘッダを転送しておく。 RailsはHostヘッダでResponse先を判断している。 Hostヘッダが転送されない場合、 Railsは、Responseとして”//”(ルート)返却する。 つまり、ELBやEC2インスタンスのアドレス (origin)が返ることになる。
3: cookieの転送ではまる。
ログインできん。 Cloudfrontをかぶせたとたんにログイ ンできない。
Cookieを転送する。 RailsのセッションはデフォルトでCookieを利用する。 Cookieが転送されないとログインもできない。
4: クエリストリングではまる。
検索できん。 検索機能でよくあるURL。 http://example.com/search?q=XXXXXXX originでは効くのに、Cloudfrontをかぶせると 効かなくなる。
クエリストリングを転送する。 Cloudfrontはデフォルトでquerystringを転送しない。 検索機能を提供するransack を利用するならこの設定が必須。
まとめると
• すべてのHTTPメソッドを許可する。 • Hostヘッダを転送する。 • (セッションデフォルトなら)Cookieを転送する。 • (gemによっては)クエリストリングを転送する。
明日は、 Alexa !!!!!!!!!!!!!! そして....
https://www.youtube.com/watch?v=vizNdRTXK90&feature=youtu.be