【Laravel】 The PutObject operation requires non-empty parameter Bucket エラーの解消法
Laravel 2020年12月6日
The PutObject operation requires non-empty parameter Bucket
LaravelとAWS S3を連携して Laravelから画像をアップロードする仕組みを構築していたところ、 アップロードの段階で上記のエラーに捕まり、 解決にしばらく時間を費やす羽目になったので 備忘録と同じ問題につまずいた方への手助けを兼ねて エラー解決までの流れをメモします。
〇作業環境
Laravel : バージョン8.6.0
ファイル操作用パッケージ : flysystem-aws-s3-v3
まずエラーで指摘されている点ですが、 ざっくり意訳すると 「PutObject(S3のアクションの一種)使いたいなら バケット情報を正しく記載しやがれください」とのこと。
そこでfilesystems.phpに読ませるために s3のバケット情報を記入していた.envファイルを改めて確認したところ 確かにリージョンの記載にミスがあったためこれを修正。
AWS_ACCESS_KEY_ID={AWSアクセスキー} AWS_SECRET_ACCESS_KEY={AWSシークレットアクセスキー} AWS_DEFAULT_REGION={リージョン} AWS_BUCKET={バケット名}
修正後再びアップロード実行して 今度こそ画像アップロード成功かと思いきや 再び同一のエラーに遭遇。
設定はあっているはずなのに なぜだろうと10分ほど頭を捻っていたところ 設定を書き換えたのに Laravelのキャッシュをクリアしていなかったことを思い出し 以下のコマンドを叩いてキャッシュクリア。
php artisan config:clear
3度目の正直でついに S3バケットに画像データをアップすることができました。

Laravelのキャッシュ周りの対応は何かと抜けがちなので 時間を無駄にしないためにも習慣化または自動化したいところですね。