跳到主要内容
孤雲
語言 简中 繁中 EN

騰訊雲 COS

大約 10 分鐘,不需要花錢,就能在騰訊雲 COS 上給孤雲準備好一個桶和一對只授權這個桶的金鑰。

本文是孤雲的官方引導。有一個雲端帳號即可,不必先看懂騰訊雲的權限體系,跟著走完就行。本文依繁體介面用詞;控制台若顯示簡體,按鈕名稱請按同義對照。

要準備什麼

  • 一個騰訊雲帳號(個人也可以);用主帳號登入主控台完成下面所有操作。
  • 桶要放在哪個地域,例如 ap-guangzhou(廣州);地域後面還要填進孤雲,兩處必須一致。
  • 一個想好的桶名;它末尾會自動帶上你帳號的 APPID 後綴。
  • 不需要先開通別的服務、不需要網域、也不需要備案。

費用按實際用量計算:物件儲存本身不收開通費,桶空著幾乎不產生費用,之後按儲存量、請求次數和外網流量計費。如果已經有桶和一對金鑰,可以跳過前三步,直接看「抄下這四個值」。

分步操作

  1. 第 1 步

    建儲存桶

    • 打開騰訊雲主控台,進入物件儲存 COS,在左側選「儲存桶列表」,點「建立儲存桶」。
    • 名稱隨便起一個(小寫字母、數字和短橫線),地域選你要用的那個 —— 例如 ap-guangzhou;地域要和後面填進孤雲的一致。
    • 存取權限選「私有讀寫」,其餘選項保持預設,點「建立」。
    • 桶名末尾會自動帶上你的 APPID,形如 my-photos-1234567890。複製完整桶名(連後綴一起)—— 只複製前綴是孤雲連不上桶最常見的原因。
    • APPID 是一串數字(範例裡是 1234567890),在騰訊雲主控台的「帳號資訊」裡看得到,也可以看任何既有桶的名字末尾。
    • 孤雲是唯一需要多填一格的服務商:把 APPID 填進它自己的「APPID」格,桶名那格只填前綴也行 —— 孤雲會替你補成 你填的名字-1234567890;如果貼進來的桶名已經帶了這個後綴,就不會再追加一次。
  2. 第 2 步

    建子帳號與金鑰

    • 用主帳號進入存取管理 CAM →「使用者」→「使用者列表」,點「新建使用者」。
    • 存取方式只勾「程式化存取」,不要勾主控台登入:孤雲只需要一對金鑰。
    • 建立完成後複製這個子帳號的 SecretId 與 SecretKey。SecretKey 只顯示一次,離開頁面就看不到了 —— 現在就把兩個值存好。
    • 不要用主帳號金鑰:它的權限涵蓋整個帳號,而孤雲只需要一個桶。
  3. 第 3 步

    給這個子帳號掛權限

    • 先弄清一件事:CAM 裡的 GetService、PutBucket 是操作(action),不是策略名稱 —— 所以在「策略」列表裡搜這兩個詞是搜不到的。要用它們,只能走自訂策略。
    • 做權限用主帳號:CAM →「策略」→「新建自訂策略」→ 選「按策略語法建立」→ 範本選空白範本。
    • 把下面這段 JSON 貼進「策略內容」,替換裡面的桶名與 APPID(your-bucket-name-1234567890、1234567890、以及地域 ap-guangzhou 都是虛構的範例值)。
    • 這段策略一次給到兩層的權限:第一段是帳號級的,允許列出你帳號裡的桶、並新建桶(桶還不存在時沒辦法把它寫進資源路徑,所以資源是 *);第二段是桶級的,限定在你那一個桶裡,cos:* 表示桶內的事都放給它。
    • 這段策略故意不含刪桶權限 —— 孤雲不需要刪桶,只建桶、往桶裡放東西。
    • 只想用既有的桶、不想讓應用建桶,就把第一段整個刪掉,只留桶級那一段。
    • 儲存後回到使用者頁面,把這條策略關聯給它(CAM →「使用者」→ 該使用者 →「關聯策略」)。
  4. 第 4 步

    在孤雲裡填好,點「測試連線並儲存」

    • 回到孤雲,打開「新增儲存」,服務商選「騰訊雲 COS」,地域選你在主控台選的同一個地域。
    • 按下面的順序把值填進對應格子:APPID、桶名、地域、端點、金鑰(SecretId 與 SecretKey)。
    • 點「測試連線並儲存」。它只讀取桶的根目錄,不上傳、不刪除任何東西。

子帳號要的權限:一段 CAM 自訂策略

把 your-bucket-name、1234567890 和地域換成你自己的桶名、APPID 與地域。這段策略故意不含刪桶權限。

json
{
  "version": "2.0",
  "statement": [
    { "effect": "allow", "action": ["cos:GetService", "cos:PutBucket"], "resource": ["*"] },
    { "effect": "allow", "action": ["cos:*"],
      "resource": ["qcs::cos:ap-guangzhou:uid/1234567890:your-bucket-name-1234567890/*"] }
  ]
}

貼上位置:CAM 主控台 →「策略」→「新建自訂策略」→ 按策略語法建立 → 空白範本。第一段允許列出與新建桶;只想用既有的桶,就把這一段刪掉。

騰訊雲有現成的預設策略

不想自己寫策略,也可以直接掛這三條騰訊雲已經做好的策略,效果差不多:

  • QcloudCOSGetServiceAccess —— 列出帳號裡的桶。
  • QcloudCOSBucketConfigRead / QcloudCOSBucketConfigWrite —— 讀、寫桶的設定,其中 Write 也帶建桶。
  • 它們的名字不像動作名,所以在策略列表裡按 GetService、PutBucket 搜是搜不到的;直接按上面這三個名字找。

使用者實測的結論

把 cos:GetService / cos:PutBucket / cos:DeleteBucket 寫進按桶限定的那一段裡也能用,不必放在資源為 * 的第一段。

cos:DeleteBucket 只對被限定的那個桶有效:換成帳號裡別的桶仍然會被拒。就算這樣,孤雲也不需要刪桶權限。

主控台的「存取網域」不是孤雲要的端點

建好桶後,「概觀」裡會顯示一個存取網域,形如 https://my-photos-1234567890.cos.ap-guangzhou.myqcloud.com —— 它把桶名寫進了主機名,是給瀏覽器用的位址。

孤雲要的是服務端點,形如 https://cos.ap-guangzhou.myqcloud.com,不帶桶名;桶名單獨填在桶名那一格。

把存取網域整段填進端點,孤雲就會去存取一個不存在的位址,測試連線並儲存會直接失敗。

抄下這四個值

這四個值要填進孤雲「新增儲存」頁的對應格子裡(騰訊雲 COS 比別家多一個 APPID 格):

抄下這個值填進孤雲的哪一格
桶名
主控台裡的完整桶名,含末尾的 -APPID 後綴,例如 my-photos-1234567890。
桶名稱
APPID
桶名末尾那串數字,例如 1234567890。在主控台「帳號資訊」裡,或任何既有桶的名字末尾。
APPID
地域
桶所在的地域代碼,例如 ap-guangzhou。
地域
端點
服務端點,形如 https://cos.ap-guangzhou.myqcloud.com(把 ap-guangzhou 換成你的地域);不帶桶名。
Endpoint
金鑰
剛才那個子帳號的 SecretId 與 SecretKey(不是主帳號的)。
SecretId 與 SecretKey

怎麼知道成了

  • 「測試連線並儲存」通過,說明那對金鑰能讀到這個桶 —— 孤雲只讀根目錄,不會動桶裡的東西。
  • 隨後這條儲存就會出現在孤雲的儲存列表裡,可以打開看桶裡的檔案。
  • 如果測試報 AccessDenied,多半是桶名沒連 APPID 後綴一起複製,或者金鑰沒有這個桶的權限;報網域相關的錯誤,多半是把「存取網域」當成了端點。

回到孤雲,點「測試連線並儲存」。

常見錯誤

騰訊雲 COS 最常見的幾種失敗,以及先查哪一處。

現象 / 錯誤碼含義怎麼辦
403 AccessDenied(桶名對不上)桶名不完整:只複製了前綴,沒連末尾的 -APPID 後綴一起複製,孤雲去找的桶並不存在(或不屬於你)。回主控台把完整桶名複製過來,例如 my-photos-1234567890;或者把 APPID 填進孤雲的「APPID」格,讓孤雲替你補後綴。
403 AccessDenied(金鑰沒權限)桶名是對的,但這對金鑰沒有被授權這個桶 —— 策略沒做、沒關聯到子帳號,或策略裡的桶名還是範例值。回 CAM 檢查:這條策略關聯給那個子帳號了嗎?策略資源路徑裡的桶名和 APPID 換成你自己的了嗎?
SignatureDoesNotMatch簽章對不上:SecretKey 複製錯了(混進了空格或少了字元),或者桶名 / 地域 / 端點有一處和實際不一致。重新複製一遍 SecretKey;再逐格核對桶名、地域與端點。
InvalidAccessKeyId這個 SecretId 不存在,通常是複製錯了,或者這已經是一把被刪除、被停用、被輪換掉的舊金鑰。回到 CAM 給那個子帳號重新產生一對金鑰,兩個值一起換。
SecretKey 只顯示了一次,沒存下來SecretKey 只在建立時顯示一次,關掉頁面就再也看不到。不用找回來:在 CAM 裡給這個子帳號重新產生一對金鑰,然後在孤雲裡把兩個值都換掉。
連線失敗、報網域或網路錯誤把主控台給的存取網域當成了端點 —— 那個位址裡已經帶著桶名(https://my-photos-1234567890.cos.ap-guangzhou.myqcloud.com)。端點改成服務端點 https://cos.ap-guangzhou.myqcloud.com,桶名單獨填在桶名那一格。
測試連線並儲存通過,上傳卻失敗連線測試只讀根目錄,讀得通不代表寫得進。回 CAM 確認策略的桶級那一段動作涵蓋寫入(上面這段 cos:* 就是全涵蓋);再傳一個小檔案試試。

改完設定記得回到孤雲重新點一次「測試連線並儲存」,測試通過才會儲存下來。