SlideShare a Scribd company logo
2020-08-15 PhalanXware ふぁらお加藤
俺と
Active Storage + CloudFront
やっぱり専用のサービス使いたいよね
名前
ふぁらお加藤
@PharaohKJ趣味
サブカル・野宿・BBQ・めめめ仕事
ICTフリーランス
Tsundokanai-Radio参加コミュニティ
Kanazawa.rb
JAWS-UG 金沢
AWS Samurai 2019
自己紹介
What is Active Storage?
• Ruby on Rails の「ファイル」を取り扱う
機能
• データベースの1レコードに関連するファ
イルを保存できる
• ファイルは通常のディスクからいわゆる
クラウドストレージまで対応している
• Active Storageの設定さえしてしまえばう
まく抽象化され、各種ファイルを取り扱
うAPIを通せばうまいこと保存してくれ
る
What is Active Storage
Active Model
Azure Storage
Active Storage
今回はS3の話
🥺
• アプリケーションを介してのア
クセスは許すが直接はアクセス
はさせない。
• というかそもそもS3に置いてあ
る直接覗ける可能性すら与えた
くない
アクセス制御ほしい
Active Model
Active Storage
ユーザー
Ruby on Rails
😁
インターネット
閃いた
アプリがストリームを返せば
?
🥺
• わかる、でもおっそ
• アプリがこのユーザーにセッシ
ョンとられる時間つらくね?
• まぁ最終手段的なところはある
案1
Active Model
Active Storage
ユーザー
Ruby on Rails
😁
インターネット
ストリーム
一瞬だけアクセスできるURL 🥺
• これが採用されている
• Active StorageがS3に保存してそ
の情報をModelに持つ
• アプリはユーザーにアクセスさ
せたいとき、HMAC-SHAで署名
した期限付きURLを生成する
• ユーザーはそれを経由してみる
案2
Active Model
Active Storage
ユーザー
Ruby on Rails
😁
インターネット
署名付きURL
(5分だけアクセス可)
直接POSTできるURL 🥺
• アプリはHMAC-SHAで署名した
期限付きURLを生成し、さらに
Modelにその旨を記録する
• ユーザーはそのURLを使って
RoRを介さず、直接S3にブラウ
ザからファイルをPOST/PUTで
きる(ダイレクトアップロード)
• S3のCORSの設定忘れずに
案2+X
Active Model
Active Storage
ユーザー
Ruby on Rails
😁
インターネット
署名付きURL
(5分だけアクセス可)
新たなる課題
そもそもS3って
コンテンツデリバリーに向いてるの?
AWS CloudFront
vs Amazon S3
配信におけるCloudFront vs S3
• S3はやっぱりファイルストレージという側面が高い
• さすがにCloudFrontに比べたら、速度が安定しない、料金が高い場合もある
などなど
• RoR のアセットをここに置くのも鉄板となっている(Railsガイドにも説明が乗
っている)
• 今回議論したいのはアセットじゃなくて「動的なコンテンツ」
• 動的なコンテンツは再キャッシュ指示のタイミングとか方法も議論がいる
もういまじゃ認証付きCDNもできる
RoR & AWSの設定 🥺
• CloudFrontの設定で「S3」をキャ
ッシュ「それらへの直接のアクセ
ス禁止」を設定しておく、CDNの
ホスト名をゲットしておく
• CDN用IDと秘密鍵を生成してダウ
ンロードしておく
• gem aws-sdk-cloudfront を使う
CloudFrontもやる
Active Model
Active Storage
ユーザー
Ruby on Rails
😁
インターネット
署名付きURL
(5分だけアクセス可)
直接は禁止
俺と Active Storage + CloudFront

More Related Content

PDF
Ansible tower 構築方法と使い方
PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
PPTX
Azure Api Management 俺的マニュアル 2020年3月版
PPTX
iostat await svctm の 見かた、考え方
PDF
普通のRailsアプリをdockerで本番運用する知見
PPTX
PHPとシグナル、その裏側
PPTX
BuildKitによる高速でセキュアなイメージビルド
PDF
Where狙いのキー、order by狙いのキー
Ansible tower 構築方法と使い方
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Azure Api Management 俺的マニュアル 2020年3月版
iostat await svctm の 見かた、考え方
普通のRailsアプリをdockerで本番運用する知見
PHPとシグナル、その裏側
BuildKitによる高速でセキュアなイメージビルド
Where狙いのキー、order by狙いのキー

What's hot (20)

PDF
DynamoDB設計のちょっとした技
ODP
現場で役に立たないsudoの使い方
PDF
OCIランタイムの筆頭「runc」を俯瞰する
PDF
Spannerに関する技術メモ
PDF
OpenStack上の環境構築自動化に向けたTerraform/Pulumiの活用
PDF
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
PDF
DNSキャッシュサーバ チューニングの勘所
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
PDF
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
PDF
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
PDF
AWSでDockerを扱うためのベストプラクティス
PDF
Apache Kafka 0.11 の Exactly Once Semantics
PPTX
トランザクションの設計と進化
PDF
Azure Blob Storageへの様々なアクセス方法を比べてみた JAZUG12周年イベント
PDF
Dockerイメージの理解とコンテナのライフサイクル
PDF
自分たちのコードを Composer パッケージに分割して開発する
PDF
Building the Game Server both API and Realtime via c#
PDF
猫でもわかる! モデル検査器 SPIN 入門
PPTX
KeycloakでAPI認可に入門する
PPT
Cassandraのしくみ データの読み書き編
DynamoDB設計のちょっとした技
現場で役に立たないsudoの使い方
OCIランタイムの筆頭「runc」を俯瞰する
Spannerに関する技術メモ
OpenStack上の環境構築自動化に向けたTerraform/Pulumiの活用
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
DNSキャッシュサーバ チューニングの勘所
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
AWSでDockerを扱うためのベストプラクティス
Apache Kafka 0.11 の Exactly Once Semantics
トランザクションの設計と進化
Azure Blob Storageへの様々なアクセス方法を比べてみた JAZUG12周年イベント
Dockerイメージの理解とコンテナのライフサイクル
自分たちのコードを Composer パッケージに分割して開発する
Building the Game Server both API and Realtime via c#
猫でもわかる! モデル検査器 SPIN 入門
KeycloakでAPI認可に入門する
Cassandraのしくみ データの読み書き編
Ad

Similar to 俺と Active Storage + CloudFront (20)

PDF
AWSで地球の裏側ブラジルの人にすばやくWEBサイトを見せたい。
PDF
ゼロから始めるモバイルアプリ開発 / 
 AWS Mobile Hubハンズオン 本編
PDF
クラウドネイティブ世代がインフラに触れるということ
PPTX
110409 silverlight square_lt_pub
PDF
OSC2011Tokyo/Fall OpenStack Swift入門
PDF
AWS re:Inforce reCap 注目のサービス
PDF
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
PPTX
Jaws ug-chiba-vol7 forgevision-kitahara
PDF
OpenStack Object Storage; Usage
PPTX
190731 chalice
PDF
JAWSUG architecture-crowler
PPTX
エンジニアのための勉強会 #2 『Public Cloud - AWSの基礎 -』
PDF
AWSを利用してDevとOpsの間を考える
PPTX
AWS新サービス活用事例
PDF
SWF+FlowFrameworkを使ってみた@JAWS-UG高尾山 2015.09.27
PPT
appengine活用事例資料@TDDBC札幌2.1
PDF
Aws privte20110406 arai
PDF
LocalStack
PDF
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス
AWSで地球の裏側ブラジルの人にすばやくWEBサイトを見せたい。
ゼロから始めるモバイルアプリ開発 / 
 AWS Mobile Hubハンズオン 本編
クラウドネイティブ世代がインフラに触れるということ
110409 silverlight square_lt_pub
OSC2011Tokyo/Fall OpenStack Swift入門
AWS re:Inforce reCap 注目のサービス
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
Jaws ug-chiba-vol7 forgevision-kitahara
OpenStack Object Storage; Usage
190731 chalice
JAWSUG architecture-crowler
エンジニアのための勉強会 #2 『Public Cloud - AWSの基礎 -』
AWSを利用してDevとOpsの間を考える
AWS新サービス活用事例
SWF+FlowFrameworkを使ってみた@JAWS-UG高尾山 2015.09.27
appengine活用事例資料@TDDBC札幌2.1
Aws privte20110406 arai
LocalStack
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス
Ad

More from Masayuki KaToH (20)

PPTX
APAC Community Summit DevOps Breakout 部屋.pptx
PDF
LINE × AWSの可能性や事例について語り合う夕べ
PPTX
俺とオープンデータ
PPTX
Capacitor
PPTX
俺と最近のクラウドAI系サービス
PPTX
俺と超高速リアルタイム検索APIをたぶん支えているAWS
PPTX
俺と AWS Summit 2019 振り返り
PPTX
俺と ha4go と Civic Tech Application & Open Data Catalog
PPTX
俺 と JAWS DAYS 2019
PPTX
俺と otoya
PPTX
俺とPrivate Forkと炭の選び方とC++からRubyへのブレイクスルーとポモドーロテクニックとコミュニティ貢献と浪人アカウントと糖尿病
PPTX
クラウドを用いるIoT開発における実費レポート
PPTX
俺と 2017 Code for Kanazawa Civic Hack Night運営
PPTX
俺とキーボード
PPTX
俺とディスプレイ
PPTX
俺と通知
PPTX
JAWS DAYS 2018 行ってきた & スタッフした
PPTX
JAWS DAYS 2018 行ってきた & スタッフした
PPTX
俺とGitHubとcodeシリーズ
PPTX
ラズパイでネット対応 学習リモコンをつくろう!
APAC Community Summit DevOps Breakout 部屋.pptx
LINE × AWSの可能性や事例について語り合う夕べ
俺とオープンデータ
Capacitor
俺と最近のクラウドAI系サービス
俺と超高速リアルタイム検索APIをたぶん支えているAWS
俺と AWS Summit 2019 振り返り
俺と ha4go と Civic Tech Application & Open Data Catalog
俺 と JAWS DAYS 2019
俺と otoya
俺とPrivate Forkと炭の選び方とC++からRubyへのブレイクスルーとポモドーロテクニックとコミュニティ貢献と浪人アカウントと糖尿病
クラウドを用いるIoT開発における実費レポート
俺と 2017 Code for Kanazawa Civic Hack Night運営
俺とキーボード
俺とディスプレイ
俺と通知
JAWS DAYS 2018 行ってきた & スタッフした
JAWS DAYS 2018 行ってきた & スタッフした
俺とGitHubとcodeシリーズ
ラズパイでネット対応 学習リモコンをつくろう!

俺と Active Storage + CloudFront