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
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Cloudfront with Rails
Using cloudfront with rails.
2016.07.26 JAWS-UG Osaka Study Meeting
haruharuharuby
July 27, 2016
More Decks by haruharuharuby
See All by haruharuharuby
Effective AWS Step Functions
haruharuharuby
0
210
JP_Stripes 5th anniversary - Plan migration consideration -
haruharuharuby
0
110
Alexa Warming Up my Live Stream!
haruharuharuby
1
110
AAJUG meetup September
haruharuharuby
0
65
How Voice Technology is Changing Customer Experience from Brain Perspectives
haruharuharuby
0
110
IVSの盛り上げ役にAlexaをつかってみようか
haruharuharuby
0
1.2k
Let's make a blog with live streaming in 10 minutes
haruharuharuby
0
540
Alexa Audio Player @Deep Diving
haruharuharuby
0
300
VoiceLunchJp#02 Share VUI App and reputation
haruharuharuby
1
320
Other Decks in Programming
See All in Programming
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
150
DynamoDBの基礎を振り返りながらベクトル検索機能を理解する
musan
2
180
VibeCodingからAgenticWorkflowへ
starfish719
0
830
引き算の組織 ― アウトカムとAIに全振りするために辞めたこと ― / Organization by Subtraction
hirokiyamamoto14
PRO
0
290
Loosening the Reins: Go Generics Get More Flexible
kuro_kurorrr
0
310
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
2
440
170k Jobs a Day on GKE: Scaling Mercari's CI Platform - and What's Next for AI-Native Development
junyaokabe
0
120
そこに3びきプロダクトがいるじゃろう——生成AI時代における“価値が届かない理由”の構造
kosuket
0
570
楽しそうなつよつよエンジニアと目が死んでる僕/A brilliant engineer having a blast, and dead-eyed me.
3l4l5
2
240
異なる設計思想のフレームワークを経験して得た学び
amekuhideki
1
410
ソフトウェアエンジニアにとっての生成AI - 特性を知って使い倒す / generative ai for software enginner
kishida
7
2.1k
源内ハンズオン概要編
hideg
0
210
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
BBQ
matthewcrist
89
10k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
The SEO identity crisis: Don't let AI make you average
varn
0
540
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
550
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
660
Believing is Seeing
oripsolob
1
200
Odyssey Design
rkendrick25
PRO
2
780
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