LaravelでS3を使用する時にprofileを指定する
LaavelからAWS S3へ画像をアップロードしたりする時に、flysystemを使う場合に、profileを指定する方法を調べてみたら簡単でした。
公式に従って、パッケージはflysystem-aws-s3-v3を使用します。
credentialsはこんな感じだとして
~/.aws/credentials
[default]
aws_access_key_id = XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[my_profile]
aws_access_key_id = ZZZZZZZZZZZZZZZZZZZZ
aws_secret_access_key = ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
ファイルシステムの設定
ACCESS_KEYとSECRET_ACCESS_KEYの場合
config/filesystems.php
'default' => env('FILESYSTEM_DRIVER', 'local'),
// 追記
'cloud' => env('FILESYSTEM_CLOUD', 's3'),
// 〜 略 〜
'disks' => [
'local' => [
// 〜 略 〜
],
'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'),
],
PROFILE=defaultで良い場合は、keyとsecretを指定しない
('profile' => 'default'もOK)
config/filesystems.php
'default' => env('FILESYSTEM_DRIVER', 'local'),
// 追記
'cloud' => env('FILESYSTEM_CLOUD', 's3'),
// 〜 略 〜
'disks' => [
'local' => [
// 〜 略 〜
],
'public' => [
// 〜 略 〜
],
// 以下を追記
's3' => [
'driver' => 's3',
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
],
PROFILE=my_profileを指定したい場合
keyとsecretを指定しない+profileを追加
config/filesystems.php
'default' => env('FILESYSTEM_DRIVER', 'local'),
// 追記
'cloud' => env('FILESYSTEM_CLOUD', 's3'),
// 〜 略 〜
'disks' => [
'local' => [
// 〜 略 〜
],
'public' => [
// 〜 略 〜
],
// 以下を追記
's3' => [
'driver' => 's3',
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'profile' => 'my_profile',
],
いけるかな?と試してみたらすんなりでした。