LoginSignup
16
16

More than 5 years have passed since last update.

【Laravel5】FileSystemsを使用してGCSへアップロードする

Last updated at Posted at 2016-06-01

目的

LaravelからGCSへファイルをアップロードしたい。

GCSの設定

認証キーの準備

GCPのAPI Managerの認証情報から認証情報を作成
スクリーンショット 2016-06-01 12.48.23.png

サービスアカウントキーを選択

スクリーンショット 2016-06-01 12.48.52.png

サービスアカウントを適切に設定。
キータイプはP12

スクリーンショット 2016-06-01 12.48.59.png

作成すると秘密鍵がDLされ秘密鍵生成時のパスワードが表示される。
大切に保存しておく。

サービスアカウントIDの取得

IAMと管理 -> サービスアカウント
から今回APIキーを作成したサービスアカウントIDをコピーしておく
スクリーンショット 2016-06-01 12.49.58.png

アプリケーション側の設定

以下のライブラリを使用するとLaravelのStorageの機能を使って実装が可能
https://packagist.org/packages/websight/l5-google-cloud-storage

composer.jsonの
"require"に

"websight/l5-google-cloud-storage" : "1.*",
追加

composer.json
 "require": {
        "websight/l5-google-cloud-storage" : "1.*"
    },

config/appの ServiceProvidersに以下を追加

config/app.php
Websight\GcsProvider\CloudStorageServiceProvider:

config/filesystems.phpにgcsの設定を追加。
ここで設定する値はKEY等 git管理をせずに、また環境ごとに変わる情報が多いためenvに切り出しておく。

config/filesystems.php
'gcs' => [
            'driver' => 'gcs',
            'service_account' => env('SERVICE_ACCOUNT'),
            'service_account_certificate' => storage_path() . '/' . env('SERVICE_ACCOUNT_CERTIFICATECATE'),
            'service_account_certificate_password' => env('SERVICE_ACCOUNT_CERTIFICATE_PASSWORD'),
            'bucket'          =>  env('GCS_BUCKET')
        ],

なお、envの設定は以下のとおり

SERVICE_ACCOUNT = サービスアカウントID
SERVICE_ACCOUNT_CERTIFICATE =  {今回DLした秘密鍵の設置pass}
SERVICE_ACCOUNT_CERTIFICATE_PASSWORD = 秘密鍵生成時のpassword
GCS_BUCKET = 対象bucket

その後GCSで生成した秘密鍵をアプリケーションに配置する。
今回はstorage/pass/{秘密鍵}というパスの秘密鍵を使うように指定したため、
そのファイルパスに秘密鍵を配置しておく。

これでアプリケーション側で

$disk = \Storage::disk('gcs');
$disk->put($upload_directory_path, $file);

のようにしてあげればアップロードが完了する。

他にもLaravelのファイルストレージのメソッドが使えるので実装が便利
http://readouble.com/laravel/5/1/ja/filesystem.html

16
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
16