Amazon s3 使用com.amazonaws:aws java sdk 1.11.18的意外v4签名url
我们正在使用(com.amazonaws:aws java sdk版本1.11.18)创建AmazonS3签名URL- 我们希望得到一个签名url,其中包含一个名为“signature”(v2signing)的查询参数 我们注意到,在我们的服务器中,一些请求会导致v4签名——我们意外地得到一个“x-amz-signature”查询参数作为签名url的一部分 一旦启动,它就可以在服务器上为同一请求的s3对象复制。 但是,对其他对象进行签名的请求仍将使用v2进行签名。 在损坏的服务器上重新启动tomcat服务“修复”了该问题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
是否知道是什么原因导致库开始使用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