sign(生成签名URL)

默认情况下,OSS存储空间中文件的读写权限是私有,仅文件拥有者具有访问文件的权限。但是,文件拥有者可以通过sign命令创建签名URL的方式与第三方用户分享文件,签名URL使用安全凭证的方式授权第三方用户在指定时间内下载或者预览文件。

重要
  • 第三方用户通过签名URL可以访问签名URL中指向的Object,与该ObjectACL是公共读或者私有,是否通过Bucket Policy或者RAM Policy授权第三方用户拥有访问指定Object的权限无关。

  • ossutil 1.6.16版本开始,命令行中Binary名称支持直接使用ossutil,您无需根据系统刷新Binary名称。如果您的ossutil版本低于1.6.16,则需要根据系统刷新Binary名称。更多信息,请参见命令行工具ossutil命令参考

命令格式

ossutil sign cloud_url
[--timeout <value>] 
[--version-id <value>] 
[--trafic-limit <value>] 
[--disable-encode-slash] 
[--payer <value>]
[--query-param <value>]

参数及选项说明如下:

配置项

说明

cloud_url

文件所在Bucket的完整路径。

--timeout

签名URL过期时间,单位为秒。默认值为60。

重要

当前时间戳与签名URL的过期时间之和不能超过9223372036854775807,否则会溢出报错。例如,当前时间戳为1643341269,则签名URL过期时间最大不能超过9223372035211434538。

--version-id

Object的指定版本ID。仅适用于已开启或暂停版本控制状态Bucket下的Object。

--trafic-limit

限定HTTP的访问速度,单位为bit/s。缺省值为0,表示不受限制。取值范围为819200~838860800,即100 KB/s~100 MB/s。

--disable-encode-slash

不对cloud_url中携带的正斜线(/)进行编码。

--payer

请求的支付方式。如果希望访问指定路径下的资源产生的流量、请求次数等费用由请求者支付,请将此选项的值设置为requester

--query-param

设置请求中的查询参数。该参数可以出现多次。例如,您可以将该参数设置为图片处理参数。

--query-param支持的参数为:x-oss-process、response-content-type、x-oss-traffic-limit、response-content-language、response-expires、response-cache-control、response-content-disposition、response-content-encoding、x-oss-ac-source-ip、x-oss-ac-subnet-mask、x-oss-ac-vpc-id、x-oss-ac-forward-allow。关于参数含义的更多信息,请参见签名版本1GetObject

说明

1.7.15及以上版本支持设置--query-param参数。

使用示例

  • 为目标存储空间examplebucket下的文件exampleobject.png生成文件URL,其默认超时时间为60秒。

    ossutil sign oss://examplebucket/exampleobject.png
  • 为目标存储空间examplebucket下的文件exampleobject.png生成文件URL,并指定超时时间为3600秒。

    ossutil sign oss://examplebucket/exampleobject.png --timeout 3600
  • 为目标存储空间examplebucket下的文件exampleobject.png生成文件URL,指定其超时时间为7200秒,并限定其访问速度为100MB/s。

    ossutil sign oss://examplebucket/exampleobject.png --timeout 7200 --trafic-limit 838860800
  • 为已开启版本控制的存储空间examplebucket下的exampleobject.jpg的指定版本文件生成文件URL,并指定超时时间为1800秒。

    ossutil sign oss://examplebucket/exampleobject.jpg --timeout 1800 --version-id  CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3****
  • 为目标存储空间examplebucket下的文件exampleobject.jpg生成处理后的图片URL,将图片宽高设置为100px,并旋转90度。

     ossutil sign oss://examplebucket/exampleobject.jpg  --query-param x-oss-process:image/resize,m_fixed,w_100,h_100/rotate,90
  • 为目标存储空间examplebucket下的文件exampleobject.jpg生成处理后的图片URL,将图片宽高设置为100px,并旋转90度,然后限速100 KB/s,即819200 bit/s。

    ossutil sign oss://examplebucket/exampleobject.jpg  --query-param x-oss-process:image/resize,m_fixed,w_100,h_100/rotate,90 --query-param x-oss-traffic-limit:819200
  • 以上示例操作成功后,返回结果中将包含生成文件URL所用时长、文件URL过期时间以及签名等信息,示例如下:

    https://examplebucket.ss-cn-hangzhou.aliyuncs.com/exampleobject.png?Expires=1608282224&OSSAccessKeyId=LTAI4G33piUmgRN1DXx9****&Signature=jo4%2FGykfuc1A4fvyvKRpRyymYH****
    0.368676(s) elapsed

通用选项

当您需要通过命令行工具ossutil切换至另一个地域的Bucket时,可以通过-e选项指定该Bucket所属的Endpoint。当您需要通过命令行工具ossutil切换至另一个阿里云账号下的Bucket时,可以通过-i选项指定该账号的AccessKey ID,并通过-k选项指定该账号的AccessKey Secret。

例如您需要为另一个阿里云账号下,华东2(上海)地域下存储空间testbucket下的exampletest.jpg文件生成超时时间为3600秒的文件URL,命令如下:

ossutil sign oss://testbucket/exampletest.jpg --timeout 3600 -e oss-cn-shanghai.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA****  -k 67DLVBkH7EamOjy2W5RVAHUY9H****

关于此命令的其他通用选项的更多信息,请参见通用选项