如何在 Java 开发工具包 2.0 中构建用于文件上传的 Amazon S3 预签名 PostPolicy



我需要生成一个 AWS 签名 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

附言我真正的目标是从文件大小限制的客户端上传文件,比如那里或那里。我可以创建 presignS3UploadLink,但没有办法设置最大大小。

因此,由于缺少x-amz-security-token参数,解决方案 https://github.com/minio/minio-java/blob/master/examples/PresignedPostPolicy.java 不起作用。

我们需要使用session-token(我们从亚马逊获得)来创建 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);

附言 由于使用了临时安全凭证,因此需要x-amz-security-token - https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html

最新更新