騰訊雲 COS
大約 10 分鐘,不需要花錢,就能在騰訊雲 COS 上給孤雲準備好一個桶和一對只授權這個桶的金鑰。
本文是孤雲的官方引導。有一個雲端帳號即可,不必先看懂騰訊雲的權限體系,跟著走完就行。本文依繁體介面用詞;控制台若顯示簡體,按鈕名稱請按同義對照。
要準備什麼
- 一個騰訊雲帳號(個人也可以);用主帳號登入主控台完成下面所有操作。
- 桶要放在哪個地域,例如
ap-guangzhou(廣州);地域後面還要填進孤雲,兩處必須一致。 - 一個想好的桶名;它末尾會自動帶上你帳號的 APPID 後綴。
- 不需要先開通別的服務、不需要網域、也不需要備案。
費用按實際用量計算:物件儲存本身不收開通費,桶空著幾乎不產生費用,之後按儲存量、請求次數和外網流量計費。如果已經有桶和一對金鑰,可以跳過前三步,直接看「抄下這四個值」。
分步操作
-
第 1 步
建儲存桶
- 打開騰訊雲主控台,進入物件儲存 COS,在左側選「儲存桶列表」,點「建立儲存桶」。
- 名稱隨便起一個(小寫字母、數字和短橫線),地域選你要用的那個 —— 例如
ap-guangzhou;地域要和後面填進孤雲的一致。 - 存取權限選「私有讀寫」,其餘選項保持預設,點「建立」。
- 桶名末尾會自動帶上你的 APPID,形如
my-photos-1234567890。複製完整桶名(連後綴一起)—— 只複製前綴是孤雲連不上桶最常見的原因。 - APPID 是一串數字(範例裡是
1234567890),在騰訊雲主控台的「帳號資訊」裡看得到,也可以看任何既有桶的名字末尾。 - 孤雲是唯一需要多填一格的服務商:把 APPID 填進它自己的「APPID」格,桶名那格只填前綴也行 —— 孤雲會替你補成
你填的名字-1234567890;如果貼進來的桶名已經帶了這個後綴,就不會再追加一次。
-
第 2 步
建子帳號與金鑰
- 用主帳號進入存取管理 CAM →「使用者」→「使用者列表」,點「新建使用者」。
- 存取方式只勾「程式化存取」,不要勾主控台登入:孤雲只需要一對金鑰。
- 建立完成後複製這個子帳號的 SecretId 與 SecretKey。SecretKey 只顯示一次,離開頁面就看不到了 —— 現在就把兩個值存好。
- 不要用主帳號金鑰:它的權限涵蓋整個帳號,而孤雲只需要一個桶。
-
第 3 步
給這個子帳號掛權限
- 先弄清一件事:CAM 裡的
GetService、PutBucket是操作(action),不是策略名稱 —— 所以在「策略」列表裡搜這兩個詞是搜不到的。要用它們,只能走自訂策略。 - 做權限用主帳號:CAM →「策略」→「新建自訂策略」→ 選「按策略語法建立」→ 範本選空白範本。
- 把下面這段 JSON 貼進「策略內容」,替換裡面的桶名與 APPID(
your-bucket-name-1234567890、1234567890、以及地域ap-guangzhou都是虛構的範例值)。 - 這段策略一次給到兩層的權限:第一段是帳號級的,允許列出你帳號裡的桶、並新建桶(桶還不存在時沒辦法把它寫進資源路徑,所以資源是
*);第二段是桶級的,限定在你那一個桶裡,cos:*表示桶內的事都放給它。 - 這段策略故意不含刪桶權限 —— 孤雲不需要刪桶,只建桶、往桶裡放東西。
- 只想用既有的桶、不想讓應用建桶,就把第一段整個刪掉,只留桶級那一段。
- 儲存後回到使用者頁面,把這條策略關聯給它(CAM →「使用者」→ 該使用者 →「關聯策略」)。
- 先弄清一件事:CAM 裡的
-
第 4 步
在孤雲裡填好,點「測試連線並儲存」
- 回到孤雲,打開「新增儲存」,服務商選「騰訊雲 COS」,地域選你在主控台選的同一個地域。
- 按下面的順序把值填進對應格子:APPID、桶名、地域、端點、金鑰(SecretId 與 SecretKey)。
- 點「測試連線並儲存」。它只讀取桶的根目錄,不上傳、不刪除任何東西。
子帳號要的權限:一段 CAM 自訂策略
把 your-bucket-name、1234567890 和地域換成你自己的桶名、APPID 與地域。這段策略故意不含刪桶權限。
{
"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:* 就是全涵蓋);再傳一個小檔案試試。 |
改完設定記得回到孤雲重新點一次「測試連線並儲存」,測試通過才會儲存下來。