読者です 読者をやめる 読者になる 読者になる

【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ロール」というのを使うとアクセスキーとシリアルキーをハードコードしなくてもいいということを知りました。
コンパネからいじるんですけどココは次回書けたら書いてみようと思います

以上です