🙆
1 MBを超えるファイルをS3にアップロードできない
背景
画面からS3にファイルをアップロードする仕組みを追加しました。
実装後、1 MBを超えるファイルをアップロードできないとの報告がありました。1 MB以下のファイルはアップロードできます。
この記事では、調査と対応の内容を記録します。
調査したこと
このシステムはECSで動かしています。まずはインフラ側からということで、AWSサービスの設定を疑いました。
S3にアップロードできないので、S3の問題ではないかと考えました。S3の設定でサイズを制限するような設定があるかを確認しました。
しかし、アップロードサイズを制限するような設定はありません。
また、ALBも疑いましたが、ALBもサイズ制限をするような設定はありませんでした。
原因はSpring
次にコンテナで動いているJavaアプリを疑いました。
ここでようやくCloudWatch Logsを確認します。「先にログを確認する」ということを、自分への戒めにします。
CloudWatch Logsを参照し、以下のログが出力されていることを確認しました。
2025-03-xxT11:06:33.025+09:00
org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes.
このログから、ファイルアップロードの上限に達していることが分かりました。
spring.servlet.multipart.max-file-sizeの設定です。この設定を追加していない場合、デフォルトの上限である1 MBが適用されます。
対応
application.ymlにspring.servlet.multipart.max-file-sizeの設定を追加しました。
これで大きなサイズのファイルをアップロードすることができました。
参考にした記事
ファイルサイズの上限
Discussion