PHPからAmazon S3を利用するライブラリ
2009/05/19 18:33:17
PHPからAmazon S3へバケットを作成したりファイルを保存したりするライブラリで一番使いやすいのはGoogle Codeで配布されている「amazon-s3-php-class」だろう。
まずは、amazon-s3-php-class - Google Codeから「 s3-php5-curl_0.3.9.tar.gz(2009年5月19日時点)」をダウンロードする。
使うのは解凍してできたフォルダの中の「S3.php」のみ。使いたいスクリプトにこのファイルをインクルードして使うだけである。
■パケットの中身を一覧表示する
■バケットを新規作成する
・S3ではバケット名は全体で一意である必要があるらしいので他所で使われているバケット名を指定しても作成されない
※ただスクリプト上ではエラーは返ってこないが何度も何度もやった場合は何かあるんじゃないかな〜と思う。。。
■指定バケットの中にファイルを作成する
■指定バケット内の指定ファイルを削除する
作成したりするときに因数として指定する権限は「S3.php」の中身を見る限り
Googleで「php amazon s3」で検索するとわりと上に表示されるPHPからAmazon S3を利用するライブラリを3つ試してみた(うち一つは動作不可)[akiyan.com]は大変参考になったのだが、ソースまるごとコピーして動かなくて5分ほど悩んだ。。。結局インクルードするところが
なお、この「amazon-s3-php-class」はPHP5でしか動かないとのこと。
PHP4でのライブラリはどうやらないようなのでPHP4で動いているアプリ上に組み込みたい人にとっては非常に悩むところである。
しっかし、非常に便利なライブラリを作ってくれた人に感謝感謝である。
使うのは解凍してできたフォルダの中の「S3.php」のみ。使いたいスクリプトにこのファイルをインクルードして使うだけである。
■パケットの中身を一覧表示する
<?php include_once 'S3.php'; // AWSのaccesskey $accesskey = '***'; // AWSのsecretkey $secretkey = '***'; $s3 = new S3($accesskey, $secretkey); // 一覧取得したいバケット名 $bucketName = "***"; // パケットの中身を取得 $contents = $s3->getBucket($bucketName); print_r($contents); ?>
■バケットを新規作成する
<?php include_once 'S3.php'; // AWSのaccesskey $accesskey = '***'; // AWSのsecretkey $secretkey = '***'; $s3 = new S3($accesskey, $secretkey); // 作成したいバケット名 $bucketName = "***"; // バケットを「誰でも読込可能」で作成 $s3->putBucket($bucketName, S3::ACL_PUBLIC_READ); ?>・既に同名のバケットがある場合には何もしない
・S3ではバケット名は全体で一意である必要があるらしいので他所で使われているバケット名を指定しても作成されない
※ただスクリプト上ではエラーは返ってこないが何度も何度もやった場合は何かあるんじゃないかな〜と思う。。。
■指定バケットの中にファイルを作成する
<?php include_once 'S3.php'; // AWSのaccesskey $accesskey = '***'; // AWSのsecretkey $secretkey = '***'; $s3 = new S3($accesskey, $secretkey); // 指定バケット名 $bucketName = "***"; // コピー元ファイルパス $s3_outputfile = "./s3_outputfile.jpg"; // コピー先ファイルパス $s3_inputfile = "s3_inputfile.jpg"; // 指定バケットの中に指定ファイル名でかつ「誰でも読込可能」で作成 $s3->putObjectFile($s3_outputfile, $bucketName, $s3_inputfile, S3::ACL_PUBLIC_READ); ?>※コピー先ファイルパスを例えば「doc/s3_inputfile.jpg」になんかしたりすると、指定バケットの中に自動的に「doc」フォルダができてその中にファイルが保存されるので便利
■指定バケット内の指定ファイルを削除する
<?php include_once 'S3.php'; // AWSのaccesskey $accesskey = '***'; // AWSのsecretkey $secretkey = '***'; $s3 = new S3($accesskey, $secretkey); // 指定バケット名 $bucketName = "***"; // 削除したいファイルパス $s3_deletefile = "s3_deletefile.jpg"; // 指定バケットの中の指定ファイル名を削除する $s3->deleteObject($bucketName, $s3_deletefile) ?>
作成したりするときに因数として指定する権限は「S3.php」の中身を見る限り
ACL_PRIVATE(外からはアクセスできない) ACL_PUBLIC_READ(誰でも読込可能) ACL_PUBLIC_READ_WRITE(誰でも読込書込可能)の3つが指定可能なんだろうと思う。
Googleで「php amazon s3」で検索するとわりと上に表示されるPHPからAmazon S3を利用するライブラリを3つ試してみた(うち一つは動作不可)[akiyan.com]は大変参考になったのだが、ソースまるごとコピーして動かなくて5分ほど悩んだ。。。結局インクルードするところが
require_once 'Services/Amazon/S3.php';となっているというスペル間違いなので他の皆さんもご注意を。
なお、この「amazon-s3-php-class」はPHP5でしか動かないとのこと。
PHP4でのライブラリはどうやらないようなのでPHP4で動いているアプリ上に組み込みたい人にとっては非常に悩むところである。
しっかし、非常に便利なライブラリを作ってくれた人に感謝感謝である。