我试图访问位于AWS S3之上的blob商店服务。它支持AWS SDK及其签名版本2.
我使用code here来访问此服务。
是否可以手动设置AWS SDK发出的请求的签名版本?
AWS目前支持两种签名版本:签名版本2和签名版本4,本节将对其进行介绍。大多数服务支持版本4,如果服务支持版本4,我们强烈建议您使用该版本。
我无法找到如何手动将签名版本设置为2或4。
答案 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();