阿里云怎么利用oss提供的PostObject接口?

OSS 支持 RESTFUL API 形式调用,基本上服务端控制台上的功能配置,都可以通过 API 完成配置操作。也可以通过 OpenAPI 对文件进行集群的管理,结果用户访问控制台(RAM policy)加强客户的安全屏蔽,目前支持的 API 如下;

  • 对服务地址做Get请求可以返回请求者拥有的所有存储空间(Bucket),其中正斜线(/)表示根目录。
    • GetBucket接口用于列举存储空间(Bucket)中所有文件(Object)的信息。
    • GetBucketInfo接口用于查看存储空间(Bucket)的相关信息。只有Bucket的拥有者才能查看Bucket的信息。
    • PutBucketACL接口用于修改存储空间(Bucket)的访问权限。只有该Bucket的创建者有权限执行此操作。
    • GetBucketAcl接口用于获取某个存储空间(Bucket)的访问权限(ACL)。只有Bucket的拥有者才能获取Bucket的访问权限。
    • PutBucketLifecycle接口用于设置存储空间(Bucket)的生命周期规则。生命周期规则开启后,OSS将按照配置规则,定期自动删除与规则相匹配的文件(Object)。只有Bucket的拥有者才能发起此请求。
    • GetBucketLogging接口用于查看存储空间(Bucket)的访问日志配置。只有Bucket的拥有者才能查看Bucket的访问日志配置。
    • DeleteBucketLogging用于关闭存储空间(Bucket)的访问日志记录功能。只有Bucket的拥有者才有权限关闭Bucket访问日志记录功能。
    • PutBucketLogging接口用于为存储空间(Bucket)开启访问日志记录功能。访问日志记录功能开启后,OSS将自动记录访问Bucket请求的详细信息,并以小时为单位将访问日志作为一个文件(Object)写入指定的Bucket。
    • PutBucketWebsite接口用于将一个bucket设置成静态网站托管模式,以及设置跳转规则。
    • GetBucketWebsite接口用于查看存储空间(Bucket)的静态网站托管状态以及跳转规则。
    • DeleteBucketWebsite接口用于关闭存储空间(Bucket)的静态网站托管模式以及跳转规则。只有Bucket的拥有者才能关闭Bucket的静态网站托管模式。
    • PutBucketReferer接口用于设置存储空间(Bucket)的防盗链(Referer)。您可以使用此接口设置Referer的访问白名单以及是否允许Referer字段为空。
    • PutBucketcors接口用于为指定的存储空间(Bucket)设定一个跨域资源共享(CORS)规则。如果Bucket已有CORS规则,使用此接口会覆盖原有规则。Bucket默认不开启CORS功能,所有跨域请求的Origin都不被允许。
    • GetBucketCORS接口用于获取指定存储空间(Bucket)当前的跨域资源共享(CORS)规则。
    • DeleteBucketcors用于关闭指定存储空间(Bucket)对应的跨域资源共享(CORS)功能并清空所有规则。
    • CopyObject接口用于在存储空间(Bucket )内或同地域的Bucket之间拷贝文件(Object)。使用CopyObject接口发送一个Put请求给OSS,OSS会自动判断为拷贝操作,并直接在服务器端执行该操作。
    • HeadObject接口用于获取某个文件(Object)的元信息。使用此接口不会返回文件内容。
    • 用户只需要在发送给 OSS 的请求中携带相应的 Callback 参数,即能实现回调。本文详细介绍Callback的实现原理。
    • SelectObject用于对目标文件执行SQL语句,返回执行结果。
    • GetObjectACL接口用来获取某个存储空间(Bucket)下的某个文件(Object)的访问权限(ACL)。
    • GetSymlink接口用于获取软链接。此操作需要您对该软链接有读权限。
    • 您可以通过GetObjectTagging接口获取对象的标签信息。
    • 通过RTMP协议上传音视频数据前,必须先调用该接口创建一个LiveChannel。调用PutLiveChannel接口会返回RTMP推流地址,以及对应的播放地址。
    • PostVodPlaylist接口用于为指定的LiveChannel生成一个点播用的播放列表。OSS会查询指定时间范围内由该LiveChannel推流生成的ts文件,并将其拼装为一个m3u8播放列表。

如果用户端不想自己计算鉴权,直接利用 SDK 封装的 API 工具集,免去鉴权的复杂计算

OSS 后端采用的不是 hash key 的方式存储,而是采用了 LSM Tree 结构,系统性能是靠分裂分区扩展的。这种场景要求用户在存储 OSS 内容时,在文件命名上要避开热点前缀。用户如果前缀带了类似日期信息热点前缀,可能导致在切换月份的时候从N个分区跳变到压力集中到一个分区;

OSS按照文件名UTF-8编码的顺序对用户数据进行自动分区,从而能够处理海量文件,以及承载高速率的客户请求。不过,如果您在上传大量文件时,在命名上使用了顺序前缀(如时间戳或字母顺序),可能会导致大量文件索引集中存储于某个特定分区。这样,当您的请求速率超过2000次/秒时(下载、上传、删除、拷贝、获取元数据信息等操作算1次操作,批量删除N个文件、列举N个文件等操作算N次操作),会带来如下后果:

  • 该分区成为热点分区,导致分区的I/O能力被耗尽,或被系统自动限制请求速率。
  • 热点分区的存在会触发系统进行持续的分区数据再均衡,这个过程可能会延长请求处理时间。
    以上情况会降低OSS的水平扩展效果,导致客户的请求速率受限。

要解决这个问题,就要消除文件名中的顺序前缀。您可以在文件名前缀中引入某种随机性,这样文件索引(以及 I/O 负载)就会均匀分布在多个分区。

下面提供了几个将顺序前缀改为随机性前缀的方法示例。

针对这种情况,可以对客户ID计算哈希,即MD5(customer-id) ,并取若干字符的哈希前缀作为文件名的前缀。假如取4个字符的哈希前缀,结果如下:

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《》和《》。如果您发现本社区中有涉嫌抄袭的内容,填写进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

★★CT团队出品:Ftp4oss阿里云OSS最好用的FTP云工具、客户端和文件同步工具

OSS存储服务-客户端工具

OSS更新通信域名,老域名即将停止,请用户尽快变更新域名避免通信受阻

ossfs工具发布啦,让传统软件和云端存储完美融合

手把手教你搭建自己的OSS FTP 服务器

全线HTTPS 阿里云OSS一键签发绑定免费SSL证书图文教程

【云服务器分享】如何节省网站流量

您需要依次完成以下步骤:

  • 开通对象存储(OSS)服务

阿里云对象存储OSS(Object Storage Service)是阿里云提供的海量、安全、低成本、高持久的云存储服务,OSS具有与平台无关的RESTful API接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。现在,API网关支持创建后端服务为OSS的API,通过创建后端为OSS的API进行对象存储操作时,您不仅可以对您的存储空间进行文件上传,下载和删除等操作,也可以集成API网关的能力,为您的业务提供更可靠的服务,此外,对于同地域的API网关和OSS服务,我们支持通过内网访问。

步骤1 开通对象存储(OSS)服务

登录阿里云控制台,选择对象存储(OSS),按照指引开通OSS服务

步骤2 创建存储空间(Bucket)

更多配置,可参考对象存储的相关文档,本示例并未进行过多的设置,如下图所示。

API分组是API的管理单元,因此需要先创建API分组,然后在分组下创建API。

开放API菜单中选择分组管理,选择Region,点击创建分组;在弹窗页面,选择您的专享实例,输入分组名称testOssGroup,注意现在API网关只支持一定版本以上的专享实例创建后端为OSS服务的API,如果您的专享实例版本过低,请联系我们进行升级。

在分组列表查看创建好的分组,点击名称可以进入到详情页,进行绑定域名、修改基本信息、切换实例类型等动作。

API分组会自动创建公网二级域名,此二级域名仅供调试使用,如果直接访问此域名,每天有1000次的限制。因此建议您在使用时为分组绑定您的独立域名后使用。在本示例中使用此域名进行测试。

开放API菜单中选择API管理,在上一步中创建的API分组所在Region,点击创建API。

步骤5 API基本信息

本环节是定义了API基本信息,包括API分组、API名称、安全认证方式、API类型、和描述等。选择刚刚创建的分组,写入对应配置,安全认证主要选择APPcode(header&Query)认证。

步骤6 定义API请求

本环节是定义client端(如浏览器、手机APP或其他的业务系统)如何请求您的API,需要确定的内容包括请求类型、协议、请求Path、HTTP Method、入参请求模式、和入参定义。在本例中,HTTP Method选择GET,入参请求方式选择入参透传,表示发送过来的参数API网关不做处理,直接透传给后端服务。

对应的OSS的请求说明可以参考OSS的开发文档

步骤7 定义API后端服务

本环节是定于API网关收到client端的请求后,进行何种参数映射、处理,以及连接哪个后端地址。本例中的后端服务类型选择OSS,由于前边定义API请求方式选择了GET,后端定义里的Action选择GetObject,推荐您选择同区域下的OSS,网关将通过内网请求您的OSS服务。

由于网关要访问您的对象存储服务,在您填写完后端服务的信息之后,会提示您进行Bucket授权,只有授权之后,网关才能对您的服务进行访问。

如上图所示,由于示例里选择了GetObject,您可以选择授权整个bucket的读权限给网关,也可以授权部分权限给网关。授予的是读写或删除权限与您的Action有关,如果您之后想删除授权,可以到您的OSS控制台下-->权限管理-->Bucket授权策略-->设置里手动删除授权。

本环节用于API帮助文档的自助生成,帮助API使用者更好理解。可以设置返回ContentType、返回结果示例和失败返回结果示例。本例中不涉及到这部分,因此可以点击保存按钮。

在上一环节保存成功后,会提示如下信息。您对API进行过任何的配置,都需要发布到对应的环境(API网关内置了三个环境:“线上“、“预发“、“测试“)中才能够生效。本例中,点击发布,按照控制台页面的提示,把此API发布到“线上“环境。

5. 创建应用和API授权

应用(APP)是您调用API服务时的身份。在本例中的步骤5中,认证方式选择的是“阿里云APP认证“,因此在API发布后,还需要创建APP,并将APP和API的对应关系建立好,才能够正常访问。

调用API菜单中选择应用管理,创建一个APP,如下图所示。可以看到阿里云APP下有两种认证方式,AppKey和AppCode。本例中我们选择使用APPCode的方式进行简单认证。关于阿里云APP的更多描述可见此文档。

步骤11 对API进行授权

在API列表,找刚创建好的API,在操作项中,点击授权,出现如下的弹出框。注意环境需要选择已经进行了发布的环境,如本例中的"线上"。搜索之前创建的应用,点击添加;点击确定,提示授权成功,即成功授权。

API网关提供了在线调试的功能,因此一般建议在API网关上完成API配置之后,可以先通过此功能确认API是否配置成功,然后再通过client端进行调用。

API列表页,点击前面步骤中新增的API,进入详情页,点击调试API进入如下页面。如果您定义了API的入参,在调试API页面中也可以输出不同的参数查看API的执行情况。

在调试API中,注意认证方式选择已经授权的APP,并且stage选择此APP授权好的环境,如果选择错误的stage,可能会造成API调试失败。本例中选择RELEASE(线上)。

通过上述步骤,您已经创建API、创建APP、建立了授权关系,调试API完成,并将API发布到线上环境,本阶段将会模拟如何使用APPCode的认证方式来在您的业务系统中调用发布好的API。

可以参考API网关调用了解更多,本例中使用curl进行调用。

我要回帖

更多关于 阿里云oss存储 的文章

 

随机推荐