【aws・fuelphp】EC2からS3へファイルアップロード・削除を「AWS SDK for PHP version3」で行ったのでメモ
はじめに
fuelphpからs3(aws)を利用する方法メモ - とりあえずphpとか
以前こちらにs3へのアップロードは書いたのですが、SDKのバージョンが3に変わっていて、少し変わっていたのでメモ
基本的には同じ。
SDKのダウンロード
コチラのページから下の方に「download the zip file」というリンクがあるのでこちらからSDKをダウンロード
composerを使ってインストールする方法もあるようだけど、今回はダンロードして直接ファイルを配置しました
cd /tmp wget -O aws.zip http://docs.aws.amazon.com/aws-sdk-php/v3/download/aws.zip unzip aws.zip mv aws ~/fuel/vendor/aws
SDKを使ってファイルのアップロード、削除を実装
<?php require(VENDORPATH.'aws/aws-autoloader.php'); use Aws\S3\S3Client; use Aws\S3\Exception\S3Exception; use Guzzle\Http\EntityBody; class Controller_Partner_Home extends Controller { // s3テスト try { // バケット名 $bucket = "bucket-name"; // 入出力ファイル $input_file_path = "・・・/sample.jpg"; $output_file_path = "images/system/sample.jpg"; $s3 = new S3Client(array( "region" => "ap-northeast-1", "version" => "2006-03-01", )); // アップロード $s3->putObject(array( "Bucket" => $bucket, "Key" => $output_file_path, "Body" => file_get_contents($input_file_path), )); // 削除 /* $s3->deleteObjects(array( 'Bucket' => $bucket, 'Delete' => array( 'Objects' => array( array('Key' => $output_file_path), ), 'Quiet' => true, ), )); */ echo "success"; } catch(Exception $ex) { echo "error"; } }
S3Clientクラスをインスタンス化するところが、factoryからnewすることと、newするときにversionを指定しなくてはいけなくなったようです
コード的には他はほぼ同じです。
あと、今回は「IAMロール」というのを使うとアクセスキーとシリアルキーをハードコードしなくてもいいということを知りました。
コンパネからいじるんですけどココは次回書けたら書いてみようと思います
以上です