AWS java SDK手动设置签名版本

时间:2016-03-22 12:32:27

标签: amazon-s3 aws-sdk

我试图访问位于AWS S3之上的blob商店服务。它支持AWS SDK及其签名版本2.

我使用code here来访问此服务。

是否可以手动设置AWS SDK发出的请求的签名版本?

根据this page

AWS目前支持两种签名版本:签名版本2和签名版本4,本节将对其进行介绍。大多数服务支持版本4,如果服务支持版本4,我们强烈建议您使用该版本。

我无法找到如何手动将签名版本设置为2或4。

2 个答案:

答案 0 :(得分:4)

来自S3开发人员指南 - Specifying Signature Version in Request Authentication

  

Java SDK

     

在代码中添加以下内容。

     

System.setProperty(SDKGlobalConfiguration.ENABLE_S3_SIGV4_SYSTEM_PROPERTY, "true");

     

或者,在命令行中指定以下内容。

     

-Dcom.amazonaws.services.s3.enableV4

以前看来v2是AWS SDK中的默认值,但v4现在是SDK v1.11.0 (May, 2016)中的默认值。

答案 1 :(得分:1)

aws-java-sdk-core-1.11.163

SDKGlobalConfiguration.ENABLE_S3_SIGV4_SYSTEM_PROPERTY已弃用。

我使用下面的代码通过signature_version ='s3'进行调用

private static ClientConfiguration config = new ClientConfiguration();

static {
    config.setProtocol(Protocol.HTTP);
    config.setSignerOverride("S3SignerType");
}
private static AmazonS3 s3client = AmazonS3ClientBuilder
    .standard()
    .withClientConfiguration(config)
    .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("endpoint", null))
    .withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials("access_key_id", "secret_Key")))
    .build();