Service(s3)がCDNに対応して日本へも高速に配信できるようになったので、日本国内でS3の注目が高まっているかと思います。ヨセミテでもS3の利用を検討しようということで、まずはphpからライブラリ経由でS3を試してみました。配布されているs3.class.php(アーカイブ名はos-php-amzmm.s3class.zip)と、記事中のサンプルコード(のbuket名を変更したもの)を設置し、upload.phpからファイルをPUT(アップロード)してみました。確認したところ、ファイルは確認できませんでした。原因調査のため、サンプルコード中でbucketを作成している部分である「$srvc->putBucket()」の返り値を出力してみるとawsから以下のエラーが返ってきていました。gmdate(DATE_RFC1123);に変更することで正しい形式になります。これは自力で修正できました。次のエラーで挫折しました。+0000/dev.******.biz</StringToSign><AWSAccessKeyId>0G***************Z82</AWSAccessKeyId></Error>「SignatureDoesNotMatch」をベースに検索したら沢山ヒットしたのですが、s3.class.phpを直したという情報は見つけられず、原因も奥が深そうなので諦めました。原因はおそらくコードのバグかAmazonの仕様変更でしょう。最初に試したのがコレだったので、原因がコードのバグか自分の手順ミスかどうかがはっきりせず、1時間程度調査に費やされました。検索で上位に来やすい記事なので同じように悩んでいる人も多いでしょう。それがこの記事を書くきっかけとなっています。こちらをサンプルコード通りに使ってみたところ、問題なく成功しました。S3::ACL_PUBLIC_READ);amazon-s3-php-classは現在進行形でこまめにアップデートも行われており、最終更新日は2008-12-23となっています。Front用の機能も実装されているようです。めでたく利用検討対象となりました。PEAR::Services_Amazon_S3もalphaだけど良さそうamazon-s3-php-classを見つけて一安心したところで、「そういえばPEARにあったりして」と思って検索してみたら、ありました。Services_Amazon_S3」です。こちらもサンプルどおりに試してみたところ、正常動作しました。強制インストールしないと導入できません。Front用の機能も無いようです。使いやすい感じがしたので、こちらも利用検討対象としました。Front用の設定はphpからは多分行わない気がします。Frontは最初に配信用の独自ドメインを設定すれば、配信に関してはあとはやることがないのです。phpから動的にbucketを作成したいなら別ですけどね。IBMさんのコードはS3の紹介記事に付属するサンプルコードであるちょっとIBMさんをDisるように見える記事になってしまいました。IBMさんのコードはライブラリ然としていますが、そもそもS3の紹介記事とそのサンプルコードなので、コードの保守を期待する方が贅沢というものです。記事とコード自体はすごく分かりやすくて参考になりましたしね。23:58s3.class.phpを以下に変更したら動いたと思うので、一応書いてみます。