我们使用(com.amazonaws:aws-java-sdk版本1.11.18)创建Amazon S3签名的url-
AmazonS3 s3 = new AmazonS3Client(credentials);
s3.generatePresignedUrl(bucketName, objectName, expiration, method);
我们期望得到一个包含查询参数的签名URL,该参数称为“签名”(v2签名)。
我们注意到,在我们的服务器中,某些请求导致v4签名-我们意外地在其中获得了“ x-amz-signature”查询参数作为签名URL的一部分。
一旦开始-在服务器上对于相同的请求s3对象是可复制的。但是,对其他对象进行签名的请求仍将使用v2进行签名。在损坏的服务器上重新启动tomcat服务可以“解决”该问题。
知道什么会导致库开始使用v4签名某些对象吗?
该问题已在sdk的当前版本(1.11.244)中复制。最终,我们开始手动设置配置-
s3 = new AmazonS3Client(credentials,
new ClientConfiguration().withSignerOverride("NoOpSignerType"));
我们怀疑此行为是由于该createSigner
方法的内部实现引起的,如果存储桶包含在地图中,则使用V4签署请求。--
private static final Map<String, String> bucketRegionCache
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句