没有合适的资源?快使用搜索试试~ 我知道了~
首页AWS S3 Java 开发文档
AWS S3 Java 开发文档
需积分: 48 118 下载量 24 浏览量
更新于2023-03-16
评论 5
收藏 596KB PDF 举报
有了这个文档 AWS S3 服务java基本上没有啥问题了。。注:我也是在国外网站上找到的。分享给大家。。希望大家多多支持
资源详情
资源评论
资源推荐
S3 Java SDK
文
档
前
言
简
介
对象存储S3接口 Java SDK采用了开源的aws-java-sdk-s3。
本文档主要介绍SDK的安装、使用与注意事项。
假设您已经开通了对象存储服务, 并创建了 AccessKey 与 SecretKey 。
安
装
在
Maven
项
目
中
加
入
依
赖
项
向Maven 工程中的pom.xml添加下述依赖项,即可使用原生的S3 Java SDK,可以参考aws-sdk-java。
示
例
工
程
与
程
序
可以下载对象存储 Java SDK 的示例工程,里面包含了很多示例程序,可供参考。
初
始
化
新
建
Client
要使用SDK的功能,需要先初始化,代码如下所示:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws‐java‐sdk‐bom</artifactId>
<version>1.10.69</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws‐java‐sdk‐s3</artifactId>
</dependency>
</dependencies>
代码中,accessKey与secretKey是在对象存储中创建用户后,系统分配给用户用于访问对象存储的凭证。而
hostname是云存储服务商提供的服务地址(可以是IP地址或者域名)。
如果hostname是个域名,默认情况下,SDK发出的请求会将容器名放置在域名前,即 bucket.hostname 。如果服
务端不支持这种格式,而只支持 hostname/bucket 这样的格式,则可以通过修改SDK的配置来进行。具体如下所
示:
如果hostname是个IP地址,则默认使用的是 hostname/bucket 格式。
在初始化之后,就可以利用client进行各种操作了。
配
置
Client
如果需要修改客户端的一些默认配置,请在构造Client的时候传入ClientConfiguration实例:
ClientConfiguration是客户端的配置类,可配置代理、连接超时、最大连接等参数。主要参数如下:
ClientConfigurationopts=newClientConfiguration();
opts.setSignerOverride("S3SignerType");
AWSCredentialscredentials=newBasicAWSCredentials(accessKey,secretKey);
AmazonS3Clientclient=newAmazonS3Client(credentials,opts);
client.setEndpoint(hostname);
S3ClientOptionsoptions=newS3ClientOptions();
options.setPathStyleAccess(true);
client.setS3ClientOptions(options);
ClientConfigurationopts=newClientConfiguration();
//指定client的签名算法
opts.setSignerOverride("S3SignerType");
AWSCredentialscredentials=newBasicAWSCredentials(accessKey,secretKey);
AmazonS3Clientclient=newAmazonS3Client(credentials,opts);
client.setEndpoint(hostname);
参
数
描
述
方
法
maxConnections
允许打开的最大HTTP连
接数。默认为50
ClientConfiguration.setMaxConnections
socketTimeout
Socket层传输数据的超
时时间(单位:毫
秒)。默认为50,000毫
秒
ClientConfiguration.setSocketTimeout
connectionTimeout
建立连接的超时时间
(单位:毫秒)。默认
为50,000毫秒
ClientConfiguration.setConnectionTimeout
requestTimeout
等待请求完成的超时时
间(单位:毫秒)。默
认不超时
ClientConfiguration.setRequestTimeout
clientExecutionTimeout
客户端请求执行超时时
间(单位:毫秒)。默
认不超时
ClientConfiguration.setClientExecutionTimeout
MaxErrorRetry
请求失败后最大的重试
次数。默认3次
ClientConfiguration.setMaxErrorRetry
connectionMaxIdleMillis
如果空闲时间超过此参
数的设定值,则关闭连
接(单位:毫秒)。默
认为60,000毫秒
ClientConfiguration.setConnectionMaxIdleMillis
signerOverride
指定签名算法,可以设
成"S3SignerType",即
采用v2签名
ClientConfiguration.setSignerOverride
关
闭
Client
一般情况下您不需要执行额外的操作来关闭client。如果您不再需要使用创建的client,可以调用shutdown接口来
关闭client。在关闭之后,资源会被释放,您不可以再使用该client进行其他操作。
接
口
说
明
注
意
:
对于接口的详细说明,可以参考AWS JAVA SDK Javadoc。
管
理
Bucket
创
建
Bucket
您可以使用 createBucket 接口创建Bucket。如下代码展示如何新建一个Bucket:
//关闭client,之后不能再被使用
client.shutdown();
Bucket的命名需要遵循对象存储中容器的命名规范。
Bucket的名字是全局唯一的,所以您需要保证Bucket名称不与别人重复。
上面的代码创建的Bucket,权限是私有读写。在创建Bucket时可以指定Bucket的权限,示例代码如下:
列
举
Bucket
您可以使用 listBuckets 接口列举指定用户下的所有Bucket:
删
除
Bucket
您可以使用 deleteBucket 接口删除Bucket:
如果容器不为空,则无法被删除,服务端会返回错误;
必选先删除容器中的所有对象后,容器才能成功删除。
判
断
Bucket
是
否
存
在
您可以使用 doesBucketExist 接口判断该Bucket是否已存在:
此外,您也可以使用 headBucket 接口来判断Bucket是否已经存在,并且您有权限来访问该Bucket:
设
置
Bucket ACL
除了在创建容器时设置其ACL之外,您也可以使用 setBucketAcl 接口进行ACL的修改。Bucket ACL包含了
CannedAccesssControlList 与AccessControlList 两种格式。
CannedAccesssControlList
CannedAccesssControlList格式的Bucket ACL包含了:Private(私有读写),PublicRead(公共读私有写),
PublicReadWrite(公共读写)。
StringbucketName="<your‐bucket‐name>";
client.createBucket(bucketName);
StringbucketName="<your‐bucket‐name>";
CreateBucketRequestrequest=newCreateBucketRequest(bucketName);
//默认权限是私有读写,设置成公共可读写
request.setCannedAcl(CannedAccessControlList.PublicReadWrite);
client.createBucket(request);
List<Bucket>bucketList=client.listBuckets();
client.deleteBucket(bucketName);
booleanexists=client.doesBucketExist(bucketName);
HeadBucketRequestrequest=newHeadBucketRequest(bucketName);
HeadBucketResultresult=client.headBucket(request);
权
限
Java SDK
对
应
值
私有读写 CannedAccessControlList.Private
公共读私有写 CannedAccessControlList.PublicRead
公共读写 CannedAccessControlList.PublicReadWrite
注册用户可读 CannedAccessControlList.AuthenticatedRead
权
限
Java SDK
对
应
值
完全权限 Permission.FullControl
读权限 Permission.Read
写权限 Permission.Write
读ACL权限 Permission.ReadAcp
写ACL权限 Permission.WriteAcp
以下代码展示如何使用CannedAccesssControlList设置Bucket的权限:
AccessControlList
使用该格式设置Bucket ACL时,可以设置
特
定
用
户
对Bucket的访问权限。权限包括了:FullControl(完全权限),
Read(读权限),Write(写权限),ReadAcp(读ACL权限),WriteAcp(写ACL权限)。
以下代码展示如何使用AccessControlList设置Bucket的权限:
获
取
Bucket ACL
您可以使用getBucketAcl接口获取Bucket的权限。以下代码展示如何获取Bucket的ACL:
//设置为公共读写
client.setBucketAcl(bucketName,CannedAccessControlList.PublicReadWrite);
AccessControlListlist=newAccessControlList();
//设置owner
Ownerowner=newOwner("owner‐id","owner‐displayName");
list.setOwner(owner);
//设置指定用户的id
CanonicalGranteegrantee=newCanonicalGrantee("user‐id");
//设置指定用户的displayName,可选
grantee.setDisplayName("user‐displayName");
//给指定用户赋予读ACL权限
list.grantPermission(grantee,Permission.ReadAcp);
SetBucketAclRequestrequest=newSetBucketAclRequest(bucketName,list);
client.setBucketAcl(request);
AccessControlListacl=client.getBucketAcl(bucketName);
剩余25页未读,继续阅读
逍遥绝情
- 粉丝: 99
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0