cloud frontを使ったサイト公開とハマりどころ

15
Copyright ©2016 HAW International Inc. all rights reserved. CloudFrontを使ったサイト公開と ハマりどころ 2016/06/11 株式会社ハウインターナショナル 安土茂亨

Upload: shigeyuki-azuchi

Post on 10-Jan-2017

1.667 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Cloud Frontを使ったサイト公開とハマりどころ

Copyright ©2016 HAW International Inc. all rights reserved.

CloudFrontを使ったサイト公開とハマりどころ

2016/06/11株式会社ハウインターナショナル

安土茂亨

Page 2: Cloud Frontを使ったサイト公開とハマりどころ

Copyright ©2016 HAW International Inc. all rights reserved.

自己紹介

株式会社ハウインターナショナル

•クラウド事業

‣AWSのインテグレーションサービス

‣セキュアかつ高速な

WordPressホスティングサービス

•Blockchian事業

‣P2P型投票システムCongrechain

‣ブロックチェーン実証環境Chaintope

‣Blockchain Explorer

Page 3: Cloud Frontを使ったサイト公開とハマりどころ

Copyright ©2016 HAW International Inc. all rights reserved.

AWSでサイト公開といえば?

Amazon S3Static Site Hosting

● 安い

● 速い

● スケール

Page 4: Cloud Frontを使ったサイト公開とハマりどころ

Copyright ©2016 HAW International Inc. all rights reserved.

でも動的な機能ある

簡単な機能であれば

サーバレスな実装

API Gateway AWS Lambda

Request

Response

Page 5: Cloud Frontを使ったサイト公開とハマりどころ

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による保護

Page 6: Cloud Frontを使ったサイト公開とハマりどころ

Copyright ©2016 HAW International Inc. all rights reserved.

CloudFrontのマルチオリジン機能

Amazon CloudFront

Amazon S3

Amazon EC2

静的コンテンツ

動的コンテンツ

静的コンテンツのオリジンとして S3、動的コンテンツのオリジンとして EC2を配置しBehaviorのPath Patternでアクセスを切り替える

CloudFrontが前面なのでどちらのコンテンツに対してもAWS WAFが適用可能

Page 7: Cloud Frontを使ったサイト公開とハマりどころ

Copyright ©2016 HAW International Inc. all rights reserved.

静的サイトのログの集約

Amazon CloudFront Amazon S3 Lambda

CloudWatch Logs

アクセスログ

ファイルのPUTをトリガーにLambda Function

実行

ログデータをCloudWatch Logs

にプッシュ

無期限にログを保持可能普通のCloudWatchのデータも無期限になればいいのに。。

Page 8: Cloud Frontを使ったサイト公開とハマりどころ

Copyright ©2016 HAW International Inc. all rights reserved.

CloudFrontでサイト公開ハマリどころ

Page 9: Cloud Frontを使ったサイト公開とハマりどころ

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のインデックスドキュメントにお任せ

省略されてる

Page 10: Cloud Frontを使ったサイト公開とハマりどころ

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

Page 11: Cloud Frontを使ったサイト公開とハマりどころ

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 の文字)

Page 12: Cloud Frontを使ったサイト公開とハマりどころ

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に応じたリダイレクトルールが定義できるようになると便利

Page 13: Cloud Frontを使ったサイト公開とハマりどころ

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リソースが

指定できるようになるといいのに。

Page 14: Cloud Frontを使ったサイト公開とハマりどころ

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になる。

Page 15: Cloud Frontを使ったサイト公開とハマりどころ

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秒以内に応答を返さない場合、接続を中断し再接続はしない。