Amazon AWS Java SDK-使用S3策略和签名执行PutObjectRequest

Amazon AWS Java SDK-使用S3策略和签名执行PutObjectRequest,java,amazon-web-services,amazon-s3,Java,Amazon Web Services,Amazon S3,通过Web API,我收到关于允许我上传文件的Amazon S3 Bucket的以下信息: s3_bucket (the Bucket name) s3_key (the Bucket key) s3_policy (the Bucket policy) s3_signature the Bucket signature) 因为我不是Bucket的所有者,所以向我提供了s3_策略和s3_签名值,根据,这些值可用于对Bucket的Put请求进行身份验证 然而,在我使用的AWS官方JavaSDK中

通过Web API,我收到关于允许我上传文件的Amazon S3 Bucket的以下信息:

s3_bucket (the Bucket name)
s3_key (the Bucket key)
s3_policy (the Bucket policy)
s3_signature the Bucket signature)
因为我不是Bucket的所有者,所以向我提供了s3_策略和s3_签名值,根据,这些值可用于对Bucket的Put请求进行身份验证

然而,在我使用的AWS官方JavaSDK中,我似乎找不到执行这种身份验证的方法。我的代码:

PutObjectRequest putObjectRequest = new PutObjectRequest(s3_bucket, s3_key, fileToUpload);
s3Client.putObject(putObjectRequest);
我知道我需要使用s3_签名和s3_策略,但如何验证我的PutObjectRequest

提前感谢,


CrushedPixel

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

您描述的是上载策略文档,而不是bucket策略。该策略、签名和您的文件都将进入HTTP
POST
(而不是
PUT
)请求,请求类型为
多部分/表单数据
——表单POST,如您引用的文档页面所示。您只需要一个HTTP用户代理

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

表单还需要AWSAccessKeyId,它看起来像“AKIAWTFBBQEXAMPLE”,这可能就是您所说的“s3_键”,尽管在s3术语中,“(object)键”指的是路径和文件名


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

感谢您的回复。我是S3上传新手(你可能知道),而WebAPI文档并没有真正告诉我如何处理这些值。我将设法让它重新创建一个类似于示例中的表单上载。