---
title: Object Storage (S3, Ceph RGW)
description: 在您的Ceph叢集上銷售按量付費的S3儲存空間：RGW需求、管理員使用者與權限，以及如何在NexCMP中將後端附加至區域。
url: https://nexcmp.com/zh-tw/docs/infrastructure/s3/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# Object Storage (S3, Ceph RGW) {#object-storage-s3-ceph-rgw}

> **後端管理位置：** Infrastructure › Cloud provider › Ceph S3 (RGW) (`/infra/s3`)。帳戶：Services › Object Storage › S3 accounts (`/s3`)。計價：Services › Object Storage › PAYG pricing (`/s3/policy`)。請在 System › Admin › License & updates 下啟用模組。

## 功能 {#what-it-does}

客戶可從使用者入口網站建立S3帳戶並取得存取金鑰。NexCMP會透過RGW Admin Ops API在**您的Ceph RADOS Gateway (RGW)**上建立與刪除對應的使用者、讀取用量以供計費，並進行按量付費計費：超過每GB每月免費額度的儲存空間（按小時計費）以及每GB的下載流量。上傳則免費。

當您執行帶有RGW的Ceph叢集並想要重新銷售物件儲存時使用它。

## 需求 {#requirements}

| 項目 | 需求 |
|---|---|
| Ceph | 具備至少一個RGW精靈且已啟用**Admin Ops API**的叢集（預設`rgw_enable_apis`包含`admin`）。 |
| Admin user | 為NexCMP建立的RGW使用者，需具備下方列出的權限。請勿使用擁有客戶資料的使用者。 |
| Endpoints | 客戶使用的S3端點以及Admin Ops端點。兩者皆寫為`https://host`且**無路徑、僅限連接埠443**，並必須解析為**公開**位址：迴路、鏈結本地、多點廣播、私有及唯一本地位址將被拒絕。 |
| Certificate | 端點主機的有效憑證。 |
| Usage log | 已開啟RGW用量記錄（`rgw_enable_usage_log = true`），以便用量API可以回報流量。 |
| 區域 | 勾選了**Object Storage (S3)**服務的主區域。請參閱[Zones](https://nexcmp.com/zh-tw/docs/infrastructure/zones/)。 |
| 儲存 | Ceph中用於您所銷售配額的容量。 |
| 相依於 | 模組**Object Storage**。下載流量也會計入[Bandwidth](https://nexcmp.com/zh-tw/docs/catalog/bandwidth/)。 |

## 準備基礎設施 {#prepare-the-infrastructure}

在Ceph管理節點上：

1. 建立管理員使用者並賦予其所需的Admin Ops權限：

   ```bash
   radosgw-admin user create --uid=nexcmp-admin --display-name="NexCMP admin"
   radosgw-admin caps add --uid=nexcmp-admin --caps="users=*;buckets=*;usage=read;metadata=read"
   radosgw-admin user info --uid=nexcmp-admin
   ```

   從輸出複製`access_key`和`secret_key`。它們在NexCMP中分別是**Admin access key**與**Admin secret key**。

2. 開啟用量記錄並重新啟動閘道：

   ```bash
   ceph config set client.rgw rgw_enable_usage_log true
   ```

3. 將閘道放置於連接埠443的HTTPS後方（反向代理或RGW自己的TLS）、發布DNS名稱，並從面板伺服器進行測試：

   ```bash
   curl -fsS -o /dev/null -w '%{http_code}\n' https://s3.example.com/
   ```

   您應該會得到S3 XML回應（HTTP 200或403），而不是逾時。


## 在 NexCMP 中連線 {#connect-in-nexcmp}

1. **賦予區域S3服務。** 開啟**Infrastructure › Datacenter › Zone**，編輯區域並勾選**Object Storage (S3)**。只有具備S3服務的主區域才會顯示在後端表單中。


2. 開啟**Infrastructure › Cloud provider › Ceph S3 (RGW)**並點擊**Add backend**：

   | 欄位 | 範例值 |
   |---|---|
   | Backend name | `Ceph RGW 1` |
   | 區域 | 來自步驟1的區域 |
   | RGW Admin Ops endpoint | `https://s3.example.com` |
   | 客戶端S3端點 | `https://s3.example.com` |
   | S3簽名區域 | `default` |
   | 管理員存取金鑰 | `XXXX` |
   | 管理員祕密金鑰 | `XXXX` |
   | 啟用 | on |
   | 啟用銷售（需先進行連線測試） | **off**（目前） |
   | 變更原因 | `initial setup` |

      ![後端S3對話框，包含範例端點、區域與遮罩金鑰](https://nexcmp.com/zh-tw/docs/images/infrastructure/s3-02-backend-dialog.webp)

3. 點擊**OK**（儲存），然後點擊該列中的**Check**。NexCMP會使用管理員金鑰呼叫Admin Ops API。出現**Ceph connection successful**與**Verified**標籤表示運作正常。


4. 點擊**Edit**，將**Enable sales**切換為開啟並儲存。在檢查成功之前，NexCMP將拒絕開放銷售。
5. 開啟**Services › Object Storage › PAYG pricing**並設定定價：

   | 欄位 | 含意 |
   |---|---|
   | 超過免費額度之儲存空間（VND/GB/月） | 儲存空間價格；按小時計費，計算方式為月價格除以730。 |
   | 下載（VND/GB） | 外寄流量價格。 |
   | 上傳（VND/GB） | 固定為0。 |
   | 執行中虛擬機器之免費額度（GB） | 當客戶擁有至少一台執行中的虛擬機器時，每個帳號固定為100 GB，依容量在其S3帳號之間共用。 |
   | 欠費額度上限（VND） | 允許的未付使用費金額。 |
   | 計費門檻（VND） | 使用量達到此金額後將合併為一張帳單。 |
   | 建立S3所需的最低餘額（VND） | 建立帳號所需的錢包餘額。 |
   | 每個客戶的S3帳號上限，預設技術配額（GB） | 新帳號的限制。 |

      ![S3 PAYG定價表單](https://nexcmp.com/zh-tw/docs/images/infrastructure/s3-04-pricing.webp)

   S3價格以VND輸入。顯示與錢包扣款時會依當時的匯率進行換算；請參閱[Currency and exchange rates](https://nexcmp.com/zh-tw/docs/catalog/currency-and-exchange-rates/)。

## 驗證 {#verify}

1. **Check**顯示「Ceph connection successful」。
2. 以客戶身分（或使用測試帳號）建立S3帳號。在Ceph上，`radosgw-admin user list`會顯示新使用者，且**S3 accounts**會列出該帳號。
3. 使用任何S3客戶端，以客戶的金鑰對應客戶端點建立值區（bucket）。上傳檔案。
4. 在下一個小時的計費時間點後，**S3 accounts**會顯示使用量。

## 限制與注意事項 {#limits-and-notes}

- 已附加帳號的後端會保留其**區域、端點與區域設定**；若要變更，請建立新的後端。
- 單一區域可擁有專屬後端；帳號與後端一律永久繫結至特定區域。
- 免費額度與「上傳免費」為固定規則，而非選項。
- 金鑰經過加密儲存；控制台僅顯示「留空以保留目前金鑰」欄位。金鑰對一律必須同時輸入。
- 客戶的祕密金鑰僅在建立時顯示一次，之後不再顯示。若金鑰遺失，需透過輪替（rotating）來取代。

## 故障排除 {#troubleshooting}

| 症狀 | 原因 | 修正方式 |
|---|---|---|
| "Endpoint requires HTTPS" | 端點使用明文HTTP | 在連接埠443上發布HTTPS。 |
| "端點連接埠不允許" | 非443的連接埠 | 請使用標準HTTPS連接埠。 |
| 「端點位址不允許」 | 名稱解析為私有、迴圈、連結本地或獨特本地位址 | 請使用公開位址。 |
| 「端點僅能包含通訊協定與主機」 | URL 包含路徑、查詢或使用者資訊 | 僅使用 `https://host`。 |
| 「無法解析端點」 | 面板伺服器無法進行 DNS 解析 | 修正 DNS。 |
| "Failed to connect to Ceph" | 防火牆或 TLS 錯誤 | 從面板伺服器以 `curl` 進行測試。 |
| "Ceph returned HTTP 403 AccessDenied" | 金鑰錯誤或缺少權能 | 檢查金鑰並重新執行 `radosgw-admin caps add`。 |
| "Invalid Ceph response" | 端點不是 RGW Admin Ops API | 請將其指向 RGW，而非網頁。 |
| 「啟用銷售前必須先通過連線測試」 | 您在成功執行 **Check** 之前就開啟了銷售 | 執行 **Check**，然後啟用銷售。 |
| 「端點的所有新金鑰皆為必填」 | 變更端點卻未提供兩把金鑰 | 請同時輸入存取金鑰與密鑰。 |
| 「後端已有附加資源；請建立新後端以變更區域或端點」 | 此後端上存在帳號 | 建立新的後端。 |
| 「選取具有 S3 服務的主區域」 | 該區域不是主區域或未包含 S3 服務 | 勾選該區域上的 **Object Storage (S3)**。 |
| "Invalid region" | 區域包含字母、數字、`-` 與 `_` 以外的字元 | 請使用 `default` 或您的 RGW 區域群組名稱。 |
| 「缺少 Ceph 使用量摘要；未計費」 | 用量記錄已停用 | 啟用 `rgw_enable_usage_log`。 |
