容量1GBにつき15セント/月、転送量1Gにつき20セント/月、
(100GB使っても2000円でおつりくるかも!)
で上限なしのストレージサービスAmazon S3
1バイト~5GBまでのファイルをアップロードでき、
しかも、信頼性はAmazonの使うストレージと同レベル。
99.99%の有効性を誇り、アクセス制御も可能・・・。

もう(静的ファイルの)スケーラビリティで頭を悩ます必要が無いぞぉ!
あれもこれもアップロードして・・夢が広がりんぐ。

などと、見た瞬間かなり燃えたのですが、

「肝心のアップロードするものが無い」

と気づいた瞬間、忘却のかなたへ追いやられていた同サービスですが、
最近、使うかも、な妄想が出始めたので、メモ。

とりあえず手始めに箱庭ノベルズIIで使ってみました。
素材のアップ先がS3です。

■オブジェクト
格納するデータのことですな。で、オブジェクトは、
「データそのもの」「バケット」「キー」「メタデータ」のデータを持つ、と。

■バケット
S3のストレージはバケットで区別されます。
ネットのドメインと同じイメージ。
これが、bucketname.s3.amazonaws.comでアクセス可能らしい。
つまりindex.htmlというオブジェクトを格納すると、
http://bucketname.s3.amazonaws.com/index.htmlでゲットできる、と。
(※DirectoryIndexとかあるわけではないので、index.htmlが必要です)

バケット名はA-Za-z0-9と、「-」「_」「.」が使えます。3?255字以内。
バケットは一人(IDkey)につき100個まで管理可能。でもバケットの中身0だと、消される模様。
バケットにはいくらでもオブジェクトを格納できます。
バケットの中にバケットは作れません。
バケットごとにアクセス制御が可能。

アクセス制御に関わらず、バケットはオーナーのみ削除可能。
バケットを削除するときは、バケットの中身が全部削除されている必要があります。

ちなみに、ユーザーIDとかでバケットを管理するわけではありません。
バケットは全ユーザーでユニークです。早い者勝ちです。
人目に触れることも少ないから特に良いバケット名とか無いかもしれませんが。
(と言いつつ、いくつか確保させて頂きましたが(笑))

■キー
オブジェクトにつける名前。当然ユニーク(バケット内で)。
UTF-8で最大1024バイト。

■メタデータ
UTF-8にて最大2KBでメタデータを作成できる。
これは強制ではなく、書式も自由(?)S3が解釈するものではないらしい。
で、RESTだと”x-amz-meta-“がheaderについてやってくる、と。
SOAPでは”x-amz-meta-“は付かないのかな。
メタデータに使えない文字が入ってたら、そのデータの代わりにそのエントリのナンバーを返す、らしい。

■オブジェクトへのアクセス
RESTとSOAPが使えます。
RESTは普通のHTTPでPUT、GET、DELETEできます。
アクセス制限していなければブラウザでもアクセスできます。

■オブジェクトの格納
S3は不完全なファイルは格納しません。
もし成功のレスポンスを得たら、それは完全なものが格納されたと思っていい。
オブジェクトがすでにあったら、新しいので上書きされます。

疲れたので、今日はここまで。

関連記事:
Amazon S3を使ってみた結果のメモ
Amazon S3をフロントエンドとして利用してみる
Amazon S3 料金体系変更(75%の人にとっては値下げ)