Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 AWS java SDK手动设置签名版本_Amazon S3_Aws Sdk - Fatal编程技术网

Amazon s3 AWS java SDK手动设置签名版本

Amazon s3 AWS java SDK手动设置签名版本,amazon-s3,aws-sdk,Amazon S3,Aws Sdk,我正在尝试访问AWS S3上的blob存储服务。它支持AWS SDK及其签名版本2 我正在使用访问此服务 是否可以手动设置AWS SDK发出的请求的签名版本? 据 AWS目前支持两个签名版本:签名版本2和签名版本4,本节将介绍这两个版本。大多数服务支持版本4,如果服务支持版本4,我们强烈建议您使用该版本。 我找不到如何手动将签名版本设置为2或4。来自S3开发者指南-: Java SDK 在代码中添加以下内容 System.setProperty(SDKGlobalConfiguration.EN

我正在尝试访问AWS S3上的blob存储服务。它支持AWS SDK及其签名版本2

我正在使用访问此服务

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

AWS目前支持两个签名版本:签名版本2和签名版本4,本节将介绍这两个版本。大多数服务支持版本4,如果服务支持版本4,我们强烈建议您使用该版本。
我找不到如何手动将签名版本设置为2或4。

来自S3开发者指南-:

Java SDK

在代码中添加以下内容

System.setProperty(SDKGlobalConfiguration.ENABLE_S3_SIGV4_System_属性,“true”)

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

-Dcom.amazonaws.services.s3.enableV4

看起来v2以前是AWS SDK中的默认版本,但v4现在是从中开始的默认版本。

aws-java-sdk-core-1.11.163

SDKGlobalConfiguration.ENABLE\u S3\u SIGV4\u SYSTEM\u属性已弃用。

我使用下面的代码调用了signature\u 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();

任何人在aws java sdk 1.7.4、hadoop aws 2.7.5中使用Spark 2.4.4,即使在正确设置区域后仍出现400个错误,那么这就是适合我的解决方案,谢谢^_^