LaravelでAWS S3に画像をアップロードしたい
解決したいこと
画像投稿機能の実装をしようとしています。
AWS S3へアップロードしたいのですが、うまくいかないのでお力添えください。
・S3より「バケットを作成」
・アクセス許可の設定の際に以下のチェックは外した。
◎新しいアクセスコントロールリスト (ACL) を介して許可されたバケットとオブジェクトへのパブリックアクセスをブロックする
◎任意のアクセスコントロールリスト (ACL) を介して許可されたバケットとオブジェクトへのパブリックアクセスをブロックする
該当ソースコード
createアクションにて画像ファイルの保存先をAWS S3
へ
dd($form)
にて画像ファイルがきちんと渡されてはいることは確認できた
public function create(Request $request)
{
$this->validate($request, News::$rules);
$news = new News;
$form = $request->all();
if (isset($form['image'])) {
$path = Storage::disk('s3')->putFile('/',$form['image'],'public');
$news->image_path = Storage::disk('s3')->url($path);
} else {
$news->image_path = null;
}
unset($form['_token']);
unset($form['image']);
$news->fill($form);
$news->save();
return redirect('admin/news/create');
}
発生している問題・エラー
エラーコード
Aws\S3\Exception\S3Exception
Error executing "PutObject" on "https://s3.us-east-2.amazonaws.com/%60yuktkhs%60/0Eo3zOz6wPV5zasCgzgnbOs6ZZJeTP1Cy9NtYOXJ.png"; AWS HTTP error: Client error: `PUT https://s3.us-east-2.amazonaws.com/%60yuktkhs%60/0Eo3zOz6wPV5zasCgzgnbOs6ZZJeTP1Cy9NtYOXJ.png` resulted in a `400 Bad Request` response: <?xml version="1.0" encoding="UTF-8"?> <Error><Code>InvalidBucketName</Code><Message>The specified bucket is not valid.< (truncated...) InvalidBucketName (client): The specified bucket is not valid. - <?xml version="1.0" encoding="UTF-8"?> <Error><Code>InvalidBucketName</Code><Message>The specified bucket is not valid.</Message><BucketName>`yuktkhs`</BucketName><RequestId>0C47279A63EEDF56</RequestId><HostId>zZ5GMW6Bme4j65J7x0gXeDoF1N/h+eEpVTLLqLwb+lf8fu2I4gg1bYmfdYffPW8TdTajHZOaTnk=</HostId></Error>
自分で試したこと
環境変数の確認
env.ファイル
から確認
AWSマネジメントコンソールと見比べて確認しましたが、特に間違えてはなさそうでした
AWS_ACCESS_KEY_ID=`******************`
AWS_SECRET_ACCESS_KEY=`**************`
AWS_DEFAULT_REGION=us-east-2
AWS_BUCKET=`yuktkhs`
]
cacheの削除
$ php artisan config:cache
$ php artisan cache:clear
0