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を配置して以下を提供します:
- HTTPS — WebサイトエンドポイントはHTTPのみサポート。
- カスタムドメイン — ドメインをCloudFrontディストリビューションにマッピング。
- キャッシュ — S3リクエストコストを削減しレイテンシーを改善。
- 地理的ルーティング — エッジロケーションからコンテンツを配信。
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サイトエンドポイントがオリジンとして使用されていることを確認する。