LoginSignup
4
1

More than 1 year has passed since last update.

Laravel + Amazon S3で、複数のバケットを使いたい

Posted at

まえがき

いや、我ながらやり方分かっちゃうと、結構低レベルな話...となったのですが、同じことで困っている人のために書いておきます。
(ググっても全然出てこなかったのは、簡単すぎるせいか...)

もともとAmazon S3はDBのバックアップで使用していたのですが、動画のストリーミング再生もしたいということで、動画をAmazon S3に置くことになりました。
というわけで、いつもは一つしか使っていなかったバケットですが、今回は2つ使うことになって、え!?でも違うバケットってどうやって設定するん!?ということになりました。

とりあえずデフォルトのバケット設定して

Laravel 公式

.envにAWSのリージョンとか、キーとか、バケット書けばOK!!


AWS_ACCESS_KEY_ID=自分のやつ
AWS_SECRET_ACCESS_KEY=見て
AWS_DEFAULT_REGION=書いて
AWS_BUCKET=バケット名

もう一つのバケットは...??

うーん、.envにはバケットひとつしか書けないじゃん...あたいどうすんのよ。。

config/filesystems.phpに書けるよ!!
これを追加したらいいんだよ↓


/** こちら、もとからある方です */
's3' => [
    'driver' => 's3',
    'key' => env('AWS_ACCESS_KEY_ID'),
    'secret' => env('AWS_SECRET_ACCESS_KEY'),
    'region' => env('AWS_DEFAULT_REGION'),
    'bucket' => env('AWS_BUCKET'),
    'url' => env('AWS_URL'),
    'endpoint' => env('AWS_ENDPOINT'),
],

/** こちら、追加した方です */
's3_movie' => [
    'driver' => 's3',
    'key' => env('AWS_ACCESS_KEY_ID'),
    'secret' => env('AWS_SECRET_ACCESS_KEY'),
    'region' => env('AWS_DEFAULT_REGION'),
    'bucket' => 'ここにもう一つのバケット名入れてくれ', //★★★ この行見て★★★
    'url' => env('AWS_URL'),
    'endpoint' => env('AWS_ENDPOINT'),
],

実際にS3に接続する処理


//disk名を、新しく追加した方の名前にするよ
$disk = \Storage::disk('s3_movie');

まとめ

この方法を応用すれば、違うS3に接続するのも簡単だ!!
bucket名が環境によって違うのであれば、直書きではなく、.envに書いて取得してくれ!

やり方が分かってしまえば、大したことない話なんですがね...こういう記事も需要あるんでは??

4
1
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
4
1