2014-01-24 69 views
1

我使用generatePreSignedURL其生成格式的URL(使用Java SDK):AWS S3.generatePreSignedURL;使用CNAME有问题

https://bucketName.s3.amazonaws.com/xyz/1765/1765877/RELATIVE/1765877?Expires=1390547709&AWSAccessKeyId=AKIAIFVBAWRYG72XANJA&Signature=ggHAYRTs2D4BQQnYIierEKGOWz0%3D

我想用使用CNAME自定义域。两个问题:

  1. 由于CNAME不适用于HTTPS;我需要使用http。 generatePreSignedURL如何返回http url。这是一个小问题..因为我可以通过将https替换为http来手动更改它,但看起来并不干净。

  2. 手动更改为http后;并将此URL bucketName.s3.amazonaws.com改为customizeURL.com;我得到SignatureDoesNotMatch!任何想法如何解决这个问题?我的generatePreSignedURL可以返回自定义网址吗?

回答

0

要有generatePreSignedURL给你一个HTTP,而不是HTTPS URL,你必须设置你的AmazonS3Client具有不同ClientConfiguration。下面给出了一个例子。

由于AWS目前不为S3提供客户端证书,因此现在不能通过https定制域。

ClientConfiguration clientConfig = new ClientConfiguration(); 
clientConfig.setProtocol(Protocol.HTTP); 
AmazonS3Client s3Client = new AmazonS3Client(awsCredentials, clientConfig);