aws s3 api java_Java通过aws java sdk在AWS S3上进行操作客户端

本文介绍了如何在Java中使用AWS SDK操作S3,包括两种安装SDK的方式:通过Eclipse插件和Maven。详细讲解了AWSClient类中的方法,如初始化连接、创建/删除bucket、上传/下载文件、检查对象存在等,并提供了相关代码示例。
摘要由CSDN通过智能技术生成

有两种方式可以安装aws java sdk:

方式一:可以在这个网站上下载适用于 Java 的 AWS 开发工具包

https://aws.amazon.com/cn/sdk-for-java/

点击网页右侧的AWS Toolkit for eclipse进行安装,之后打开eclipse会提示下载aws java sdk,下载完之后就可以新建AWS Project了。

这样下载的好处是安装完后新建AWS Project的时候会给出一些例程,我下面的代码AWSClient类中有很多方法都是改自这些例程的。

方式二:通过maven dependency下载。

可以在下面这个网站获得最新的maven dependency:

http://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk

我这里使用的maven dependency是:

com.amazonaws

aws-java-sdk

1.10.26

采用default方法连接aws通过这种方法一开始是行不通的,原因是aws java sdk会在用户目录下查找一个文件,这个文件对应的位置是:

~/.aws/credentials

credentials文件里面记录的登陆的 key id 和 secret access key:

[default]

aws_access_key_id=YourAccessKeyId

aws_secret_access_key=YourSecretAccessKey

使用maven的方法不会帮你创建credentials文件,所以你需要手动创建文件并把上述内容添加进去,YourAccessKeyId 和 YourSecretAccessKey 改成你自己的就行。

另一种采用显式的输入 access key id 和 secret access key 的方法可以不用配置~/.aws/credentials这个文件。

AWSClient类中的方法简述:

init():通过default方法连接aws;

init_with_key():通过在代码中包含 access key id 和 secret access key 连接 aws;

createBucket(String bucketName):用于创建一个名为bucketName的s3 bucket;

private static void listObjects(String bucketName):列出名为bucketName的bucket里面的所有object(object相当于所有文件和文件夹);

isObjectExit(String bucketName, String key):判断名为bucketName的bucket里面是否有一个名为key的object;

createSampleFile(String bucketName, String filename):在本地创建一个名为filename的文件,输入一些信息后,将其传到名为bucketName的s3 bucket里面去;

showContentOfAnObject(String bucketName, String key):输出"s3://"+bucketname+"/"key对应的object对应的信息;

showContentOfAnGzipObject(String bucketName, String key):输出"s3://"+bucketname+"/"key对应的object对应的信息(这个object对应的文件时gzip格式的);

listBuckets():列出我的s3上所有的bucket的名字;

deleteBucket(String bucketName):删除一个名为bucketName的bucket;

deleteObjectsWithPrefix(String bucketName, String prefix):删除名为bucketName的bucket里面所有key的前缀和prefix匹配的object;

uploadFileToBucket(String path, String bucketName):上传一个本地文件(对应位置为path)上传到名为bucketName的bucket;

createFolder(String bucketName, String folderName):在aws上创建一个目录(这个函数上网查了两天才找到方法,很重要!)。

代码:

importjava.io.BufferedReader;importjava.io.ByteArrayInputStream;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStreamWriter;importjava.io.Writer;importjava.util.zip.GZIPInputStream;importcom.amazonaws.AmazonClientException;importcom.amazonaws.auth.AWSCredentials;importcom.amazonaws.auth.BasicAWSCredentials;importcom.amazonaws.auth.profile.ProfileCredentialsProvider;importcom.amazonaws.services.s3.AmazonS3;importcom.amazonaws.services.s3.AmazonS3Client;importcom.amazonaws.services.s3.model.Bucket;importcom.amazonaws.services.s3.model.GetObjectRequest;importcom.amazonaws.services.s3.model.ObjectListing;importcom.amazonaws.services.s3.model.ObjectMetadata;importcom.amazonaws.services.s3.model.PutObjectRequest;importcom.amazonaws.services.s3.model.S3Object;importcom.amazonaws.services.s3.model.S3ObjectSummary;importcom.amazonaws.services.s3.transfer.TransferManager;importcom.amazonaws.services.s3.transfer.Upload;public classAWSClient {staticAmazonS3 s3;staticTransferManager tx;private static String AWS_ACCESS_KEY = "YOUR_AWS_ACCESS_KEY";private static String AWS_SECRET_KEY = "YOUR_AWS_SECRET_KEY";static final String bucketName = "YOUR_BUCKET_NAME";private static void init() throwsException {

AWSCredentials credentials= null;try{

credentials= new ProfileCredentialsProvider("default").getCredentials();

}catch(Exception e) {throw new AmazonClientException("Exception on credentials.", e);

}

s3= newAmazonS3Client(credentials);//Region usWest2 = Region.getRegion(Regions.US_WEST_2);//s3.setRegion(usWest2);

tx = newTransferManager(s3);

}private static void init_with_key() throwsException {

AWSCredentials credentials= null;

credentials= newBasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY);

s3= newAmazonS3Client(credentials);//Region usWest2 = Region.getRegion(Regions.US_WEST_2);//s3.setRegion(usWest2);

tx = newTransferManager(s3);

}private static voidcreateBucket(String bucketName) {if(s3.doesBucketExist(bucketName) == true) {

System.out.println(bucketName+ " already exist!");return;

}

System.out.println("creating " + bucketName + " ...");

s3.createBucket(bucketName);

System.out.println(bucketName+ " has been created!");

}private static voidlistObjects(String bucketName) {

System.out.println("Listing objects of " +bucketName);

ObjectListing objectListing=s3.listObjects(bucketName);int objectNum = 0;for(S3ObjectSummary objectSummary : objectListing.getObjectSummaries()) {

System.out.println(" - " +objectSummary.getKey());

objectNum++;

}

System.out.println("total " + objectNum + " object(s).");

}private static booleanisObjectExit(String bucketName, String key) {int len =key.length();

ObjectListing objectListing=s3.listObjects(bucketName);

String s= newString();for(S3ObjectSummary objectSummary : objectListing.getObjectSummaries()) {

s=objectSummary.getKey();int slen =s.length();if(len ==slen) {inti;for(i=0;i

}

}return false;

}private static void createSampleFile(String bucketName, String filename) throwsIOException {if(isObjectExit(bucketName, filename) == true) {

System.out.println(filename+" already exists in " + bucketName + "!");return;

}

System.out.println("creating file " +filename);

File file= newFile(filename);

file.deleteOnExit();

Writer writer= new OutputStreamWriter(newFileOutputStream(file));

writer.write("abcdefghijklmnopqrstuvwxyz\n");

writer.write("01234567890112345678901234\n");

writer.write("!@#$%^&*()-=[]{};‘:‘,.<>/?\n");

writer.write("01234567890112345678901234\n");

writer.write("abcdefghijklmnopqrstuvwxyz\n");

writer.close();

s3.putObject(bucketName, filename, file);

System.out.println("create sample file " + filename + " succeed!");

}private static voidshowContentOfAnObject(String bucketName, String key) {

S3Object object= s3.getObject(newGetObjectRequest(bucketName, key));

InputStream input=object.getObjectContent();

BufferedReader reader= new BufferedReader(newInputStreamReader(input));try{while (true) {

String line=reader.readLine();if (line == null) break;

System.out.println(" " +line);

}

System.out.println();

}catch(IOException e) {

e.printStackTrace();

}

}private static voidshowContentOfAnGzipObject(String bucketName, String key) {try{

S3Object object= s3.getObject(newGetObjectRequest(bucketName, key));

InputStream input= newGZIPInputStream(object.getObjectContent());

BufferedReader reader= new BufferedReader(newInputStreamReader(input));while (true) {

String line=reader.readLine();if (line == null) break;

System.out.println(" " +line);

}

System.out.println();

}catch(IOException e) {

e.printStackTrace();

}

}private static voidlistBuckets() {

System.out.println("Listing buckets");int bucketNum = 0;for(Bucket bucket : s3.listBuckets()) {

System.out.println(" - " +bucket.getName());

bucketNum++;

}

System.out.println("total " + bucketNum + " bucket(s).");

}private static voiddeleteBucket(String bucketName) {if(s3.doesBucketExist(bucketName) == false) {

System.out.println(bucketName+ " does not exists!");return;

}

System.out.println("deleting " + bucketName + " ...");

ObjectListing objectListing=s3.listObjects(bucketName);for(S3ObjectSummary objectSummary : objectListing.getObjectSummaries()) {

String key=objectSummary.getKey();

s3.deleteObject(bucketName, key);

}

s3.deleteBucket(bucketName);

System.out.println(bucketName+ " has been deleted!");

}private static voiddeleteObjectsWithPrefix(String bucketName, String prefix) {if(s3.doesBucketExist(bucketName) == false) {

System.out.println(bucketName+ " does not exists!");return;

}

System.out.println("deleting " + prefix +"* in " + bucketName + " ...");int pre_len =prefix.length();

ObjectListing objectListing=s3.listObjects(bucketName);for(S3ObjectSummary objectSummary : objectListing.getObjectSummaries()) {

String key=objectSummary.getKey();int len =key.length();if(len < pre_len) continue;inti;for(i=0;i

s3.deleteObject(bucketName, key);

}

System.out.println("All " + prefix + "* deleted!");

}private static voiduploadFileToBucket(String path, String bucketName) {

File fileToUpload= newFile(path);if(fileToUpload.exists() == false) {

System.out.println(path+ " not exists!");return;

}

PutObjectRequest request= newPutObjectRequest(bucketName, fileToUpload.getName(), fileToUpload);

Upload upload=tx.upload(request);while((int)upload.getProgress().getPercentTransferred() < 100) {try{

Thread.sleep(1000);

}catch(InterruptedException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}

System.out.println(path+ " upload succeed!");

}private static voidcreateFolder(String bucketName, String folderName) {//Create metadata for my folder & set content-length to 0

ObjectMetadata metadata = newObjectMetadata();

metadata.setContentLength(0);//Create empty content

InputStream emptyContent = new ByteArrayInputStream(new byte[0]);//Create a PutObjectRequest passing the foldername suffixed by /

PutObjectRequest putObjectRequest =

new PutObjectRequest(bucketName, folderName+"/",

emptyContent, metadata);//Send request to S3 to create folder

s3.putObject(putObjectRequest);

}public static void main(String[] args) throwsException {

init();

showContentOfAnGzipObject(bucketName,"testfile.gz");

System.exit(0);

}

}

原文:http://www.cnblogs.com/wuyouwulv/p/aws_java_sdk__jAWSClient.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值