LaravelでAWSのS3接続時のエラー(InvalidArgumentException)
Laravelで「league/flysystem-aws-s3-v3」を使ってS3にアップロードした画像をblade内で表示しようとした時に以下のエラーが出た。
InvalidArgumentException
Found 1 error while validating the input provided for the GetObject operation: [Key] expected string length to be >= 1, but found string length of 0 (View: /…/example.blade.php)
状況
正常に画像がアップロードされて、アップロードした画像も普通に表示ができていました。ところがある状況下でのみ上記のエラーが発生しており、原因がわからないという状況でした。
結局はっきりはわからなかったけど、blade内で使っていたStorage::disk('s3')->url()メソッドの引数に空文字を渡している時に起こるような気がする。(違うかも)
原因
「.env」にAWS_URLを書いていなかった。。。
AWS_URLは省略できるとどこかで見たので省略していた。以下のように追記したらエラーは起こらなくなった。
#前後省略
AWS_ACCESS_KEY_ID=アクセスキー
AWS_SECRET_ACCESS_KEY=シークレットキー
AWS_DEFAULT_REGION=ap-northeast-1
AWS_BUCKET=バケット名
AWS_URL=https://s3.ap-northeast-1.amazonaws.com/バケット名 // ←追記
#前後省略
どういうつながりでエラーになっていたのかわからないけど、原因は間違いなくコレでした。