フリーランス 技術調査ブログ

フリーランス/エンジニア Ruby Python Nodejs Vuejs React Dockerなどの調査技術調査の備忘録

aws-sdk-php-laravelをインストールしてみる

はじめに

  • aws-sdk-php-laravelを利用してファイルのアップロードを実装する github.com

インストール

  • Composerを介してインストールできます。composer.jsonファイルに下記の記述を追加する
{
    "require": {
        "aws/aws-sdk-php-laravel": "~3.0"
    }
}
  • Composerの更新を実行します
$ composer update

設定

  • Laravelで、config / app.phpでプロバイダーキーを見つけて、AWSサービスプロバイダーを登録します。
  'providers' => array(
        // ...
        Aws\Laravel\AwsServiceProvider::class,
    )
'aliases' => array(
        // ...
        'AWS' => Aws\Laravel\AwsFacade::class,
    )

環境変数

  • .envファイルに下記を追記する
AWS_ACCESS_KEY_ID=<アクセスキーを指定する>
AWS_SECRET_ACCESS_KEY=<シークレットキーを指定する>
AWS_REGION=us-east-1 ## 対象リージョンを指定する
  • 構成ファイルをカスタマイズする場合、下記のコマンドを実行する
$ php artisan vendor:publish  --provider="Aws\Laravel\AwsServiceProvider"
Copied File [/vendor/aws/aws-sdk-php-laravel/config/aws_publish.php] To [/config/aws.php]
Publishing complete.
  • /config/aws.phpファイルが生成される。特に修正はしない
<?php

use Aws\Laravel\AwsServiceProvider;

return [

    /*
    |--------------------------------------------------------------------------
    | AWS SDK Configuration
    |--------------------------------------------------------------------------
    |
    | The configuration options set in this file will be passed directly to the
    | `Aws\Sdk` object, from which all client objects are created. This file
    | is published to the application config directory for modification by the
    | user. The full set of possible options are documented at:
    | http://docs.aws.amazon.com/aws-sdk-php/v3/guide/guide/configuration.html
    |
    */
    '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,
    ],
];

実装

use App;

$s3 = App::make('aws')->createClient('s3');
$iterator = $s3->getIterator('ListObjects',[
            'Bucket' => '<バケット名>',
]);
foreach ($iterator as $object) {
   echo $object['Key'] . "\n";
}
  • 下記のエラーが発生したので、use Appの記述を追記しました。 github.com