全部產品
Search
文件中心

Object Storage Service:sign(產生簽名URL)

更新時間:Jul 31, 2024

預設情況下,OSS儲存空間中檔案的讀寫權限是私人,僅檔案擁有者具有訪問檔案的許可權。但是,檔案擁有者可以通過sign命令建立簽名URL的方式與第三方使用者分享檔案,簽名URL使用安全憑證的方式授權第三方使用者在指定時間內下載或者預覽檔案。

重要
  • 第三方使用者通過簽名URL可以訪問簽名URL中指向的Object,與該Object的ACL是公用讀取或者私人,是否通過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****

關於此命令的其他通用選項的更多資訊,請參見通用選項