静的WebサイトをS3で公開する場合のCNAMEは・・・
ホスト名部分は、何でも大丈夫です。
(xxx.s3-website-ap-northeast-1.amazonaws.com の xxxの部分のこと)
存在しないEndPointをCNAMEに設定しても接続できます。
試しに、適当に nslookup をしてみてください。
(nslookup abcdefghijk.s3-website-ap-northeast-1.amazonaws.com とか)
AWSがS3用に使っているグローバルIPが返ってきます。
(リージョン内のどこかのAZ)
しかし、良からぬ挙動をするかも知れないので正しく設定しましょう。
■解説
test.hogehoge.net というドメインで静的Webサイトを公開したい場合は、
通常であれば以下のようになります。
- S3の画面で test.hogehoge.net のバケット作成
- 自動的にS3のEndPointが発行される(test.hogehoge.net.s3-website-ap-northeast-1.amazonaws.com)
- test.hogehoge.net の PermissonsとStaticWebHostingの設定を行う
- バケット(test.hogehoge.net) にコンテンツ配置
- DNSサーバに以下のCNAMEレコードを登録
test.hogehoge.net CNAME test.hogehoge.net.s3-website-ap-northeast-1.amazonaws.com
DNS情報が伝播され次第、test.hogehoge.net に接続可能になります。
しかーし、実はCNAMEの右辺は「s3-website-ap-northeast-1.amazonaws.com」さえ
記載されていれば、接続できます!
※バケットを作ったのリージョンと、右辺のリージョン名は合わせる必要があります。
例えば、存在しないEndpointを指定しても接続できちゃいます。
test.hogehoge.net CNAME abcdef.s3-website-ap-northeast-1.amazonaws.com
でも
test.hogehoge.net CNAME 010101.s3-website-ap-northeast-1.amazonaws.com
でも
これはおそらく、
s3-website-ap-northeast-1.amazonaws.com のAレコード(AWSが管理しているもの)が、
ワイルドカードで設定されている為、存在しないEndPointでも、該当のリージョンの
AZのS3によろしくアクセスを振ってくれる
からだと思います。
流れは、だいたいこんな感じかと。
test.hogehoge.net にアクセス
→ 存在しないCNAMEを返す (abcdef.s3-website-ap-northeast-1.amazonaws.com)
→ 存在しないけどワイルドカードなので、s3-website-ap-northeast-1.amazonaws.com
のAレコードを返す
→ 該当のS3にアクセスしにいく
→ test.hogehoge.netバケットは存在するので、よろしくアクセスを転送?
(リライトかリバプロしている?)
まぁ、適当にCNAME設定をする人はいないと思いますけど、一応接続できちゃうよ的な話です。。
以上ですー。