AWS S3とPHP SDKについて
S3について
言わずと知れたファイルホスティングサービス
一つのAWSアカウントで、複数のbucketを作ることができる
bucket
ファイルの入れ物
bucket毎にリージョンが指定可能
1つのbucketに複数のファイルを格納できる
AWS-SDK for PHP
PHPからAWSの各種サービスを操作するためのSDK
http://aws.amazon.com/jp/sdkforphp/
AWSのPHP-SDK、S3クラスでよく使うであろうメソッドの使い方
create_bucket($bucket, $region, $acl = self::ACL_PRIVATE, $opt = null)
$regionで指定するリージョンに$bucketという名前のbucketを作成する。
$bucketは任意の文字列(小文字英数及び-)
$region,$aclにはconstで宣言されている定数を指定する。
$aclでパーミッションが設定できる。(デフォルトのACL_PRIVATEはオーナーのみ読み書き可)
$optは内部で$this->authenticate()に渡される。
//例 backetをTOKYOリージョンに作成
$s3 = new AmazonS3();
$bucket = 'backet-name-must-be-unique';
$create_bucket_response = $s3->create_bucket($bucket, AmazonS3::REGION_TOKYO);
if($create_bucket_response->isOK()){
//$bucketという名前のbucketが作成できたときの処理
}else{
//bucketの作成に失敗したときの処理
}
create_object($bucket, $filename, $opt = null)
$bucketに$filenameというオブジェクトを格納する。
$bucketには存在するbucketの名前を、$filenameにはS3上でのファイル名を指定する。
$optにはオブジェクトのパーミッションやアップロードするファイルのパス/URLなどを指定する。
ローカルディスク上のファイルをアップロードするには$optに
array('fileUpload'=>'ローカルディスク上のファイルパス')
を指定する
//例 pict01.jpg、pict02.jpgをアップロードする
//pict01.jpgをACL_PRIVATEでアップロード
$s3->batch()->create_object($bucket,'pict01.jpg',
array('fileUpload'=>'/path/to/pict01.jpg',
'acl'=>AmazonS3::ACL_PRIVATE
));
//aclを省略した場合は、bucketのアクセス権が適用される
$s3->batch()->create_object($bucket,'pict02.jpg',
array('fileUpload'=>'/path/to/pict02.jpg'
));
$file_upload_response = $s3->batch()->send();
if($file_upload_response->areOK()){
//アップロード成功
}else{
//アップロード失敗
}
batch()
及びsend()
は親クラスのメソッドで、複数の処理をキューに貯め、send()
呼び出し時にまとめて処理することができる。
get_object_url($bucket, $filename, $preauth = 0, $opt = null)
$bucket内の$filenameオブジェクトにWebアクセスするためのURLを返す。
パーミッションがPRIVATEになっているファイルには$preauthでWebアクセス可能な時間制限を設定する。
$preauthにはUNIXタイムスタンプの他に、strtotimeの引数と同様の文字列を指定できる。
//例 設定後10分間ダウンロード可能なURLを発行する
$url = $s3->get_object_url($bucket, $filename, '10 minutes');
他にもたくさんありますが、今回はこのくらいで、、、