【问题标题】:How to build Amazon S3 Presigned PostPolicy for file uploading in Java SDK 2.0?如何为 Java SDK 2.0 中的文件上传构建 Amazon S3 Presigned PostPolicy?
【发布时间】:2019-06-10 18:31:12
【问题描述】:

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

另外,我试过这个代码 sn-p https://gist.github.com/phstudy/3523576726d74a0410f8

附:我真正的目标是从有文件大小限制的客户端上传文件,比如there,或者there。我可以创建presignS3UploadLink,但无法设置最大尺寸。

【问题讨论】:

    标签: java amazon-web-services amazon-s3 file-upload aws-java-sdk-2.x


    【解决方案1】:

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

    我们需要使用session-token(我们从亚马逊获得)来创建 POST-Policy 和表单发布 - https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html

    minio 的示例代码:

    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

    【讨论】:

      猜你喜欢
      • 2014-05-07
      • 1970-01-01
      • 2018-12-31
      • 1970-01-01
      • 1970-01-01
      • 2016-03-31
      • 1970-01-01
      • 1970-01-01
      • 2020-09-16
      相关资源
      最近更新 更多