Java-SDK
S3-Java-SDK?
推薦使用AWS S3官方(fang)的Java SDK
前置條件?
- JDK 7或更高版本,Maven 3或更高版本;
- 如果您還不了解COS,請參考對象存儲服務;
- 使用SDK需要擁有有效的密鑰對(包括AccessKeyId和AccessKeySecret)進行簽名認證,請在控制臺界面獲取該密鑰對;
pom.xml?
通(tong)過Maven導入所有需要依賴的jar包,pom.xml配置如下(xia)
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.11.132</version>
</dependency>
<dependencies>
建(jian)議使用(yong)示例版本,最新版本可參考,調用(yong)相關(guan)API,即可訪問Amazon S3或(huo)其他兼容S3的(de)存儲服務
適用系統?
Mac OS X,Windows,Linux等
使用S3-Java-SDK?
以下代碼使用SDK實現了基本的桶和對象操作:
- 創建一個桶;
- 獲取用戶桶列表;
- 上傳對象到桶中;
- 下載桶中的對象;
- 獲取桶中的對象列表;
- 從桶中刪除對象;
- 刪除一個空桶;
package com.chinac.stor;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.UUID;
import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
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.GetObjectRequest;
import com.amazonaws.services.s3.model.ListObjectsRequest;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.amazonaws.services.s3.model.Bucket;
import com.amazonaws.services.s3.model.S3Object;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.s3.model.S3ObjectSummary;
import com.amazonaws.ClientConfiguration;
import com.amazonaws.Protocol;
public class S3SDKSample {
public static void main(String[] args) throws IOException {
ClientConfiguration config = new ClientConfiguration();
// SDK默認走(zou)HTTPS協(xie)議,這里設置為(wei)走(zou)HTTP
config.withProtocol(Protocol.HTTP);
// SDK默認v4簽(qian)名,打開此項使用v2簽(qian)名
config.setSignerOverride("S3SignerType");
// 設置密鑰對,創建Credential對象
final String accessKeyId = "YOUR_ACCESS_KEY_ID";
final String secretAccessKey = "YOU_SECRET_ACCESS_KEY";
AWSCredentials credentials = new BasicAWSCredentials(accessKeyId, secretAccessKey);
// 創建S3訪問客(ke)戶端
AmazonS3 s3 = new AmazonS3Client(credentials, config);
s3.setEndpoint("s3-cn-suzhou.cn-henji.com"); // 從用戶信(xin)息頁面描述中(zhong)獲取endpoint
final String bucketName = "test-bucket-" + UUID.randomUUID();
final String key = "test-key";
try {
// 創建一個桶
s3.createBucket(bucketName);
// 獲取桶列表(biao)
for (Bucket bucket : s3.listBuckets()) {
System.out.println("Bucket:" + bucket.getName());
}
// 上傳對象到桶(tong)中
s3.putObject(new PutObjectRequest(bucketName, key, createFile()));
// 下載剛(gang)剛(gang)上傳的對象
S3Object object = s3.getObject(new GetObjectRequest(bucketName, key));
dumpInputStream(object.getObjectContent());
// 獲(huo)取(qu)桶中的對象列(lie)表(biao)
ObjectListing objectListing = s3.listObjects(new ListObjectsRequest().withBucketName(bucketName));
for (S3ObjectSummary objectSummary : objectListing.getObjectSummaries()) {
System.out.println(objectSummary.getKey() +"Size:" + objectSummary.getSize());
}
// 從桶(tong)中(zhong)刪(shan)除對(dui)象
s3.deleteObject(bucketName, key);
// 刪除(chu)一個空(kong)桶
s3.deleteBucket(bucketName);
} catch (AmazonServiceException ase) {
System.out.println(ase.getMessage());
System.out.println(ase.getStatusCode());
} catch (AmazonClientException ace) {
System.out.println(ace.getMessage());
}
}
// 創建文件并返回該對象(xiang)
private static File createFile() throws IOException {
File file = File.createTempFile("storultra_test", ".txt");
file.deleteOnExit();
Writer writer = new OutputStreamWriter(new FileOutputStream(file));
writer.write("Hello, world!\n");
writer.close();
return file;
}
// 輸出InputStream流
private static void dumpInputStream(InputStream input) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
while (true) {
String line = reader.readLine();
if (line == null) break;
System.out.println(line);
}
}
}
Eclipse下執行代碼?
- 在Eclipse下New->Maven Project;
- New一個名為S3SDKSample的類;
- 拷貝上述代碼并保存到S3SDKSample.java文件中;
- 右鍵Run As->Java Application,執行結果輸出到控制臺。