MyCSS

2012/02/21

S3のバケット名はよく考えて命名しましょう! はてなブックマークに追加

この間のJAWS-UG札幌勉強会で話しそびれた小ネタの一つです。タイトルを一読して「そんなことわざわざブログに書かなくても(ry」というAWSエキスパートな方は読み飛ばしてくださいねw


オブジェクトのURLについておさらい
S3に保存したオブジェクトは、すべてURLがつきます。 例えば、東京のS3に「hoge」というバケットを作り、そこに「fuga.jpg」を保存したとすれば、
http://s3-ap-northeast-1.amazonaws.com/hoge/fuga.jpg
というURLが割り当てられます。 また、バケット名をサブホストとしても有効なので、
http://hoge.s3-ap-northeast-1.amazonaws.com/fuga.jpg
でもOKです。

SSLも使えるよ!
さらに、S3はSSLも使えます。つまり、上記のオブジェクトは
  • https://s3-ap-northeast-1.amazonaws.com/hoge/fuga.jpg
  • https://hoge.s3-ap-northeast-1.amazonaws.com/fuga.jpg
でも行けちゃうわけですね。スバラシイ!

ヤバいのはどれだ?
さてここで問題です。以下のURLで、ヤバいのが一つだけあります。それはどれでしょう?(すべてパブリックにしてありますので、ブラウザで確認する事が出来ます。)
  1. http://s3-ap-northeast-1.amazonaws.com/with.dot/index.html
  2. https://s3-ap-northeast-1.amazonaws.com/with.dot/index.html
  3. http://with.dot.s3-ap-northeast-1.amazonaws.com/index.html
  4. https://with.dot.s3-ap-northeast-1.amazonaws.com/index.html

正解
実際にリンク先に飛んでみると分かるのですが、問題なのは4番です。要するに、バケット名に「ピリオド(ドット)」が入ったパターンです。SSL証明書の警告が出ましたよね?



S3のSSL証明書は、ワイルドカード証明書です。でも、ピリオドが含まれていると問題になります。ちょっと考えればすぐ分かる事なのですが、S3を直に参照させてSSLも通したい場合は、バケット名に気を使わないと後で泣く事になりますので要注意です!!

CNAMEも同じ事
もうひとつのURLパターン、手持ちのドメインでS3バケットに対してCNAMEしてあげるという方法もあります。例えば、
suberu.dateofrock.com
というバケットを作成して、なおかつ
images.hoge.com CNAME images.hoge.com.s3-ap-northeast-1.amazonaws.com
としてやれば、
のように、まるで自分のサーバーのようにURLを作る事が出来ます。
ですが、これもSSLだと証明書の問題が発生します。そもそも証明書とドメイン名違いますから!
というわけで、バケット名はよく考えて命名しましょう!

4 件のコメント :

DQNEO さんのコメント...

4番の罠にはまって泣いて改修したあとにこのブログを見ました。
もっと早くこの記事を見ていれば・・・

わかりやすい記事で素晴らしいですね。

Takehito Tanabe さんのコメント...

>DQNEO さん
意外にハマる落とし穴なんですよねー。コメントありがとうございます!

匿名 さんのコメント...

現在開発中のプロジェクトで、上記問題が潜伏していました。
先だって対策する事が出来ました。

ありがとうございました。

Takehito Tanabe さんのコメント...

>匿名 さん
事前に対策できたようでよかったです!

コメントを投稿