Как собрать Amazon S3 Presigned PostPolicy для загрузки файлов в Java SDK 2.0? - PullRequest
0 голосов
/ 16 января 2019

Мне нужно сгенерировать подпись AWS Signature v4 для загрузки на s3, например: https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-post-example.html.

Я пробовал много примеров, но у меня ошибка

<Error>
    <Code>InvalidAccessKeyId</Code>
    <Message>The AWS Access Key Id you provided does not exist in our records.</Message>
    <AWSAccessKeyId>ASIA2AKMADUN</AWSAccessKeyId>
    <RequestId>E68a1B73B15</RequestId>
    <HostId>fIG19S=</HostId>
</Error>

Я пытался создать подпись, используя minio-java, как это https://github.com/minio/minio-java/blob/master/examples/PresignedPostPolicy.java

Также я попробовал этот фрагмент кода https://gist.github.com/phstudy/3523576726d74a0410f8

PS Моя настоящая цель - загрузка файлов с клиентов сограничение размера файла, например там или там там .Я могу создать presignS3UploadLink , но нет способа установить максимальный размер.

1 Ответ

0 голосов
/ 17 января 2019

Итак, решение https://github.com/minio/minio-java/blob/master/examples/PresignedPostPolicy.java не сработало из-за отсутствия параметра x-amz-security-token.

Нам нужно использовать session-token (который мы получаем от amazon) для создания POST-политики и для публикации форм - https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html

Пример кода для мини:

conditions.add(new String[]{"eq", "$x-amz-security-token", sessionToken});
formData.put("x-amz-security-token", sessionToken);

P.S. x-amz-security-token требуется из-за использования временных учетных данных безопасности - https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html

...