18406


タイトル通りなのですが、CakePHP3にAWS SDK for PHPをインストールし、それを使ってAWSのS3にインストールしようしています。

[code]

    <?php
        namespace App\Controller;
    
        require('/var/www/html/imagine/src/vendor/autoload.php');   
    
        use App\Controller\AppController;
    
        use Cake\ORM\TableRegistry;
    
        use Aws;
        use Aws\Common\Enum\Region;     
        use Aws\S3\S3Client;
        use Aws\S3\Enum\CannedAcl;
        use Aws\S3\Exception\S3Exception;
        use Aws\S3\MultipartUploader;
        use Aws\Exception\MultipartUploadException;
        use Aws\S3\Model\MultipartUpload\UploadBuilder;
    
        use Guzzle\Http\EntityBody;
    
    class ImagesController extends AppController {
        public function upload(){
    
            $end_point_url = '*******';
    
            $client = S3Client::factory(array(
                'credentials' => array(
                              'key' => '******',
                              'secret'  => '*****',
                          ),
                "region" => 'ap_northeast_1',
                "version" => '2006-03-01',
                'base_url' => "$end_point_url"
            ));
    
    
            $tmpfile = "/var/www/html/test.jpg";
    
            // バケット名
            $bucket = "s3-bucket-imagine";
            // アップロードファイル名
            $key = "test1.jpg";
    
            $uploader = new MultipartUploader($client, "$tmpfile", [
                    'bucket' => "$bucket",
                    'key'    => "$key"
            ]);
            //debug($uploader);
    
            try {
                    $result = $uploader->upload();
                    echo "Upload complete: {$result['ObjectURL']}\n";
            } catch (MultipartUploadException $e) {
                    echo $e->getMessage() . "\n";　//←!!!!!!!
            }
        }
    }
    ?>
    
[/code]

upload()でエラーが発生し、`echo $e->getMessage()`で以下のような表示されます。

[code]

    An exception occurred while initiating a multipart upload.
    
[/code]

`$uploader->upload()`でエラーが発生しているのは間違いないのですが、  
現状そのエラーを解決することができません。

なにかありましたら、随時補足いたしますのでよろしくお願いいたします。


CC BY-SA 3.0
2015-11-02T16:09:55.460
18332
2015-11-05T14:42:48.587
2015-11-03T23:46:24.137
12470
12470
question
cakephp aws amazon-s3
AWS SDK for PHPを使ってS3に画像をアップロードする

[code]

    $client = \Aws\S3\S3Client::factory(array(
                'profile' => 'default',
                'key' => '******',
                'secret' => '******',
                'region'  => 'ap-northeast-1',
        ));
    
[/code]

という書き方でどうですか？


CC BY-SA 3.0
2015-11-02T23:54:28.700
18341
2015-11-05T08:50:53.230
2015-11-05T08:50:53.230
10980
10980
18332
answer


リージョン文字列が正しくないのではないでしょうか。

`'ap_northeast_1'` → `'ap-northeast-1'` もしくは `Region::AP_NORTHEAST_1`


CC BY-SA 3.0
2015-11-04T14:59:02.273
18406
2015-11-05T14:42:48.587
2015-11-05T14:42:48.587
5008
5008
18332
answer