Мне нужно сгенерировать подпись 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
minio-java
Также я попробовал этот фрагмент кода https://gist.github.com/phstudy/3523576726d74a0410f8
PS Моя настоящая цель - загрузка файлов с клиентов сограничение размера файла, например там или там там .Я могу создать presignS3UploadLink , но нет способа установить максимальный размер.
Итак, решение https://github.com/minio/minio-java/blob/master/examples/PresignedPostPolicy.java не сработало из-за отсутствия параметра x-amz-security-token.
x-amz-security-token
Нам нужно использовать session-token (который мы получаем от amazon) для создания POST-политики и для публикации форм - https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html
session-token
Пример кода для мини:
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