AWS 3クラウドサービスストレージの紹介とアップロードとダウンロード
4852 ワード
私たちのプロジェクトで海外プロジェクトに関わると、AWS 3ファイルの使用は避けられません.Amazon Simple Storage Service(Amazon S 3)は、インターネット向けのストレージサービスです.AWS 3の主な概念を紹介します.
リザーバ:リザーバはAmazon S 3においてオブジェクトを格納するための容器である.各オブジェクトは1つのバケツに格納されます.例えばphoto/testという名前であれば.jpgのオブジェクトはバケツに格納され、endPointは次のように申請されます.https://johnsmith.s3.amazonaws.comURLを使用することができますhttps://johnsmith.s3.amazonaws.com/photo/test.jpgこのオブジェクトをアドレッシングする、メモリバケツに無限量のデータを格納し、各オブジェクトに最大5 TBのデータを含めることができる.
キー:キーは、バケツ内のオブジェクトの一意の識別子です.バケツ内の各オブジェクトには鍵が1つしかありません.URLhttp://doc.s3.amazonaws.com/2019-12-27/test.xmlでは、「doc」はバケツの名前であり、「2019-12-27/test.xml」は鍵であり、鍵はファイルの一意のラベルである.
AWS 3のアップロード、ダウンロード、削除などの機能を1つのdemoで示します.
1、maven依存を先に導入する.
2、以下は具体例です.
アップロードに成功したら、endPointに渡すことができます.たとえば、endPointは:https://johnsmith.s3.amazonaws.comでは、endPointは次のようになります.https://johnsmith.s3.amazonaws.com/effect/test.xmlはファイルにアクセスします.https://johnsmith.s3.amazonaws.com/archive/test20191228001023.xmlバックアップファイルへのアクセス
リザーバ:リザーバはAmazon S 3においてオブジェクトを格納するための容器である.各オブジェクトは1つのバケツに格納されます.例えばphoto/testという名前であれば.jpgのオブジェクトはバケツに格納され、endPointは次のように申請されます.https://johnsmith.s3.amazonaws.comURLを使用することができますhttps://johnsmith.s3.amazonaws.com/photo/test.jpgこのオブジェクトをアドレッシングする、メモリバケツに無限量のデータを格納し、各オブジェクトに最大5 TBのデータを含めることができる.
キー:キーは、バケツ内のオブジェクトの一意の識別子です.バケツ内の各オブジェクトには鍵が1つしかありません.URLhttp://doc.s3.amazonaws.com/2019-12-27/test.xmlでは、「doc」はバケツの名前であり、「2019-12-27/test.xml」は鍵であり、鍵はファイルの一意のラベルである.
AWS 3のアップロード、ダウンロード、削除などの機能を1つのdemoで示します.
1、maven依存を先に導入する.
com.amazonaws
aws-java-sdk-s3
1.11.688
2、以下は具体例です.
public class AmazonCloudStorageService {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
private static String accessKey=" ak ";
private static String secretKey=" ";
private static String bucketName=" ";
private static final String SUFFIX = "/";
private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
public static void main(String[] args) {
upload(new File("C:\\Users\\Administrator\\Desktop\\test.xml"));
}
public static void upload(File file) {
long begin = System.currentTimeMillis();
AmazonS3Client connection = null;
TransferManager tm = null;
try {
//
String effectKey = "effect" + SUFFIX + "test.xml";
/*
* Constructs a client instance
*/
AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setMaxConnections(100);
clientConfiguration.setSocketTimeout(7200000);
clientConfiguration.setProtocol(Protocol.HTTPS);
connection = new AmazonS3Client(credentials, clientConfiguration);
/*
* Determine whether the bucket exists
*/
if (!connection.doesBucketExist(bucketName)) {
connection.createBucket(bucketName);
}
/*
* Upload an object to your bucket
*/
tm = new TransferManager(connection);
// TransferManager processes all transfers asynchronously,
// so this call returns immediately.
// , ,
if(connection.doesObjectExist(bucketName,effectKey)){
String fileName = file.getName();
String suffixName= fileName.substring(fileName.lastIndexOf(".")+1);
String unSuffix = fileName.substring(0, fileName.lastIndexOf("."));
String slaveFileName=unSuffix+formatter.format(LocalDateTime.now())+"."+suffixName;
File slaveFile = new File(slaveFileName);
Download download = tm.download(bucketName, effectKey,slaveFile);
download.waitForCompletion();
//
String archiveContentsKey = "archive" + SUFFIX + slaveFileName;
System.out.println(" id---------------------------------------:{}"+archiveContentsKey);
Upload upload = tm.upload(bucketName, archiveContentsKey, slaveFile);
upload.waitForCompletion();
}
//
Upload upload = tm.upload(bucketName, effectKey, file);
// Optionally, wait for the upload to finish before continuing
upload.waitForCompletion();
/**
* set acl
*/
connection.setObjectAcl(bucketName, effectKey, CannedAccessControlList.PublicRead);
long duration = (System.currentTimeMillis() - begin) / 1000;
} catch (InterruptedException e) {
throw new RuntimeException("upload to s3 failed.");
} finally {
if (tm != null) {
tm.shutdownNow();
}
if (connection != null) {
connection.shutdown();
}
}
}
}
アップロードに成功したら、endPointに渡すことができます.たとえば、endPointは:https://johnsmith.s3.amazonaws.comでは、endPointは次のようになります.https://johnsmith.s3.amazonaws.com/effect/test.xmlはファイルにアクセスします.https://johnsmith.s3.amazonaws.com/archive/test20191228001023.xmlバックアップファイルへのアクセス