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 使用com.amazonaws:aws java sdk 1.11.18的意外v4签名url_Amazon S3_Pre Signed Url - Fatal编程技术网

Amazon s3 使用com.amazonaws:aws java sdk 1.11.18的意外v4签名url

Amazon s3 使用com.amazonaws:aws java sdk 1.11.18的意外v4签名url,amazon-s3,pre-signed-url,Amazon S3,Pre Signed Url,我们正在使用(com.amazonaws:aws java sdk版本1.11.18)创建AmazonS3签名URL- 我们希望得到一个签名url,其中包含一个名为“signature”(v2signing)的查询参数 我们注意到,在我们的服务器中,一些请求会导致v4签名——我们意外地得到一个“x-amz-signature”查询参数作为签名url的一部分 一旦启动,它就可以在服务器上为同一请求的s3对象复制。 但是,对其他对象进行签名的请求仍将使用v2进行签名。 在损坏的服务器上重新启动tom

我们正在使用(com.amazonaws:aws java sdk版本1.11.18)创建AmazonS3签名URL-

我们希望得到一个签名url,其中包含一个名为“signature”(v2signing)的查询参数

我们注意到,在我们的服务器中,一些请求会导致v4签名——我们意外地得到一个“x-amz-signature”查询参数作为签名url的一部分

一旦启动,它就可以在服务器上为同一请求的s3对象复制。 但是,对其他对象进行签名的请求仍将使用v2进行签名。 在损坏的服务器上重新启动tomcat服务“修复”了该问题


是否知道是什么原因导致库开始使用v4对某些对象进行签名?

该问题在当前版本的sdk(1.11.244)中重现。 最后,我们开始手动设置配置-

s3 = new AmazonS3Client(credentials,
                    new ClientConfiguration().withSignerOverride("NoOpSignerType"));
我们怀疑这种行为是由
createSigner
方法的内部实现引起的,如果bucket包含在map中,则使用V4对请求进行签名。-

private static final Map<String, String> bucketRegionCache
私有静态最终映射bucketRegionCache

并非所有区域/存储桶都支持V2…您是否对多个区域中多个存储桶中的对象的请求进行签名?同一区域中的多个存储桶,V2签名始终有效请注意,某些新功能需要在每个区域中进行V4签名。我并不是说这与此直接相关,但这可能是更改的产物hat的引入是出于前瞻性的原因,所以反对它可能是不可取的。
private static final Map<String, String> bucketRegionCache