java s3_Amazon S3 功能介绍

本文介绍了Amazon S3的基本概念,包括其作为云存储解决方案的角色和数据迁移选项。然后,通过Java SDK展示了如何创建S3客户端、创建bucket、上传下载文件、管理文件夹以及删除bucket和文件的操作步骤。
摘要由CSDN通过智能技术生成

一 .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.导入依赖包

com.amazonaws

aws-java-sdk

1.9.2

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值