Weitere ähnliche Inhalte
Mehr von shigeyuki azuchi (10)
Kürzlich hochgeladen (11)
Cloud Frontを使ったサイト公開とハマりどころ
- 1. Copyright ©2016 HAW International Inc. all rights reserved.
CloudFrontを使ったサイト公開と
ハマりどころ
2016/06/11
株式会社ハウインターナショナル
安土茂亨
- 2. Copyright ©2016 HAW International Inc. all rights reserved.
自己紹介
株式会社ハウインターナショナル
•クラウド事業
‣AWSのインテグレーションサービス
‣セキュアかつ高速な
WordPressホスティングサービス
•Blockchian事業
‣P2P型投票システムCongrechain
‣ブロックチェーン実証環境Chaintope
‣Blockchain Explorer
- 3. Copyright ©2016 HAW International Inc. all rights reserved.
AWSでサイト公開といえば?
Amazon S3
Static Site Hosting
● 安い
● 速い
● スケール
- 4. Copyright ©2016 HAW International Inc. all rights reserved.
でも動的な機能ある
簡単な機能であれば
サーバレスな実装
API Gateway AWS Lambda
Request
Response
- 5. Copyright ©2016 HAW International Inc. all rights reserved.
AWSが提供する高速なコンテンツ配信ネットワーク
でも今日はCloudFront
Amazon CloudFront
● 世界各地のエッジロケーションから
コンテンツを高速配信
● 独自ドメインのSSL証明書のサポート
● AWS Certificate Managerによる無料SSL
● HTTPのメソッド(GET、HEAD、POST、PUT、
DDELETE、etc)に応じたキャッシュ設定
● デバイスを検出してヘッダに付与
● AWS WAFによる保護
- 6. Copyright ©2016 HAW International Inc. all rights reserved.
CloudFrontのマルチオリジン機能
Amazon CloudFront
Amazon S3
Amazon EC2
静的コンテンツ
動的コンテンツ
静的コンテンツのオリジンとして S3、
動的コンテンツのオリジンとして EC2
を配置しBehaviorのPath Patternで
アクセスを切り替える
CloudFrontが前面なのでどちらのコンテ
ンツに対してもAWS WAFが適用可能
- 7. Copyright ©2016 HAW International Inc. all rights reserved.
静的サイトのログの集約
Amazon CloudFront
Amazon S3
Lambda
CloudWatch Logs
アクセスログ
ファイルのPUTをトリガーに
Lambda Function
実行
ログデータを
CloudWatch Logs
にプッシュ
無期限にログを保持可能
普通のCloudWatchのデータも
無期限になればいいのに。。
- 9. Copyright ©2016 HAW International Inc. all rights reserved.
index.htmlの補完
よくあるURL
https://www.haw.co.jp/
/index.html
index.htmlの補完
● CloudFrontのDefault Root Object
補完可能なのはホントにRoot Objectだけなので、
以下のようなパスのindex.htmlは補完されない
https://www.haw.co.jp/category/
● S3のStatic Site Hostingを有効化
index.htmlの補完はStatic Site Hostingのインデックスドキュメントにお任せ
省略されてる
- 10. Copyright ©2016 HAW International Inc. all rights reserved.
CloudFrontとS3の連携方法
Amazon CloudFront Amazon S3
● S3バケット
Origin Access Identityでアクセス元をCloudFrontに限定可能
階層化したindex.htmlの補完はNG
● S3のStatic Site Hosting
アクセス元をCloudFrontに限定することは不可能
階層化したindex.htmlの補完はOK
- 11. Copyright ©2016 HAW International Inc. all rights reserved.
S3オブジェクトのキー名
S3のオブジェクトのキー名として利用可能な文字列
● 英数字[0〜9 a〜z A〜Z]
● 特殊文字 !、-、_、.、*、'、
16進数としてURLエンコードが必要な文字
● "&"、"$"、"@"、"="、";"、":"、"+"、","、"?"、"–"
● 16進数の 00~1F(10 進数の 0~31)の範囲および 7F(10 進数の 127)の ASCII 文字
使わない方がいい文字
● ""、"{"、"}"、"^"、"`"、"["、"]"、">"、"<"、"#"、"|"、"~"、"%"
● 表示不可能な ASCII 文字(10 進数の 128 ~ 255 の文字)
- 12. Copyright ©2016 HAW International Inc. all rights reserved.
S3オブジェクトのキー名
16進数としてURLエンコードが必要な文字
● "&"、"$"、"@"、"="、";"、":"、"+"、","、"?"、"–"
● 16進数の 00~1F(10 進数の 0~31)の範囲および 7F(10 進数の 127)の ASCII 文字
<RoutingRules>
<RoutingRule>
<Condition>
<KeyPrefixEquals>?</KeyPrefixEquals>
</Condition>
<Redirect>
<ReplaceKeyPrefixWith>%3F</ReplaceKeyPrefixWith>
</Redirect>
</RoutingRule>
</RoutingRules>
S3のBucketのRedirection Rulesに
エンコード文字列を指定することで
アクセス可能
User-Agentに応じたリダイレクト
ルールが定義できるようになると便利
- 13. Copyright ©2016 HAW International Inc. all rights reserved.
EC2で公開するコンテンツのアクセス制限
Amazon CloudFront Amazon EC2
EC2へのアクセスはCloudFrontからのみに絞りたい
現状、EC2のセキュリティグループでCloudFrontの対象IPのみのInboundを許可す
る設定しかない。↓で対象がCLOUDFRONTのIPを判断(たまに追加される)
https://ip-ranges.amazonaws.com/ip-ranges.json
セキュリティグループで特定のAWSリソースが
指定できるようになるといいのに。
- 14. Copyright ©2016 HAW International Inc. all rights reserved.
CloudFrontとEC2間のSSL通信
Amazon CloudFront Amazon EC2
● Hostヘッダをオリジンに転送する
CloudFrontで使用している証明書(Common NameがCloundFrontで公開して
いるドメイン)を流用可能
● Hostヘッダをオリジンに転送しない
オリジンサーバ(EC2)に設定されているドメイン名の証明書を別途用意する
↑のルールから外れると502 Bad Gatewayになる。
- 15. Copyright ©2016 HAW International Inc. all rights reserved.
CloudFrontのタイムアウト時間の制約
Amazon CloudFront Amazon EC2
30秒
● HEAD、GETリクエスト
オリジンが30秒以内に応答を返さない場合、接続を中断しさらに2回接続を試み
る。3回目も失敗すると別のリクエストが来るまで接続を試みない。
● DELETE、OPTIONS、PATCH、POST、PUTリクエスト
オリジンが30秒以内に応答を返さない場合、接続を中断し再接続はしない。