環境
AWS Lambda
bref
Laravel
thephpleague/flysystem-aws-s3-v3
結論
公式ドキュメントは良く読むこと。
https://bref.sh/docs/frameworks/laravel.html#file-storage-on-s3
解説
Lambdaは関数実行時に実行ロールから以下の情報を環境変数に設定する。
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
上の情報を使用しないとs3にアクセス出来ない。
デフォルトのLaravelだと上2つはconfigで渡してくれるが、
AWS_SESSION_TOKENは渡してくれないので下のように追記する必要がある。
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
+ 'token' => env('AWS_SESSION_TOKEN'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
],
Lambdaが勝手に設定してくれるので.envにAWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKENを追記する必要は無い。
参考
https://qiita.com/kenji0302/items/fec0c3fd79ceeabaf5fd
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-envvars.html#configuration-envvars-runtime
https://github.com/laravel/laravel/pull/5138