ja en ja en ja ja ja ja ja en ja ja ja ja en ja en ja en ja ja en ja ja ja ja ja en ja ja en ja en ja ja ja ja ja ja ja ja ja ja ja ja ja en en ja en ja ja en ja en ja ja ja ja ja en es en es pt ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja en ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja zh ja ja ja ja ja ja ja ru ja ja ja en
PHP を使ってマルチメディアのコンテンツと帯域幅を Amazon に任せる (IBM developerWorks) で配布されているs3.class.php(アーカイブ名はos-php-amzmm.s3class.zip)と、記事中のサンプルコード(のbuket名を変更したもの)を設置し、upload.phpからファイルをPUT(アップロード)してみました。そして、S3 Organizer で確認したところ、ファイルは確認できませんでした。
が、しかし、次のエラーで挫折しました。
SignatureDoesNotMatch    The request signature we calculated does not match the signature you provided. Check your key and signing method.     50 55 54 0a 0a 0a 57 65 64 2c 20 30 37 20 4a 61 6e ** ** 30 30 39 20 30 34 3a 32 39 3a 31 38 20 2b 30 30 30 30 0a 2f 64 65 76 2e 6f 6e 6c 69 66 65 2e 34 34 67 2e 62 69 7a    5FA***75CAF329E6    uOuUqle1Iv/Ie*********Q/To1DgMM3nCr6PIZFJdLZpEQ/WX4ACXrjk1zX1Gxg    ma/GIbpv******xr/q5sPpRqPg=    PUT Wed, 07 Jan 2009 04:29:18 +0000 /dev.******.biz    0G***************Z82
「SignatureDoesNotMatch」をベースに検索したら沢山ヒットしたのですが、s3.class.phpを直したという情報は見つけられず、原因も奥が深そうなので諦めました。
原因はおそらくコードのバグかAmazonの仕様変更でしょう。最初に試したのがコレだったので、原因がコードのバグか自分の手順ミスかどうかがはっきりせず、1時間程度調査に費やされました。検索で上位に来やすい記事なので同じように悩んでいる人も多いでしょう。それがこの記事を書くきっかけとなっています。
Cloud Frontにも対応した「amazon-s3-php-class」
なかなか検索にヒットしなくて諦めかけてたところに見つけたのが Undesigned: Amazon S3 PHP Class で配布されている amazon-s3-php-class - Google Code でした。
こちらをサンプルコード通りに使ってみたところ、問題なく成功しました。
putBucket('bucket', S3::ACL_PUBLIC_READ); $s3->putObjectFile('file.doc', 'bucket', 'docs/file.doc', S3::ACL_PUBLIC_READ);
amazon-s3-php-classは現在進行形でこまめにアップデートも行われており、最終更新日は2008-12-23となっています。なんとCloud Front用の機能も実装されているようです。
めでたく利用検討対象となりました。
PEAR::Services_Amazon_S3もalphaだけど良さそう
amazon-s3-php-classを見つけて一安心したところで、「そういえばPEARにあったりして」と思って検索してみたら、ありました。「PEAR :: Package :: Services_Amazon_S3」です。こちらもサンプルどおりに試してみたところ、正常動作しました。
getBuckets() as $bucket) { echo " " . htmlspecialchars($bucket->name) . " "; }
どうやら2008-04-07に登録されたパッケージで、まだalpha版なので pear install --force Services_Amazon_S3 で強制インストールしないと導入できません。また、Cloud Front用の機能も無いようです。
結構使いやすい感じがしたので、こちらも利用検討対象としました。
Cloud Front用の機能がありませんが、現時点ではphpからCloud Front用の設定はphpからは多分行わない気がします。というのも、Cloud Frontは最初に配信用の独自ドメインを設定すれば、配信に関してはあとはやることがないのです。phpから動的にbucketを作成したいなら別ですけどね。
IBMさんのコードはS3の紹介記事に付属するサンプルコードである
ちょっとIBMさんをDisるように見える記事になってしまいました。ただ、IBMさんのコードはライブラリ然としていますが、そもそもS3の紹介記事とそのサンプルコードなので、コードの保守を期待する方が贅沢というものです。記事とコード自体はすごく分かりやすくて参考になりましたしね。IBMさん、ありがとうございました!
カテゴリ:ホーム » ブログ » IT » プログラミング » PHPからAmazon S3を利用するライブラリを3つ試してみた(うち一つは動作不可)
前の記事:こんなに使えない画像なしフィード
後の記事:ヤンキーは携帯で稼いでる
コメント / トラックバック
コメント / トラックバック 2 件
次なるもの » Blog Archive » PHPからAmazonS3を利用するライブラリを3つ試してみた(うち一つは動作不可) : akiyan.com より:
2009-01-08 01:03
[...] original article [...]
2009-01-20 23:58
s3.class.phpを以下に変更したら動いたと思うので、一応書いてみます。
$contenttypestring = $contenttypestring.",application/x-www-form-urlencoded";
$contenttypestring = $contenttypestring;
でもCloudFront対応で更新されているamazon-s3-php-classの方が断然良いですね^^;
akiyan.com とは
個人サイト。管理人は秋田真宏。ニックネームは「akiyan」。
「今までの認識を覆(くつがえ)す、わかりやすい記事を書く」ことを目標にしているサイトです。話題の中心は生活とウェブ技術系です。
UberEATSの配達員をリリース当日にやってみた
iPhone の修理補償のためにAppleCare+や携行品保険に入ってはいけない
UR賃貸住宅が最強なことを惜しみなく紹介
あなたの知らない照明術
ためしてガッテンのカレー特集がすごい!
5泊5000円台の貸しふとんで、お客様用ふとんを持たない暮らし
ブログカテゴリ・月別一覧
エンターテイメント (199)
ビジネス・政治経済 (175)
生活・ライフスタイル (246)
2022-09-14 海岸や河川でバーベキューができるか調べる方法
2022-02-02 SequelizeでJSONフィールドをupdateする場合はsetメソッドを使う
2022-01-24 SwitchBotロックをSiriショートカットで「解錠」はできない
2022-01-04 テスラモデル3にTPMSセンサー無しで社外品ホイールとスタッドレスタイヤ を取り付けました
2022-01-01 サーフィンを始めました
2022-01-01 テスラモデル3ロングレンジに乗り換えたらアプデが楽しみになった
2021-12-29 歯列矯正を始めてからよく食べてるもの、完全食、フリーズドライお粥、豆腐 etc
2021-12-28 日光市ワーケーション補助金は最低1名から、申請はメールでOK
2021-11-19 2021年に買ってよかったもの
2021-08-12 自治体コロナワクチン予約は早朝チェックで最速で受けられる
akiyan.com 管理人メモ
自衛隊イラク日報 バグダッド日誌/バスラ日誌 一覧
エンコードマニアックス
オンラインCSS自動整形
はてなブックマーク人気エントリー
Copyright 1997,2022 akiyan.com, All rights reserved.