雑多なインフラエンジニア日記

技術ブログでっす~

静的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サイトを公開したい場合は、
通常であれば以下のようになります。

  1. S3の画面で test.hogehoge.net のバケット作成
  2. 自動的にS3のEndPointが発行される(test.hogehoge.net.s3-website-ap-northeast-1.amazonaws.com)
  3. test.hogehoge.net の PermissonsとStaticWebHostingの設定を行う
  4. バケット(test.hogehoge.net) にコンテンツ配置
  5. 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設定をする人はいないと思いますけど、一応接続できちゃうよ的な話です。。


以上ですー。