AWS S3 Java生成预签名对象URL(自定义生命周期)

S3官方JAVA SDK文档

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();
		}
	}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值