S3静的Webホスティング URL

S3バケットが静的Webサイトホスティング用に設定されている場合に使用される特別なURL形式を解析します。標準のS3エンドポイントとの違いを理解します。

Practical Patterns

詳細な説明

S3静的WebサイトホスティングのエンドポイントURL

バケットが静的Webサイトホスティング用に設定されている場合、S3は標準のREST APIエンドポイントとは異なる動作をする特別なWebサイトエンドポイントを提供します。

Webサイトエンドポイント形式

http://BUCKET.s3-website-REGION.amazonaws.com
http://BUCKET.s3-website.REGION.amazonaws.com

注意:形式はリージョンによって、リージョンの前にダッシュまたはドットを使用します。

http://my-blog.s3-website-us-east-1.amazonaws.com/posts/hello-world.html

解析されたコンポーネント

コンポーネント
バケット my-blog
キー posts/hello-world.html
リージョン us-east-1
タイプ Webサイトエンドポイント

WebサイトエンドポイントとRESTエンドポイントの違い

機能 RESTエンドポイント Webサイトエンドポイント
HTTPS サポート HTTPのみ(HTTPSにはCloudFrontを使用)
インデックスドキュメント 非サポート /パスにindex.htmlを配信
エラードキュメント XMLエラーレスポンス カスタムエラーページ(例:404.html
リダイレクト 非サポート リダイレクトルールをサポート
ListBucket XMLリスティングを返す 403を返す(ディレクトリリスティングなし)
URL形式 s3.amazonaws.com s3-website.amazonaws.com

CloudFront統合

本番環境では通常、Webサイトエンドポイントの前にCloudFrontを配置して以下を提供します:

  1. HTTPS — WebサイトエンドポイントはHTTPのみサポート。
  2. カスタムドメイン — ドメインをCloudFrontディストリビューションにマッピング。
  3. キャッシュ — S3リクエストコストを削減しレイテンシーを改善。
  4. 地理的ルーティング — エッジロケーションからコンテンツを配信。

CloudFrontオリジン:

my-blog.s3-website-us-east-1.amazonaws.com

重要:インデックスドキュメントとリダイレクト動作が必要な場合は、CloudFrontオリジンとしてWebサイトエンドポイントURLを使用してください(RESTエンドポイントではなく)。

一般的な設定

{
  "IndexDocument": { "Suffix": "index.html" },
  "ErrorDocument": { "Key": "404.html" },
  "RoutingRules": [
    {
      "Condition": { "KeyPrefixEquals": "old/" },
      "Redirect": { "ReplaceKeyPrefixWith": "new/" }
    }
  ]
}

ユースケース

直接S3 WebサイトホスティングからCloudFrontに静的Webサイトを移行し、インデックスドキュメントとカスタムエラーページの動作を維持するために正しいS3 Webサイトエンドポイントがオリジンとして使用されていることを確認する。

試してみる — AWS S3 URL Parser

フルツールを開く