Несмотря на то, что ваш вариант использования обоснован, и это действительно очевидная попытка, я не думаю, что Multipart Upload API был разработан для этого, и вы фактически нарушаете барьер безопасности:
Идентификатор загрузки является просто идентификатором, помогающим API Multipart Upload в сборке частей вместе (то есть больше похоже на временный объектный ключ), а не выделенным механизмом безопасности (см. Ниже). Следовательно, вам по-прежнему требуются надлежащие учетные данные для доступа, но поскольку вы звоните AmazonS3Client () , который создает новый клиент Amazon S3, который будет отправлять анонимные запросы в Amazon S3 , ваш запрос дает a 403 Доступ запрещен соответственно.
То, чего вы пытаетесь достичь, возможно с помощью Загрузка объектов с использованием предварительно подписанных URL-адресов , но, к сожалению, только без многокомпонентных функций:
Предварительно подписанный URL дает вам доступ к объекту, указанному в URL,
при условии, что создатель предварительно подписанного URL-адреса имеет права на
получить доступ к этому объекту. То есть, если вы получили предварительно подписанный URL для загрузки
объект, вы можете загрузить объект, только если создатель
Предварительно подписанный URL-адрес имеет необходимые разрешения для загрузки этого объекта.
[...] Предварительно подписанные URL
полезны, если вы хотите, чтобы ваш пользователь / клиент мог загрузить определенную
объект [...], но вам не требуется, чтобы они имели безопасность AWS
учетные данные или разрешения. Когда вы создаете предварительно подписанный URL, вы должны
укажите свои учетные данные безопасности, укажите имя группы объектов
ключ, метод HTTP (PUT загрузки объектов) и срок действия
и время. [...]
Длинная цитата иллюстрирует, почему система, подобная этой , вероятно , нуждается в более сложной схеме безопасности, чем "просто" раздача идентификатора загрузки (такой же, как могут показаться на первый взгляд).
Очевидно, что хотелось бы иметь возможность использовать обе функции вместе, но эта функция пока недоступна.