Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

8,401 views

Published on

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

Published in: Technology
  • Login to see the comments

  • Be the first to like this

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

  1. 1. Copyright ©2016 HAW International Inc. all rights reserved. CloudFrontを使ったサイト公開と ハマりどころ 2016/06/11 株式会社ハウインターナショナル 安土茂亨
  2. 2. Copyright ©2016 HAW International Inc. all rights reserved. 自己紹介 株式会社ハウインターナショナル •クラウド事業 ‣AWSのインテグレーションサービス ‣セキュアかつ高速な WordPressホスティングサービス •Blockchian事業 ‣P2P型投票システムCongrechain ‣ブロックチェーン実証環境Chaintope ‣Blockchain Explorer
  3. 3. Copyright ©2016 HAW International Inc. all rights reserved. AWSでサイト公開といえば? Amazon S3 Static Site Hosting ● 安い ● 速い ● スケール
  4. 4. Copyright ©2016 HAW International Inc. all rights reserved. でも動的な機能ある 簡単な機能であれば サーバレスな実装 API Gateway AWS Lambda Request Response
  5. 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. 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. 7. Copyright ©2016 HAW International Inc. all rights reserved. 静的サイトのログの集約 Amazon CloudFront Amazon S3 Lambda CloudWatch Logs アクセスログ ファイルのPUTをトリガーに Lambda Function 実行 ログデータを CloudWatch Logs にプッシュ 無期限にログを保持可能 普通のCloudWatchのデータも 無期限になればいいのに。。
  8. 8. Copyright ©2016 HAW International Inc. all rights reserved. CloudFrontでサイト公開 ハマリどころ
  9. 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. 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. 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. 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. 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. 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. 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秒以内に応答を返さない場合、接続を中断し再接続はしない。

×