July 28, 2018
Lumenでs3を扱いたく、https://github.com/aws/aws-sdk-php-laravel を使用してみました。
ただ結局Filesystemを使用してしまいまして、上のライブラリを利用しませんでしたが、一応記事として残しておきます。
composer require aws/aws-sdk-php-laravel
bootstrap/app.php
に
$app->register(Aws\Laravel\AwsServiceProvider::class);
config/aws.php に以下のような内容で設定
<?php
use Aws\Laravel\AwsServiceProvider;
return [
'credentials' => [
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
],
'region' => env('AWS_REGION', 'us-east-1'),
'version' => 'latest',
'ua_append' => [
'L5MOD/' . AwsServiceProvider::VERSION,
],
];
準備としては以上です。
$this->s3 = app()->make('aws')->createClient('s3');
// バケット一覧
$results = $this->s3->listBuckets();
// アップロード
$results = $this->s3->putObject([
'Key' => 'test/a/test.jpg',
'Bucket' => env('AWS_BUCKET'),
'SourceFile' => base_path() . '/tests/Data/480x640.jpg',
'ACL' => 'public-read',
]);
// 削除
$result = $this->s3->deleteObjects([
'Bucket' => env('AWS_BUCKET'),
'Delete' => [
'Objects' => [
['Key' => 'test/a/test1.jpg'],
['Key' => 'test/a/test2.jpg'],
]
],
]);
5 モック
$aws = Mockery::mock('Aws\Sdk');
$this->app->instance('aws', $aws);
以上です。
Written by Ta Toshio who lives and works in Saitama, Japan .You should follow him on Twitter