Laravel の Storage で S3 の特定のディレクトリをプレフィックスとして固定したい

LaravelにはStorage というファサードがあり、ローカルだろうがS3だろうが簡単ファイル操作を簡単に行うことができ、とても便利です。

config/filesystems.phpのdisksにはデフォルトで以下のような設定があります。

'disks' => [

    'local' => [
        'driver' => 'local',
        'root' => storage_path('app'),
    ],

    'public' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
        'url' => env('APP_URL') . '/storage',
        'visibility' => 'public',
    ],

    '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'),
    ],

],

.envAWSの設定をして、アクセス制限がしっかりしていれば、

Storage::disk('s3')->putFile('photos', new File('/path/to/photo'));

とするだけで、 S3上のAWS_BUCKETバケットphotosディレクトリに/path/to/photoのファイルがアップロードされます。

簡単で便利ですが、そのプロジェクトで使うディレクトリがphotos限定であったとき、毎回指定するのが面倒です。
publicの場合はrootというオプションで設定できるようですが、s3の場合にどうすれば良いのかわかりませんでした。

調べても情報はあんまり無かったのですが、山勘でやった結果うまく設定できました。 publicと同じようにrootを設定するだけです。

    'photos_s3' => [
        'driver' => 's3',
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'region' => env('AWS_DEFAULT_REGION'),
        'bucket' => env('AWS_BUCKET'),
        'root' => 'photos',
        'url' => env('AWS_URL'),
    ],

これで、

Storage::disk('photos_s3')->putFile('', new File('/path/to/photo'));

とするだけで、先程と同じことが実現できます。