SlideShare a Scribd company logo
ELBをオリジンとした
CloudFrontを構築してみた
ネットマーケティング 河村 太樹
自己紹介
• かわむら たいき 30さい ♂
• 前職:バックエンド実装、環境構築
• 現職:インフラ全般
• (開発的な)趣味:シェルスクリプトによる自動化
、シェルスクリプトによるログ調査
あらすじ
• CDNであるCloudFrontをAPIサーバのフロントエ
ンドにおいたよ
• なぜそんなことを?
• 気をつけること
• キャッシュとか
CloudFrontって?
• グローバルコンテンツ配信ネットワーク(CDN)
• 静的コンテンツ高速配信
• アタックに対する防御
CloudFront導入のメリット
• 通信の高速化
• ELBに直接アクセスするより速い(参考:
https://www.slideshare.net/AmazonWebServices/secured-api-acceleration-
with-engineers-from-amazon-cloudfront-and-slack/11)
• CloudFront Latency Based Routing
• TCP/IP Optimizations for the Network Path
• Keep-Alive Connections to reduce RTT
• AWS Backbone Network
• SSL/TLS Optimizations
CloudFront導入のメリット
• プログラムを極力いじらずに・・・
• 将来的にキャッシュさせるコンテンツはキャッシュさせたい
• WAFに対応
• 特定のルールでのアクセスを弾きたかった
• ex) http://hogehoge.com/phpMyAdmin/…
• プログラムの変更があれば・・・
• 署名付きURLに対応
従来
こうしました
どう設定した?
全部
全部
気をつけること
ハマったこと
• ELBにもSSLの設定がいること
気をつけること
ハマったこと
• CloudFrontからOriginへの実行タイムアウトが30
秒
• とても長い実行時間の画面がある場合には不
向き
• 変更不可
気をつけること
ハマったこと
• エラー発生時、CloudFrontのエラーログを見ることがで
きない
• 画面に「CloudFrontのエラー」「リクエストID:
XXXXXXしか出ない」
• スクショ送られると・・・
• サポートにスクショをそのまま送る
• 自分で文字起こす
気をつけること
ハマったこと
• アクセスログが1ディレクトリ
• Athenaが辛い・・・
• ELBのアクセスログのように適当にディレクト
リを切ってくれれば・・・
• lambdaかなにかで定期的にディレクトリ作成、
ファイル移動するものを自作せよとのお達し
気をつけること
ハマったこと
• X-Forwarded-For
• プログラム/ミドルウェアのヘッダでアクセス
制御している場合、CloudFrontからのアクセス
もヘッダに追記される
まとめ
• 動的コンテンツにCloudFrontを使ってみました
• プログラムの変更はほぼなく利用できました
• 注意する点はいくつかあります
• ご清聴ありがとうございました

More Related Content

What's hot

20210216 AWS Black Belt Online Seminar AWS Database Migration Service
20210216 AWS Black Belt Online Seminar AWS Database Migration Service20210216 AWS Black Belt Online Seminar AWS Database Migration Service
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
Amazon Web Services Japan
 
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
Amazon Web Services Japan
 
分散トレーシングAWS:X-Rayとの上手い付き合い方
分散トレーシングAWS:X-Rayとの上手い付き合い方分散トレーシングAWS:X-Rayとの上手い付き合い方
分散トレーシングAWS:X-Rayとの上手い付き合い方
Recruit Lifestyle Co., Ltd.
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Trainocate Japan, Ltd.
 
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
Amazon Web Services Japan
 
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
Amazon Web Services Japan
 
20190522 AWS Black Belt Online Seminar AWS Step Functions
20190522 AWS Black Belt Online Seminar AWS Step Functions20190522 AWS Black Belt Online Seminar AWS Step Functions
20190522 AWS Black Belt Online Seminar AWS Step Functions
Amazon Web Services Japan
 
20191001 AWS Black Belt Online Seminar AWS Lake Formation
20191001 AWS Black Belt Online Seminar AWS Lake Formation 20191001 AWS Black Belt Online Seminar AWS Lake Formation
20191001 AWS Black Belt Online Seminar AWS Lake Formation
Amazon Web Services Japan
 
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline
Amazon Web Services Japan
 
AWS Black Belt Online Seminar AWS Direct Connect
AWS Black Belt Online Seminar AWS Direct ConnectAWS Black Belt Online Seminar AWS Direct Connect
AWS Black Belt Online Seminar AWS Direct Connect
Amazon Web Services Japan
 
20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説
20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説
20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説
Amazon Web Services Japan
 
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
Amazon Web Services Japan
 
AWSで作る分析基盤
AWSで作る分析基盤AWSで作る分析基盤
AWSで作る分析基盤
Yu Otsubo
 
20190226 AWS Black Belt Online Seminar Amazon WorkSpaces
20190226 AWS Black Belt Online Seminar Amazon WorkSpaces20190226 AWS Black Belt Online Seminar Amazon WorkSpaces
20190226 AWS Black Belt Online Seminar Amazon WorkSpaces
Amazon Web Services Japan
 
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
Amazon Web Services Japan
 
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Web Services Japan
 
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
Amazon Web Services Japan
 
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
Amazon Web Services Japan
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Amazon Web Services Japan
 
20190604 AWS Black Belt Online Seminar Amazon Simple Notification Service (SNS)
20190604 AWS Black Belt Online Seminar Amazon Simple Notification Service (SNS)20190604 AWS Black Belt Online Seminar Amazon Simple Notification Service (SNS)
20190604 AWS Black Belt Online Seminar Amazon Simple Notification Service (SNS)
Amazon Web Services Japan
 

What's hot (20)

20210216 AWS Black Belt Online Seminar AWS Database Migration Service
20210216 AWS Black Belt Online Seminar AWS Database Migration Service20210216 AWS Black Belt Online Seminar AWS Database Migration Service
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
 
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
 
分散トレーシングAWS:X-Rayとの上手い付き合い方
分散トレーシングAWS:X-Rayとの上手い付き合い方分散トレーシングAWS:X-Rayとの上手い付き合い方
分散トレーシングAWS:X-Rayとの上手い付き合い方
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
 
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
 
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
 
20190522 AWS Black Belt Online Seminar AWS Step Functions
20190522 AWS Black Belt Online Seminar AWS Step Functions20190522 AWS Black Belt Online Seminar AWS Step Functions
20190522 AWS Black Belt Online Seminar AWS Step Functions
 
20191001 AWS Black Belt Online Seminar AWS Lake Formation
20191001 AWS Black Belt Online Seminar AWS Lake Formation 20191001 AWS Black Belt Online Seminar AWS Lake Formation
20191001 AWS Black Belt Online Seminar AWS Lake Formation
 
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline
 
AWS Black Belt Online Seminar AWS Direct Connect
AWS Black Belt Online Seminar AWS Direct ConnectAWS Black Belt Online Seminar AWS Direct Connect
AWS Black Belt Online Seminar AWS Direct Connect
 
20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説
20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説
20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説
 
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
 
AWSで作る分析基盤
AWSで作る分析基盤AWSで作る分析基盤
AWSで作る分析基盤
 
20190226 AWS Black Belt Online Seminar Amazon WorkSpaces
20190226 AWS Black Belt Online Seminar Amazon WorkSpaces20190226 AWS Black Belt Online Seminar Amazon WorkSpaces
20190226 AWS Black Belt Online Seminar Amazon WorkSpaces
 
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
 
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身
 
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
 
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
 
20190604 AWS Black Belt Online Seminar Amazon Simple Notification Service (SNS)
20190604 AWS Black Belt Online Seminar Amazon Simple Notification Service (SNS)20190604 AWS Black Belt Online Seminar Amazon Simple Notification Service (SNS)
20190604 AWS Black Belt Online Seminar Amazon Simple Notification Service (SNS)
 

Similar to 動的コンテンツをオリジンとしたCloudFrontを構築してみた

実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターンHiroyasu Suzuki
 
DevOps and Compliance and Security
DevOps and Compliance and SecurityDevOps and Compliance and Security
DevOps and Compliance and Security
Kazushi Kamegawa
 
Cloudformation
CloudformationCloudformation
Cloudformation
靖 小田島
 
負荷対策はCloudFront
負荷対策はCloudFront負荷対策はCloudFront
負荷対策はCloudFront
iret, Inc.
 
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポート
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポートJAWS-UGアーキテクチャ専門支部 ServerlessConfレポート
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポート
真吾 吉田
 
Abyss: Behind The Scenes of LINE Web Service Distribution
Abyss: Behind The Scenes of LINE Web Service DistributionAbyss: Behind The Scenes of LINE Web Service Distribution
Abyss: Behind The Scenes of LINE Web Service Distribution
LINE Corporation
 
AWSクラウドデザインパターン - JEITA講演 -
AWSクラウドデザインパターン - JEITA講演 - AWSクラウドデザインパターン - JEITA講演 -
AWSクラウドデザインパターン - JEITA講演 -
SORACOM, INC
 
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
DeNA
 
JAWS DAYS 2015
JAWS DAYS 2015JAWS DAYS 2015
JAWS DAYS 2015
陽平 山口
 
オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践Shumpei Shiraishi
 
Salesforce Lightning をやってみてあれこれ
Salesforce Lightning をやってみてあれこれSalesforce Lightning をやってみてあれこれ
Salesforce Lightning をやってみてあれこれ
寛 吉田
 
ソフトバンクにおける Java による クラウドネイティブの実現
ソフトバンクにおける Java による クラウドネイティブの実現ソフトバンクにおける Java による クラウドネイティブの実現
ソフトバンクにおける Java による クラウドネイティブの実現
Shigeru Tatsuta
 
CloudFormation/SAMのススメ
CloudFormation/SAMのススメCloudFormation/SAMのススメ
CloudFormation/SAMのススメ
Eiji KOMINAMI
 
オラクル・インフラストラクチャー・サービス(IaaS)最新情報(Oracle Cloud Days Tokyo 2015)
オラクル・インフラストラクチャー・サービス(IaaS)最新情報(Oracle Cloud Days Tokyo 2015)オラクル・インフラストラクチャー・サービス(IaaS)最新情報(Oracle Cloud Days Tokyo 2015)
オラクル・インフラストラクチャー・サービス(IaaS)最新情報(Oracle Cloud Days Tokyo 2015)
オラクルエンジニア通信
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
 
これからのクラウドネイティブアプリケーションの話をしよう
これからのクラウドネイティブアプリケーションの話をしようこれからのクラウドネイティブアプリケーションの話をしよう
これからのクラウドネイティブアプリケーションの話をしよう
真吾 吉田
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
Keisuke Nishitani
 
VIOPS10: DMM.comのインフラのこれから
VIOPS10: DMM.comのインフラのこれからVIOPS10: DMM.comのインフラのこれから
VIOPS10: DMM.comのインフラのこれから
VIOPS Virtualized Infrastructure Operators group ARCHIVES
 
AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - SORACOM, INC
 
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたいはじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
Kazumi IWANAGA
 

Similar to 動的コンテンツをオリジンとしたCloudFrontを構築してみた (20)

実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン
 
DevOps and Compliance and Security
DevOps and Compliance and SecurityDevOps and Compliance and Security
DevOps and Compliance and Security
 
Cloudformation
CloudformationCloudformation
Cloudformation
 
負荷対策はCloudFront
負荷対策はCloudFront負荷対策はCloudFront
負荷対策はCloudFront
 
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポート
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポートJAWS-UGアーキテクチャ専門支部 ServerlessConfレポート
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポート
 
Abyss: Behind The Scenes of LINE Web Service Distribution
Abyss: Behind The Scenes of LINE Web Service DistributionAbyss: Behind The Scenes of LINE Web Service Distribution
Abyss: Behind The Scenes of LINE Web Service Distribution
 
AWSクラウドデザインパターン - JEITA講演 -
AWSクラウドデザインパターン - JEITA講演 - AWSクラウドデザインパターン - JEITA講演 -
AWSクラウドデザインパターン - JEITA講演 -
 
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
 
JAWS DAYS 2015
JAWS DAYS 2015JAWS DAYS 2015
JAWS DAYS 2015
 
オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践
 
Salesforce Lightning をやってみてあれこれ
Salesforce Lightning をやってみてあれこれSalesforce Lightning をやってみてあれこれ
Salesforce Lightning をやってみてあれこれ
 
ソフトバンクにおける Java による クラウドネイティブの実現
ソフトバンクにおける Java による クラウドネイティブの実現ソフトバンクにおける Java による クラウドネイティブの実現
ソフトバンクにおける Java による クラウドネイティブの実現
 
CloudFormation/SAMのススメ
CloudFormation/SAMのススメCloudFormation/SAMのススメ
CloudFormation/SAMのススメ
 
オラクル・インフラストラクチャー・サービス(IaaS)最新情報(Oracle Cloud Days Tokyo 2015)
オラクル・インフラストラクチャー・サービス(IaaS)最新情報(Oracle Cloud Days Tokyo 2015)オラクル・インフラストラクチャー・サービス(IaaS)最新情報(Oracle Cloud Days Tokyo 2015)
オラクル・インフラストラクチャー・サービス(IaaS)最新情報(Oracle Cloud Days Tokyo 2015)
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
 
これからのクラウドネイティブアプリケーションの話をしよう
これからのクラウドネイティブアプリケーションの話をしようこれからのクラウドネイティブアプリケーションの話をしよう
これからのクラウドネイティブアプリケーションの話をしよう
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
 
VIOPS10: DMM.comのインフラのこれから
VIOPS10: DMM.comのインフラのこれからVIOPS10: DMM.comのインフラのこれから
VIOPS10: DMM.comのインフラのこれから
 
AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 -
 
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたいはじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
 

動的コンテンツをオリジンとしたCloudFrontを構築してみた

Editor's Notes

  1. それでは、ELBをオリジンとしたCloudFrontを構築してみた、という内容をお話してまいりたいと思います。
  2. まず自己紹介から かわむらたいき30歳オス まぁ見たまんまですかね。 前職では新卒入社し、LAMP環境構築してAPI作成や管理画面作成をしていました。 現職では前職おざなり?になっていたインフラを鍛えようと思いインフラを中心に仕事させてもらってます。 通常の趣味はいっぱいあるので割愛して開発的な趣味を話すと、シェルスクリプトによる自動化とシェルスクリプトによるログ調査を嗜んでいます。awkとかsedとかgrepとかですね。 ここまで聞くとただの変態ですが、普通の趣味もいっぱいあります。
  3. では、本題に戻りまして、今日お話する内容をサクッと 簡単です。やったことと、なぜやったかと、どうやったかです。加えて、気をつけること、という内容です。
  4. ではまず、もしかしたらCloudFrontのことをご存じない方もいらっしゃるかもしれませんので CloudFrontの簡単な内容を説明させていただきます。 CloudFrontはグローバルコンテンツ配信ネットワーク、通称CDNと言われるもので、AWSのマネージドサービスとして提供されているものです。 もっと砕くと、画像やら動画やらの(いかがわしくない方の)静的コンテンツ、staticコンテンツをエッジサーバにキャッシュすることで、オリジンサーバ、元々画像をおいているサーバへのアクセスを減らし、高速にコンテンツを配信するものとなっております。 それに加えてAWSではWAFという機能がありまして、特定のルールを設定するとそのアクセスだけ通したり拒否したりをできるものなのですが、それとCloudFrontを組み込ませることができるので、それを目的に導入することもあるのではないかなと思っています。 本日は、このCloudFrontを画像配信のためではなく、APIのフロントとしておいた、という話を今日はします。おいおい、ちょっと前に静的コンテンツをキャッシュするって言ったじゃないか、APIのような動的コンテンツをキャッシュしたら某フリマアプリみたいに別の人の情報でちゃうんじゃないの?という疑問をお持ちの皆様に対する回答を今日のキモとしてお話させていただきます。 なぜまたキャッシュさせないAPIにCloudFrontをかませる必要が?ということになりますが、メリットはいくつかあります。
  5. まずはこちら。 通信の高速化が見込まれます。 直接ELBにアクセスしたほうが速いんじゃないか?と普通ならば思うところですが、同じくAPIの通信も全てCloudFront経由にしたSlackさん調査によりますと、CloudFrontを経由したときのほうがルーティングや設定が最適化されており、レイテンシが小さくなるそうです。
  6. 次にこちらです。 CloudFrontに限らず、新しく導入するときに問題になってる方もいらっしゃるかと思うのですが、新規に何か導入する際にAPI作成担当者に変更をお願いする必要があるのだけども、他の施策等が優先されがち、というケースがあるかと思います。 そんな中でもCloudFrontはプログラムの変更をすることなくキャッシュの設定やWebApplicationFirewallを設定することができます。 例えばよくみるアタックの一つのphpMyAdminに関するアクセスをCloudFront側で弾いてしまうことによって、不要なアクセスをAPIサーバに渡さないようにしています。 プログラムの変更があれば、署名付きURLに対応することもできます。
  7. システムどうしたか、を一応図的にお話させていただきます。 図にするほどの説明でもないと思ってはいますが。 従来ではよくありがちなELBの下にAPIサーバがぶら下がっている構成にしておりました。 変更後もこれは変わらないのですが。
  8. 変更後はこうなっております。 ELBの前に、CloudFrontを噛ましているような形ですね。 本当に図が必要だったのかというくらいの内容だと思います。 Slackさんの調査では、ELBに直接アクセスするよりCloudFrontを経由したほうが速かったとの、直感的にはびっくりな結果が出たそうです。どれくらい涙ぐましいチューニングがなされているのか、時間があったら調べてみたいなと思いました。 つまりまだしてないということです
  9. つぎにどう設定したかをお話します。 とはいえ全部ではなく、オリジンがAPIのときのCloudFrontの設定のときに注目すべきポイントです。 まず、Forward HeadersをAllにします。これ以外の方法もあるにはあるっぽいのですが、ひとまず安全にすべての通信をオリジンに問い合わせてほしいので弊社ではこうしました。他にはWhiteList、Noneが選べます。そうすると下の項目のObject Cachingが利用できるようになり、OriginのCache-Controllヘッダの中身を見てCloudFrontにキャッシュをさせるか、それを無視してカスタマイズでキャッシュさせるかを選ぶことができます。 Cookieも相手がAPIサーバなので転送してあげます。 S3がオリジンの場合はNoneにするとよいそうです。 クエリ文字列も全て転送してあげましょう。 クエリ文字列にかかわらず同じものを返すときには違う設定にすると良いそうです。
  10. 次から、気をつけることやハマったことについて話していこうと思います。 まずはじめですが、ELBにもSSLの設定が要ります、ということです。 なんだ当たり前じゃないか、と思われる方もいらっしゃるかと思いますが、コンソールでポチポチしていると、ついELBにインスタンスを釣っている感覚になってしまって、検証環境でCloudFrontの方のSSLを更新したのにELBのSSLの更新を忘れて通信できなくなった、ということがあります。
  11. 次ですが、CloudFrontからオリジンへの実行タイムアウトがAWS側で決められており、それが30秒ということです。 ですので、とても長い実行時間の画面があるサービスには導入に注意したほうがいいです。 これは設定などすることができず、30秒決め打ちされています。
  12. 次ですが、ちょっと前のスライドに関連してまして、とあるときに実装/検証担当者から「こんなエラーが出たんだけど」ってスクショをもらいました。みると「CloudFrontのエラー」「リクエストIDズラズラズラ〜」っていう情報だけなんですね。 もちろんこれだけではわからないので調べてみようと思ったのですが、エラーログみたいなのがないのです。 なので、問い合わせるしかなく、サポートにそのままスクショを送るか・・・優しい人は自分で文字起こして送るという手段でしかわかりません。ちなみに、そんな風に送ったら「タイム・アウトしてますね」と回答が帰ってきて、前のスライドの内容になります。
  13. 次ですが、アクセスログが1ディレクトリにバリバリ吐かれることです。 ELBの場合はよしなに年月日でディレクトリを切ってくれるのですが、CloudFrontでは気の利いたことをしてくれないようです。ELB担当者を見習ってほしいです。 これのせいで、Athenaで日ごとにテーブル作ってアクセス解析、に一手間かけることになります。 ちなみに「なんとかならんのですか?」と問い合わせたところ、ラムダかなにかでやって、とのお達しでした
  14. つぎですが、よくミドルウェアやアプリケーションでアクセス元IPアドレスで動作を変えていることがあるかと思います。CloudFrontを挟むと、X-Forwarded-Forにカンマ区切りでIPアドレスが追記されるので、それをうまく処理できるようにしないと「IPが一致しない!」みたいなことになってアクセスできないみたいなことになるかもしれません。
  15. まとめです 動的コンテンツにCloudFrontを使ってみました プログラムの変更はほぼなく利用できましたので、割と喜ばれました 注意する点はいくつかありますので、今日のことが皆様の参考になることがあれば幸いです。