Amazon S3 功能介绍
一 .Amazon S3介紹
Amazon Simple Storage Service (Amazon S3) 是一種對象存儲,它具有簡單的 Web 服務接口,可用于在 Web 上的任何位置存儲和檢索任意數量的數據。它能夠提供 99.999999999% 的持久性,并且可以在全球大規模傳遞數萬億對象。
客戶使用 S3 作為云原生應用程序的主要存儲;作為分析的批量存儲庫或“數據湖”;作為備份和恢復以及災難恢復的目標;并將其與無服務器計算配合使用。
使用 Amazon 的云數據遷移選項,客戶可以輕松地將大量數據移入或移出 Amazon S3。數據在存儲到 S3 中之后,會自動采用成本更低、存儲期限更長的云存儲類 (如 S3 Standard – Infrequent Access 和 Amazon Glacier) 進行存檔。
二.Java S3 Example
準備工作:
1.導入依賴包
??? <dependency>
??????? <groupId>com.amazonaws</groupId>
??????? <artifactId>aws-java-sdk</artifactId>
??????? <version>1.9.2</version>
??? </dependency>
2.在s3服務中創建用戶,獲取用戶的Access key和Secret Access Key,使用這個作為憑證連接s3
3.在s3服務中配置AWSConnector和AmazonS3FullAccess的連接權限。可以通過這個配置,在訪問的時候進行authenticate驗證。
s3 api簡單操作:
1.創建憑證
??? AWSCredentials credentials = new BasicAWSCredentials("YourAccessKeyID", "YourSecretAccessKey");
2.創建S3 Client
??? AmazonS3 s3client = new AmazonS3Client(credentials);
3.創建Bucket
??? String bucketName = "javatutorial-net-example-bucket";
??? s3client.createBucket(bucketName);
4.獲取s3 Bucket的list
??? for (Bucket bucket : s3client.listBuckets()) {
?? ??? ?System.out.println(" - " + bucket.getName());
??? }
5.在s3 Bucket中創建文件
??? public static void createFolder(String bucketName, String folderName, AmazonS3 client) {
?? ??? ?// create meta-data for your folder and set content-length to 0
?? ??? ?ObjectMetadata metadata = new ObjectMetadata();
?? ??? ?metadata.setContentLength(0);
?? ??? ?// create empty content
?? ??? ?InputStream emptyContent = new ByteArrayInputStream(new byte[0]);
?? ??? ?// create a PutObjectRequest passing the folder name suffixed by /
?? ??? ?PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName,
?? ??? ??? ??? ??? ?folderName + SUFFIX, emptyContent, metadata);
?? ??? ?// send request to S3 to create folder
?? ??? ?client.putObject(putObjectRequest);
??? }
6.上傳文件
??? String fileName = folderName + SUFFIX + "testvideo.mp4";
??? s3client.putObject(new PutObjectRequest(bucketName, fileName,
?? ??? ??? ?new File("C:\\Users\\user\\Desktop\\testvideo.mp4")));
7.刪除Bucket
??? s3client.deleteBucket(bucketName);
8.刪除文件
??? s3client.deleteObject(bucketName, fileName);
?? ?
完整實例
??? import java.io.ByteArrayInputStream;
??? import java.io.File;
??? import java.io.InputStream;
??? import java.util.List;
??? import com.amazonaws.auth.AWSCredentials;
??? import com.amazonaws.auth.BasicAWSCredentials;
??? import com.amazonaws.services.s3.AmazonS3;
??? import com.amazonaws.services.s3.AmazonS3Client;
??? import com.amazonaws.services.s3.model.Bucket;
??? import com.amazonaws.services.s3.model.CannedAccessControlList;
??? import com.amazonaws.services.s3.model.ObjectMetadata;
??? import com.amazonaws.services.s3.model.PutObjectRequest;
??? import com.amazonaws.services.s3.model.S3ObjectSummary;
??? public class AmazonS3Example {
?? ??? ?
?? ??? ?private static final String SUFFIX = "/";
?? ??? ?
?? ??? ?public static void main(String[] args) {
?? ??? ??? ?// credentials object identifying user for authentication
?? ??? ??? ?// user must have AWSConnector and AmazonS3FullAccess for
?? ??? ??? ?// this example to work
?? ??? ??? ?AWSCredentials credentials = new BasicAWSCredentials(
?? ??? ??? ??? ??? ?"YourAccessKeyID",
?? ??? ??? ??? ??? ?"YourSecretAccessKey");
?? ??? ??? ?
?? ??? ??? ?// create a client connection based on credentials
?? ??? ??? ?AmazonS3 s3client = new AmazonS3Client(credentials);
?? ??? ??? ?
?? ??? ??? ?// create bucket - name must be unique for all S3 users
?? ??? ??? ?String bucketName = "javatutorial-net-example-bucket";
?? ??? ??? ?s3client.createBucket(bucketName);
?? ??? ??? ?
?? ??? ??? ?// list buckets
?? ??? ??? ?for (Bucket bucket : s3client.listBuckets()) {
?? ??? ??? ??? ?System.out.println(" - " + bucket.getName());
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?// create folder into bucket
?? ??? ??? ?String folderName = "testfolder";
?? ??? ??? ?createFolder(bucketName, folderName, s3client);
?? ??? ??? ?
?? ??? ??? ?// upload file to folder and set it to public
?? ??? ??? ?String fileName = folderName + SUFFIX + "testvideo.mp4";
?? ??? ??? ?s3client.putObject(new PutObjectRequest(bucketName, fileName,
?? ??? ??? ??? ??? ?new File("C:\\Users\\user\\Desktop\\testvideo.mp4"))
?? ??? ??? ??? ??? ?.withCannedAcl(CannedAccessControlList.PublicRead));
?? ??? ??? ?
?? ??? ??? ?deleteFolder(bucketName, folderName, s3client);
?? ??? ??? ?
?? ??? ??? ?// deletes bucket
?? ??? ??? ?s3client.deleteBucket(bucketName);
?? ??? ?}
?? ??? ?
?? ??? ?public static void createFolder(String bucketName, String folderName, AmazonS3 client) {
?? ??? ??? ?// create meta-data for your folder and set content-length to 0
?? ??? ??? ?ObjectMetadata metadata = new ObjectMetadata();
?? ??? ??? ?metadata.setContentLength(0);
?? ??? ??? ?// create empty content
?? ??? ??? ?InputStream emptyContent = new ByteArrayInputStream(new byte[0]);
?? ??? ??? ?// create a PutObjectRequest passing the folder name suffixed by /
?? ??? ??? ?PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName,
?? ??? ??? ??? ??? ?folderName + SUFFIX, emptyContent, metadata);
?? ??? ??? ?// send request to S3 to create folder
?? ??? ??? ?client.putObject(putObjectRequest);
?? ??? ?}
?? ??? ?/**
?? ??? ? * This method first deletes all the files in given folder and than the
?? ??? ? * folder itself
?? ??? ? */
?? ??? ?public static void deleteFolder(String bucketName, String folderName, AmazonS3 client) {
?? ??? ??? ?List fileList =
?? ??? ??? ??? ??? ?client.listObjects(bucketName, folderName).getObjectSummaries();
?? ??? ??? ?for (S3ObjectSummary file : fileList) {
?? ??? ??? ??? ?client.deleteObject(bucketName, file.getKey());
?? ??? ??? ?}
?? ??? ??? ?client.deleteObject(bucketName, folderName);
?? ??? ?}
??? }
參考:
https://javatutorial.net/java-s3-example
https://aws.amazon.com/cn/s3/getting-started/
python版的s3 api:
http://boto3.readthedocs.io/en/latest/guide/quickstart.html
?
轉載于:https://www.cnblogs.com/web424/p/6840207.html
總結
以上是生活随笔為你收集整理的Amazon S3 功能介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 學習反射2
- 下一篇: Javascript中的\r\n