Ошибка загрузки файла (http статус 301) в файловое хранилище MinIO

Добрый день!

Создал веб-приложение JMIX, пытаюсь использовать MinIO для хранения файлов с помощью дополнения AWS File Storage. Возникает ошибка:
awsfs_upload_error

В логе:

2025-02-16T18:34:03.211+03:00 ERROR 3392 --- [io-8080-exec-10] io.jmix.awsfs.AwsFileStorage             : Error saving file to S3 storage

software.amazon.awssdk.services.s3.model.S3Exception: null (Service: S3, Status Code: 301, Request ID: null, Extended Request ID: null)
	at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlPredicatedResponseHandler.handleErrorResponse(AwsXmlPredicatedResponseHandler.java:156) ~[aws-xml-protocol-2.16.69.jar:na]
	at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlPredicatedResponseHandler.handleResponse(AwsXmlPredicatedResponseHandler.java:106) ~[aws-xml-protocol-2.16.69.jar:na]

Параметры в application.properties

jmix.awsfs.access-key = admin
jmix.awsfs.secret-access-key = password
jmix.awsfs.region = us-east-1
jmix.awsfs.bucket = mydocs
jmix.awsfs.chunk-size = 8192
jmix.awsfs.endpoint-url = http://sf1.lan
jmix.awsfs.use-path-style-bucket-addressing = true

Информация о версиях
Jmix version: 2.4.3
Jmix Studio plugin version: 2.4.3-243
IntelliJ version: IntelliJ IDEA 2024.3 (Community Edition)

Пример проекта, к сожалению, загрузить не могу, т.к. файл получается больше 4 МБ.

Добрый день,

Jmix 2.4.3 успешно загружает файлы в локально развернутый MinIO через fileStorageUploadField в IMMEDIATE и MANUAL режимах.

  • Убедитесь, что ваш MinIO сервис в рабочем состоянии и доступен по сети со стороны приложения.
    • Если это не локальный деплоймент, то проведите проверку: локальный MinIO + локальный проект c аналогичными настройками и сценариями.
  • Предоставьте полный стектрейс ошибки.
  • Предоставьте XML-дескриптор и класс-контроллер для экрана, где происходит загрузка файла.

С уважением,
Иван

Здравствуйте!

Спасибо за ответ!

Я разобрался, в чем была проблема: я не указал номер порта в application.properties.
Было вот так:
jmix.awsfs.endpoint-url = http://sf1.lan

а надо было вот так:
jmix.awsfs.endpoint-url = http://sf1.lan:9000

При этом приложение не получало ошибку Connect timed out, означающую, что на запрашиваемом по умолчанию 80-ом порту никого нет, а вместо этого оно получало ошибку 301 (Moved permanently), что означает, что кто-то там ответил на запрос. А это потому, что там у меня был запущен nginx, который с 80-го порта перебрасывал на https, как раз таки с помощью кода 301.
Вот так я сам себя запутал :grinning: Извините за беспокойство. Спасибо за обратную связь, это помогло, так как для подготовки ответа я собирал скриншоты и логи, для этого провел серию экспериментов, и понял, в чем проблема.

Пользуясь случаем, хочу поблагодарить за превосходный продукт, позволяющий действительно быстро разрабатывать приложения с богатым набором функциональности!

С уважением, Руслан Бапин.