Java代码
public static void signUrl() {
//test
String accessKey = "****************";
String secretKey = "****************";
String region = "****************";
//桶名称
String bucketName = "****************";
//文件地址
String objectKey = "****************";
try {
AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
ClientConfiguration config = new ClientConfiguration();
String proxyHost = System.getProperty("http.proxyHost");
String proxyPort = System.getProperty("http.proxyPort");
if (proxyHost != null && proxyPort != null) {
config.setProxyHost(proxyHost);
config.setProxyPort(Integer.valueOf(proxyPort));
}
AmazonS3 s3 = new AmazonS3Client(credentials, config);
// s3.setRegion(com.amazonaws.regions.Region.getRegion(Regions.CN_NORTH_1));
s3.setRegion(com.amazonaws.regions.Region.getRegion(Regions.fromName(region)));
// 设置过期时间为1小时
java.util.Date expiration = new java.util.Date();
long expTimeMillis = expiration.getTime();
expTimeMillis += 1000 * 60 * 60;
expiration.setTime(expTimeMillis);
//生成预签名URL
System.out.println("生成预签名URL");
GeneratePresignedUrlRequest generatePresignedUrlRequest =
new GeneratePresignedUrlRequest(bucketName, objectKey)
.withMethod(HttpMethod.GET)
.withExpiration(expiration);
URL url = s3.generatePresignedUrl(generatePresignedUrlRequest);
System.out.println("生成的签名的URL: " + url.toString());
}
catch(AmazonServiceException e) {
//调用成功传输,但Amazon S3无法处理
//它返回了一个错误响应。
e.printStackTrace();
}
catch(SdkClientException e) {
//无法联系到Amazon S3以获得响应或客户端
//无法解析来自Amazon S3的响应。
e.printStackTrace();
}
}