【问题标题】:Amazon AWS Java SDK - use S3 Policy and Signature to perform PutObjectRequestAmazon AWS Java SDK - 使用 S3 策略和签名来执行 PutObjectRequest
【发布时间】:2015-09-14 01:38:14
【问题描述】:

通过 Web API,我收到以下有关允许我将文件上传到的 Amazon S3 存储桶的信息:

s3_bucket (the Bucket name)
s3_key (the Bucket key)
s3_policy (the Bucket policy)
s3_signature the Bucket signature)

因为我不是 Bucket 的所有者,所以向我提供了 s3_policy 和 s3_signature 值,根据AWS Upload Examples,它们可用于对 Bucket 的 Put 请求进行身份验证。

但是,在我使用的 AWS 官方 Java SDK 中,我似乎找不到执行此身份验证的方法。我的代码:

PutObjectRequest putObjectRequest = new PutObjectRequest(s3_bucket, s3_key, fileToUpload);
s3Client.putObject(putObjectRequest);

我确实知道我需要使用我在某些时候获得的 s3_signature 和 s3_policy,但是我如何这样做来验证我的 PutObjectRequest?

提前致谢,

粉碎像素

【问题讨论】:

    标签: java amazon-web-services amazon-s3


    【解决方案1】:

    我认为您不会将 SDK 用于此操作。 SDK 可能会在此步骤中执行您需要的操作,但这似乎不太可能,因为 SDK 通常会将访问密钥和秘密作为参数,并生成签名,而不是接受签名作为论据。

    您描述的是上传策略文档,而不是存储桶策略。该策略、签名和您的文件都将进入multipart/form-data 类型的 HTTP POST(不是PUT)请求——一个表单帖子——如您引用的文档页面所示。您只需要一个 HTTP 用户代理。

    您还需要制作表单的其余部分,包括策略中的所有其他字段,您应该能够通过 base64 解码来访问这些字段。

    该表单还需要 AWSAccessKeyId,它看起来类似于“AKIAWTFBBQEXAMPLE”,这可能是您所说的“s3_key”,尽管在 S3 术语中,“(对象)键”指的是路径和文件名。

    这似乎是从 Web API 接收的一组奇怪的参数,尤其是当他们希望您自己生成表单时。

    【讨论】:

    • 感谢您的回复。我是 S3 Uploads 的新手(正如您可能会说的那样),Web API 的文档并没有真正告诉我如何处理哪些值。我将设法重新创建类似于示例中的表单上传。
    猜你喜欢
    • 1970-01-01
    • 2020-05-20
    • 2015-01-24
    • 2012-03-04
    • 2013-08-30
    • 2017-04-03
    • 1970-01-01
    • 2023-01-30
    • 1970-01-01
    相关资源
    最近更新 更多