java 调用s3 ip 端口,Java接口_操作_S3对象存储实例_对象存储实例_文档中心_SequoiaDB巨杉数据库...
Java接口本文档介绍如何使用 Java 接口向 SequoiaS3 发送请求及接收响应。SequoiaS3 安装路径下的 sample 目录中有一个 maven 类型的 Java 工程样例。使用 IDEA 打开该工程(【File】->【Open】->选中文件夹中的 Pom.xml->【Open as Project】->【Open Existing Project】-&g
Java接口
本文档介绍如何使用 Java 接口向 SequoiaS3 发送请求及接收响应。
SequoiaS3 安装路径下的 sample 目录中有一个 maven 类型的 Java 工程样例。
使用 IDEA 打开该工程(【File】->【Open】->选中文件夹中的 Pom.xml->【Open as Project】->【Open Existing Project】->【New Window】),将 Test.java 中的 endPoint 修改为提供 S3 服务的 IP 和端口,开始使用 sample 中的样例对存储桶和对象及区域进行操作。
初始化客户端
首先修改 endPoint 的地址和端口,使其指向 SequoiaS3 的地址和端口。
String accessKey="ABCDEFGHIJKLMNOPQRST";
String secretKey="abcdefghijklmnopqrstuvwxyz0123456789ABCD";
String endPoint = "http://localhost:8002";
SequoiaS3 sequoiaS3 = SequoiaS3ClientBuilder.standard()
.withEndpoint(endPoint)
.withAccessKeys(accessKey, secretKey)
.build();
AWSCredentials credentials = new BasicAWSCredentials(accessKey,secretKey);
AwsClientBuilder.EndpointConfiguration endpointConfiguration = new AwsClientBuilder.EndpointConfiguration(endPoint, null);
AmazonS3 s3 = AmazonS3ClientBuilder.standard()
.withEndpointConfiguration(endpointConfiguration)
.withCredentials(new AWSStaticCredentialsProvider(credentials))
.build();
参数定义
String regionName = "region-example";
String bucketName = "bucketname";
String objectName = "objectname";
File file = new File("example.png");
创建区域
创建一个名为"region-example"的区域,该区域设置每年创建一个新的集合空间,在该集合空间中每月创建一个新的集合,用于存放对象数据
CreateRegionRequest request = new CreateRegionRequest(regionName)
.withDataCLShardingType(DataShardingType.MONTH)
.withDataCSShardingType(DataShardingType.YEAR);
sequoiaS3.createRegion(request);
获取区域列表
查询当前系统中的区域列表
ListRegionsResult listRegionsResult = sequoiaS3.listRegions();
查询区域配置
查询区域配置及区域内的存储桶列表
GetRegionResult regionResult = sequoiaS3.getRegion(regionName);
Region region = regionResult.getRegion();
List buckets = regionResult.getBuckets();
System.out.println("region:" + region.toString());
for (int i=0; i < buckets.size(); i++) {
System.out.println("Name:" + buckets.get(i));
}
创建存储桶
在 region-example 区域中创建一个名为"bucketname"的桶
s3.createBucket(bucketName, regionName );
开启版本控制
打开指定存储桶的版本控制功能
该功能未开启时,同一对象多次上传,历史记录会被覆盖,该功能开启后,同一对象多次上传的历史记录都会被记录在系统中
BucketVersioningConfiguration cfg = new BucketVersioningConfiguration("Enabled");
SetBucketVersioningConfigurationRequest request = new SetBucketVersioningConfigurationRequest(bucketName, cfg);
s3.setBucketVersioningConfiguration(request);
上传对象
从本地上传一个名为 example.png 的文件到存储桶中,并命名为"objectname"
PutObjectRequest request = new PutObjectRequest(bucketName, objectName, file);
s3.putObject(request);
获取对象
从存储桶中获得对象内容,并将对象内容存储在本地文件中
String filePath = "example.png";
GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
S3Object result = s3.getObject(request);
S3ObjectInputStream s3is = result.getObjectContent();
FileOutputStream fos = new FileOutputStream(new File(filePath));
byte[] read_buf = new byte[1024];
int read_len = 0;
while ((read_len = s3is.read(read_buf)) > 0) {
fos.write(read_buf, 0, read_len);
}
s3is.close();
fos.close();
获取指定版本的对象
获取指定版本的对象,当不指定 versionId 时,获取最新版本的对象
GetObjectRequest request = new GetObjectRequest(bucketName, objectName, versionId);
S3Object object = s3.getObject(request);
查询桶内对象列表
查询存储桶中所有对象
ListObjectsV2Result result = s3.listObjectsV2(bucketName);
查询桶中所有版本
查询指定存储桶中的所有版本的对象信息,包括历史版本以及删除标记,当桶中版本记录过多,可以进行多次分批查询。
ListVersionsRequest request = new ListVersionsRequest()
.withBucketName(bucketName);
VersionListing result = s3.listVersions(request);
if (result.isTruncated())
{
result = s3.listNextBatchOfVersions(result);
}
删除对象
删除指定对象
版本功能未开启时,删除指定对象会直接将对象内容从系统中删除,版本功能开启后,删除操作会在系统中生成一个对象的删除标记,原对象内容会作为历史记录保留在系统中
s3.deleteObject(bucketName, objectName);
删除指定版本的对象
删除指定版本的对象,可以删除历史版本或删除标记,该操作会彻底删除系统中关于该版本的记录
s3.deleteVersion(bucketName, objectName, versionId);
删除桶
删除指定存储桶
s3.deleteBucket(bucketName);
删除区域
删除指定区域
sequoiaS3.deleteRegion(regionName);
查询区域是否存在
判断指定区域是否存在
Boolean isRegionExist = sequoiaS3.headRegion(regionName);
System.out.println("Region("+ regionName +") exist: " + isRegionExist);
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)