S3(Amazon Simple Storage Service)是一种对象存储服务,提供可扩展性、数据可用性、安全性和性能。S3 可达到 99.999999999%(11 个 9)的持久性。客户使用 S3 作为云原生应用程序的主要存储;作为分析的批量存储库或“数据湖”;作为备份和恢复以及灾难恢复的目标;并将其与无服务器计算配合使用。
现在越来越多的客户使用S3作为网站的一个资源存储方案。在当前对于流量就是金钱而言的云计算时代,如何能够更好的使用公有云服务商提供的丰富PaaS服务的同时,如果不让网络上爬虫等工具肆意的盗取网站各种资源就是工程师们需要面对的问题。不过,不用担心AWS S3的对象签名机制就提供了一个非常好的选择。
通过S3的对象URL签名,可以避免将对象直接暴露在公网上,签名可以控制对象的可访问时间。
闲话不多说,我们来直接上代码
package com.sinnet.S3;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Iterator;
import java.util.Map;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.HttpMethod;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;
import com.amazonaws.services.s3.model.S3Object;
public class GeneratePresignedUrlAndUploadObject {
public static void main(String[]