🪣
Laravel 8以降のファイルストレージで動的にS3のバケットを変更する方法
表題の件であまり情報がなく微妙にハマったので自分なりの解決策を残しておきます。
環境
PHP 8.1.18
Laravel 9.19
解決策
$s3_bucket_name = 'S3_BUCKET_NAME';
$disk = Storage::build([
...config('filesystems.disks.s3'),
'bucket' => $s3_bucket_name,
]);
Storage::build
というメソッドを利用して、オンデマンドでディスクを作成しています。
ここでは、PHP8.1で追加された文字列キー配列のアンパックを用いて既存のS3情報を展開した上で、バケット名のみを上書きしています。
もちろん、すべての情報をべた書きして作成することも可能です。
なお、公式ドキュメントによると、Laravel 8 から Storage::build
が追加されたようです。
終わりに
ドキュメントに当たるのはやっぱり大事
Discussion