AmazonS3文檔——對象存儲的用法之《存儲桶操作》


最近應業務需要,要把保單相關的電話錄音進行整理,並逐漸取締本地硬盤存儲的方式,改為AmazonS3雲存儲。一方面讓錄音文件的目錄結構變得更加統一,有利於維護和查詢;另一方面可以保證錄音信息不會丟失。當然關於亞馬遜的這個對象存儲是花錢的服務,這點決定了接觸的人不會太多吧。這里記錄一下以后備用。

1.內容參考官方文檔

查看地址:AWS Java 開發人員指南

2.項目環境

自從用了maven,就沒再回去用過web項目和java項目。。。,就因為導包方便。當然如果只是想操作本地文件到雲存儲上的話,不用任何配置,普通的java代碼即可完成。這些上傳,下載,查詢,刪除的方法都可以作為工具類直接放到任何應用里面就可以使用。maven3.3.3+jdk1.7

3.安裝 Java 開發環境

適用於 Java 的 AWS 開發工具包要求使用 J2SE Development Kit 6.0 或更高版本。可以從 http://www.oracle.com/technetwork/java/javase/downloads/ 下載最新的 Java 軟件。

4.重要提示

Java 版本 1.6 (JS2E 6.0) 中沒有 SHA256 簽名的 SSL 證書的內置支持,而在 2015 年 9 月 30 日以后,與 AWS 的所有 HTTPS 連接都需要該功能。
Java 版本 1.7 或更高版本包含已更新證書,不受這一問題的影響。

5.存儲桶的創建須知

5.1 每個 AWS 賬戶創建最多 100 個存儲桶。創建存儲桶時,需提供桶的名稱以及要在其中創建存儲桶的 AWS 區域(Region)。
5.2存儲在存儲桶中的對象無數量限制,且無論是使用很多存儲桶,還是僅使用少量存儲桶,性能方面都不會有差別。可以在單個存儲桶中存儲所有對象,也可以在多個存儲桶中組織它們。

6.創建、列出和刪除存儲桶

Amazon S3 中的每個對象 (文件) 必須放入存儲桶,它代表對象的集合 (容器)。每個存儲桶使用必須唯一的鍵 (名稱) 命名。
6.1 創建存儲桶
使用 AmazonS3 客戶端的 createBucket 方法。會返回新的存儲桶。
導入:

import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.model.Bucket;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.AmazonServiceException;
1
2
3
4
代碼:

/**
* 創建名為bucketName的存儲桶。
* @param bucketName
*/
public void createOneBucket(String bucketName){
final AmazonS3 s3 = new AmazonS3Client();
try {
Bucket b = s3.createBucket(bucketName);
} catch (AmazonServiceException e) {
System.err.println(e.getErrorMessage());
System.exit(1);
}
System.out.println("Done!");
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
6.2列出存儲桶
使用 AmazonS3 客戶端的 listBucket 方法。如果成功,會返回存儲桶對象的列表。
導入:

import com.amazonaws.AmazonServiceException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.Bucket;
import java.util.List;
1
2
3
4
5
代碼:

/**
* 展示所有的存儲桶
*/
public void showBucketList(){
final AmazonS3 s3 = new AmazonS3Client();
List<Bucket> buckets = s3.listBuckets();
System.out.println("Your Amazon S3 buckets:");
for (Bucket b : buckets) {
System.out.println("* " + b.getName());
}
}
1
2
3
4
5
6
7
8
9
10
11
6.3刪除存儲桶
在刪除 Amazon S3 存儲桶前,必須先確保存儲桶為空,否則會導致錯誤。如果您的存儲桶受版本控制,則必須同時刪除與該存儲桶關聯的所有受版本控制對象。一般平時不會用這個,具體完整示例請看樣例:這里
簡單的操作如下簡介
導入:

import com.amazonaws.AmazonServiceException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.s3.model.S3ObjectSummary;
import java.util.Iterator;
1
2
3
4
5
6
代碼:

/**
* 根據桶的名字刪除該桶:具體思路是先刪除bucketName中的文件,然后刪除BucketName
* @param bucketName
*/
public void deleteBucketByName(String bucketName){
final AmazonS3 s3 = new AmazonS3Client();
try {
System.out.println(" - removing objects from bucket");
ObjectListing object_listing = s3.listObjects(bucketName);
while (true) {
for (Iterator<?> iterator =
object_listing.getObjectSummaries().iterator();
iterator.hasNext();) {
S3ObjectSummary summary = (S3ObjectSummary)iterator.next();
s3.deleteObject(bucketName, summary.getKey());
}

// more object_listing to retrieve?
if (object_listing.isTruncated()) {
object_listing = s3.listNextBatchOfObjects(object_listing);
} else {
break;
}
};
} catch (AmazonServiceException e) {
System.err.println(e.getErrorMessage());
System.exit(1);
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
6.4 刪除受版本控制的存儲桶之前從中刪除對象

思路:如果您使用受版本控制的存儲桶,還需要先刪除存儲桶中存儲的所有受版本控制對象,然后才能刪除存儲桶。
使用在刪除存儲桶中對象時使用的相似方法,通過使用 AmazonS3 客戶端的 listVersions 方法列出所有受版本控制的對象,然后使用 deleteVersion 刪除各個對象。
導入:

import com.amazonaws.AmazonServiceException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.ListVersionsRequest;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.s3.model.S3ObjectSummary;
import com.amazonaws.services.s3.model.S3VersionSummary;
import com.amazonaws.services.s3.model.VersionListing;
import java.util.Iterator;
1
2
3
4
5
6
7
8
9
代碼:

public void deleteBucketVisionList(String bucket_name){
final AmazonS3 s3 = new AmazonS3Client();
try {
System.out.println(" - removing objects from bucket");
ObjectListing object_listing = s3.listObjects(bucket_name);
while (true) {
for (Iterator<?> iterator =
object_listing.getObjectSummaries().iterator();
iterator.hasNext();) {
S3ObjectSummary summary = (S3ObjectSummary)iterator.next();
s3.deleteObject(bucket_name, summary.getKey());
}

// more object_listing to retrieve?
if (object_listing.isTruncated()) {
object_listing = s3.listNextBatchOfObjects(object_listing);
} else {
break;
}
};

System.out.println(" - removing versions from bucket");
VersionListing version_listing = s3.listVersions(
new ListVersionsRequest().withBucketName(bucket_name));
while (true) {
for (Iterator<?> iterator =
version_listing.getVersionSummaries().iterator();
iterator.hasNext();) {
S3VersionSummary vs = (S3VersionSummary)iterator.next();
s3.deleteVersion(
bucket_name, vs.getKey(), vs.getVersionId());
}

if (version_listing.isTruncated()) {
version_listing = s3.listNextBatchOfVersions(
version_listing);
} else {
break;
}
}
} catch (AmazonServiceException e) {
System.err.println(e.getErrorMessage());
System.exit(1);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
6.6 刪除空存儲桶
思路:在刪除存儲桶中的對象 (包括所有受版本控制的對象) 后,就可以使用 AmazonS3 客戶端的 deleteBucket 方法刪除存儲桶本身。
導入:

import com.amazonaws.AmazonServiceException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
1
2
3
代碼:

public void deleteEmptyBucket(String bucket_name){
final AmazonS3 s3 = new AmazonS3Client();
try {
s3.deleteBucket(bucket_name);
} catch (AmazonServiceException e) {
System.err.println(e.getErrorMessage());
System.exit(1);
}
}
————————————————
版權聲明:本文為CSDN博主「萬米高空」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zhanglf02/article/details/78485809


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM