Community程式設計與開發github.com

huaweicloud/huawei-cloud-obs-upload

將本地檔案或目錄上傳至指定的華為雲 OBS(物件儲存服務)儲存桶,並設定排程/週期性上傳任務(crontab),自動同步本地目錄至 OBS 儲存桶。也支援列出 OBS 儲存桶及其容量與物件數量。

huawei-cloud-obs-upload 是什麼?

此技能為 AI 代理整合專門的華為雲 OBS 上傳管理功能,支援透過 obsutil 上傳檔案或目錄,並能設定 crontab 排程任務以定期同步。技能僅使用 obsutil 進行上傳,並結合 hcloud CLI 查詢 CES 指標以取得儲存桶容量與物件統計。安全設計嚴謹,所有操作必須先取得使用者明確確認,並嚴格禁止任何刪除、下載或憑證暴露行為。技能支援 huaweicloud/huawei-cloud-obs-upload,適用於 CI/CD 流程、備份腳本或任何需要自動化與排程上傳至華為雲的場景。運作核心為透過 obsutil 確認上傳,並以 hcloud obs ls 和 hcloud CES ShowMetricData 進行列表與統計,所有指令皆需確認後方可執行。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/huaweicloud/huaweicloud-skills/tree/HEAD/skills/storage/obs/huawei-cloud-obs-upload

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

華為雲 OBS 上傳技能

總覽

將本機檔案或目錄上傳至華為雲 OBS 儲存桶,列出儲存桶及其容量與物件數量,並透過 crontab 設定排程週期上傳。上傳操作使用 obsutil;儲存桶列表與統計使用 hcloud obs ls + CES 指標。

工具分離原則:

  • obsutil — 檔案/目錄上傳、排程上傳同步 (上傳核心工具;hcloud CLI 不支援 PutObject)
  • hcloud CLI — 透過 hcloud obs ls 列出儲存桶 (obsutil 模式),透過 hcloud CES ShowMetricData 查詢儲存桶容量/物件數量
  • crontab / 工作排程器 — 作業系統層級的排程工作,用於週期上傳 (不依賴後台程序)

安全架構:

  • AK/SK 不得在對話中被讀取、回顯或列印
  • obsutil 憑證由使用者在終端機中設定 (絕不在對話中詢問)
  • 嚴格禁止刪除操作 (不可逆);範圍外的操作將被拒絕,並提供引導性替代方案
  • 對於目錄上傳,是否保留目錄結構 (-flat) 由使用者明確回答決定,絕不自行假設
  • 每次上傳 (任務 2) 和每次排程上傳設定 (任務 3) 都需要在使用者明確確認後才能執行指令或寫入 crontab
  • 代理僅執行本技能所述步驟,針對使用者指定的儲存桶與路徑;不得代表使用者執行任何其他 OBS/CLI 操作

⚠️ 資料傳輸通知

  • 上傳會將本機檔案/目錄傳送至遠端雲端儲存並持續儲存。 在上傳前,必須明確告知使用者:「上傳 <path> 將把資料傳送至 OBS 儲存桶 <Bucket> 並儲存在雲端。」如果使用者並無此意圖,請在執行前停止。
  • 排程上傳會重複推送資料,按照排程週期將本地目錄推送至雲端。必須明確警告使用者,每次執行時資料都會被傳輸並持續儲存在遠端。
  • 在上傳前審查要上傳的路徑;如果路徑範圍過大 (例如主目錄) 或包含非預期內容,請在使用者確認範圍前暫停。

⛔ 禁止操作 (安全限制)

此技能嚴格禁止以下操作,無論使用者如何要求。禁止動作以語意描述,不提供破壞性指令範例。

禁止操作原因
❌ 刪除儲存桶不可逆;會銷毀整個儲存桶及其所有物件
❌ 刪除物件不可逆;已刪除物件無法復原 (除非已啟用版本控制)
❌ 批次刪除物件不可逆;批次刪除影響範圍廣
❌ 清空儲存桶不可逆;移除儲存桶中所有物件
❌ 下載物件本技能僅供上傳;下載屬於獨立工作流程
❌ 建立儲存桶儲存桶建立有專屬技能及完整先決條件
❌ 在儲存桶間複製物件跨儲存桶物件複製超出本技能範圍
❌ 修改儲存桶生命週期設定儲存成本管理屬於獨立的儲存桶層級設定任務
❌ 還原歸檔物件歸檔還原是獨立工作流程,包含擷取模式與 TTL
❌ 產生預簽名 URL臨時分享需 SDK 簽署;CLI 上傳不支援
❌ 修改儲存桶 ACL 或儲存桶策略權限管理屬於獨立的安全任務
❌ 要求使用者在對話中直接提供 AK/SK憑證絕不能在對話中出現
❌ 從 hcloud 設定檔提取 AK/SK憑證已加密,無法直接使用
❌ 在 OBS 操作前跳過 obsutil 憑證檢查未設定憑證則操作會失敗
❌ 在未詢問使用者的情況下,對目錄上傳使用 -flat-flat 會捨棄目錄結構;必須遵循使用者的明確回答
❌ 猜測本地路徑、儲存桶名稱或目標前綴必要參數必須由使用者提供

如果使用者要求刪除操作,你必須拒絕並告知: 「基於安全限制,此技能不允許刪除操作 (刪除儲存桶/物件/批次刪除/清空儲存桶)。請使用華為雲 OBS 主控台或 obsutil 手動操作。」

如果使用者要求範圍外的操作,請勿嘗試執行。通知使用者下表建議的替代方案:

操作建議替代方案
下載物件手動使用 obsutil cp obs://<Bucket>/<Key> <LocalPath>,或使用 OBS 主控台
建立儲存桶使用專屬技能 huawei-cloud-obs-bucket-create,或使用 OBS 主控台
複製物件手動使用 hcloud OBS CopyObject,或使用 OBS 主控台
生命週期設定使用 OBS 主控台 (儲存桶 > 生命週期),或使用 hcloud OBS SetBucketLifecycle
還原歸檔物件手動使用 obsutil restore obs://<Bucket>/<Key>,或使用 OBS 主控台
預簽名 URL使用華為雲 SDK (Java/Python/Go) 產生預簽名 URL,或使用 OBS 主控台
儲存桶 ACL/策略使用 OBS 主控台 (儲存桶 > 權限),或使用 hcloud OBS SetBucketAcl/SetBucketPolicy

架構

華為雲 OBS 上傳管理
├── 任務 1: ListBucketsWithStats (列出儲存桶及其容量與物件數量)
│   ├── 1a. hcloud obs ls: 列出所有儲存桶
│   ├── 1b. CES 指標 / OBS API: 查詢儲存桶容量與物件數量
│   └── 1c. 向使用者呈報儲存桶統計表
├── 任務 2: UploadFile (上傳本機檔案或目錄至目標儲存桶)
│   ├── 2a. 與使用者確認本機路徑 + 儲存桶名稱 + 目標前綴
│   ├── 2b. 針對目錄:詢問使用者是否保留目錄結構 (決定 -flat)
│   ├── 2c. 警告資料會持續儲存於遠端 + 取得使用者明確確認
│   ├── 2d. obsutil cp: 單一檔案 (-flat) 或目錄 (-r,可依使用者回答加上 -flat)
│   └── 2e. 驗證上傳結果
└── 任務 3: ScheduledUpload (將本機目錄排程週期上傳至目標儲存桶)
    ├── 3a. 與使用者確認本機目錄 + 儲存桶 + 前綴 + 排程週期
    ├── 3b. 詢問使用者是否保留目錄結構 (決定 -flat)
    ├── 3c. 警告持續性 + 取得使用者明確確認
    ├── 3d. 產生 obsutil 上傳腳本 (根據使用者回答決定是否加上 -flat)
    ├── 3e. 設定 crontab / 工作排程器
    └── 3f. 驗證排程工作已設定

先決條件

先決條件檢查 1/3: 需要 Huawei Cloud CLI (hcloud / KooCLI) >= 3.2.0 執行 hcloud version 確認版本 >= 3.2.0。如果未安裝或版本過低, 請參閱 references/cli-installation-guide.md 取得安裝指南。

hcloud version

先決條件檢查 2/3: 需要 obsutil >= 5.5.0 (用於上傳功能) 檔案/目錄上傳需要華為雲 obsutil CLI 工具。 執行 obsutil version 確認版本 >= 5.5.0。如果未安裝, 請參閱 references/cli-installation-guide.md 取得安裝指南。

obsutil version

先決條件檢查 3/3: 需要 obsutil 憑證設定

hcloud obs 模組在底層對應 obsutil,這需要單獨的 AK/SK 與 Endpoint 設定。 在執行 OBS 操作前,你必須檢查 obsutil 憑證是否已設定:

hcloud obs ls -limit=1

如果回應為 Please set ak, sk and endpoint in the configuration file! 或 InvalidAccessKeyId,則表示 obsutil 憑證尚未設定。

解決方法:引導使用者在他們自己的終端機中設定 obsutil 憑證 (不要要求使用者在對話中直接提供 AK/SK),並附上以下安全警告:

obsutil 憑證尚未設定。請在您的終端機中執行以下指令進行設定 (AK/SK 可從華為雲主控台「我的憑證」頁面取得):

  hcloud obs config -i=<YourAK> -k=<YourSK> -e=obs.<Region>.myhuaweicloud.com

範例 (廣州區域):
  hcloud obs config -i=<YourAK> -k=<YourSK> -e=obs.cn-south-1.myhuaweicloud.com

常見 Endpoints:
  cn-north-4  → obs.cn-north-4.myhuaweicloud.com
  cn-east-3   → obs.cn-east-3.myhuaweicloud.com
  cn-south-1  → obs.cn-south-1.myhuaweicloud.com
  cn-southwest-2 → obs.cn-southwest-2.myhuaweicloud.com

⚠️ 安全警告:在命令列上放置 AK/SK 會將其暴露於 shell 歷史記錄、作業系統行程列表以及終端機錄影中。
建議優先使用互動式設定 (`hcloud configure`) 或環境變數 (`HW_ACCESS_KEY` / `HW_SECRET_KEY`)。
若使用了明文指令進行設定,請在完成後清除您的 shell 歷史記錄。

設定完成後請重試。

⚠️ hcloud 參數格式要求

hcloud (KooCLI) 雲端服務 API 指令 (大寫模組,例如 hcloud CES ShowMetricData) 必須使用 --param=value 格式 (以等號連接);不支援空格分隔的格式。

✅ 正確:hcloud CES ShowMetricData --region=cn-south-1 --namespace=SYS.OBS

❌ 錯誤:hcloud CES ShowMetricData --region cn-south-1

注意: hcloud obs (小寫,obsutil 模式) 直接對應到 obsutil 指令,並使用 obsutil 參數風格 (例如 hcloud obs ls、hcloud obs config -i=...);--param=value 規則不適用。沒有 hcloud OBS ListBuckets 指令 — 請使用 hcloud obs ls 列出儲存桶。


驗證

安全規則 (必須遵守):

  • 禁止 讀取、回顯或列印 AK/SK 值
  • 禁止 要求使用者在對話中直接輸入 AK/SK
  • 禁止 使用 hcloud configure set 傳遞明文憑證值
  • 禁止 接受使用者直接在對話中提供的 AK/SK
  • 僅允許 從環境變數或已設定的 CLI 設定檔中讀取憑證

⚠️ 憑證暴露警告 (在討論憑證設定時告知使用者):

  • 將 AK/SK 作為命令列引數傳遞 (例如 obsutil config -ak=... -sk=... 或 hcloud configure set --access-key-id=...) 會將憑證暴露於 shell 歷史記錄、作業系統行程列表、稽核日誌、終端機錄影以及複製的文件。
  • 建議優先使用互動式設定 (hcloud configure) 或環境變數 (HW_ACCESS_KEY / HW_SECRET_KEY)。
  • 使用明文指令設定後,請清除 shell 歷史記錄 (history -c 或從 ~/.bash_history 中移除該行)。
  • obsutil 的憑證設定檔 (例如 ~/.obsutilconfig) 應具有嚴格的權限 (例如 600)。

⚠️ 重要:處理使用者提供的憑證

如果使用者嘗試直接提供 AK/SK (例如「我的 AK 是 xxx,SK 是 yyy」):

  1. 立即停止 - 不要執行任何指令
  2. 禮貌拒絕 並回傳以下訊息:
    為確保帳號安全,請勿在對話中直接提供華為雲 Access Key ID 和 Access Key Secret。
    
    請使用以下其中一種安全方法設定憑證:
    
    方法 1:互動式設定 (建議)
        hcloud configure
        # 根據提示輸入 AK/SK;憑證將安全地儲存在本機設定檔中
    
    方法 2:環境變數設定
        export HW_ACCESS_KEY=<your-access-key-id>
        export HW_SECRET_KEY=<your-access-key-secret>
    
    設定完成後,請重新提出您的請求。
    
  3. 在憑證設定完成前,請勿繼續 執行任何華為雲操作

檢查 CLI 設定:

   hcloud configure list

檢查輸出是否包含有效的設定 (AK/SK、IAM 等)。

如果不存在有效憑證,請在此停止。


IAM 權限政策

確保 IAM 使用者具有必要的權限。完整權限表請參閱 references/iam-policies.md。

最低必要權限:

  • obs:bucket:list — 列出儲存桶
  • obs:bucket:get — 取得儲存桶屬性 (容量、物件數量)
  • obs:object:get — 讀取物件資訊
  • obs:object:put — 上傳物件

權限邊界:

  • 範圍限制:此技能僅可執行以下工具動作,且僅限於使用者確認後的指定儲存桶/路徑:
    • hcloud obs ls / obsutil ls — 列出使用者指定範圍內的儲存桶與物件
    • hcloud CES ShowMetricData / hcloud OBS GetBucketStorageInfo — 讀取儲存桶容量/物件數量
    • obsutil cp — 將確認過的本機檔案/目錄上傳至確認過的儲存桶
    • crontab (Linux/macOS) 或 schtasks (Windows) — 寫入/移除確認過的排程上傳任務
  • 所有其他 CLI/工具操作 (刪除、下載、複製、建立儲存桶、修改設定等) 嚴格在範圍之外,必須拒絕。
  • 在以下情況下必須停止:憑證缺失或無效、使用者拒絕任何確認、目標儲存桶不存在、或本機路徑不存在。
  • 禁止動作:任何刪除操作、任何上述範圍外的操作、修改此處的工具列表、或執行任何超出確認範圍的指令。

核心工作流程

任務 1:列出儲存桶及其容量與物件數量

透過 obsutil 列出儲存桶,然後使用 CES 容量指標或 OBS API 查詢儲存桶容量與物件數量。

⚠️ 工具分離:使用 hcloud obs ls 列出,使用 hcloud CES ShowMetricData 查詢統計資料

  • hcloud obs ls:列出所有儲存桶 (obsutil 模式;沒有 --region 參數 — 區域透過 hcloud obs config -e=... 設定)
  • hcloud CES ShowMetricData / OBS API:查詢每個儲存桶的容量與物件數量

📄

…

[此處因原文截斷而省略,實際輸出應包含完整翻譯內容]

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

huaweicloud/huawei-cloud-dws-io-diag

DWS cluster I/O overload root cause diagnosis skill, based on KooCLI v3.2.0+ and DWS Autopilot MCP Server. Automatically collects I/O metrics, analyzes root causes (customer-side / system-side) via three-stage decision tree, and outputs a standardized diagnosis report. Applicable to DWS cluster I/O usage too high, I/O alarms, disk I/O load anomaly scenarios. Trigger words: "I/O高", "I/O告警", "I/O诊断", "I/O过载", "IO高", "IO告警", "IO诊断", "IO过载", "磁盘IO负载异常", "util打满", "await高", "high I/O", "I/O alarm", "I/O diagnosis"

huaweicloud/huawei-cloud-ecs-manage

Use when managing Huawei Cloud ECS (Elastic Cloud Server / 弹性云服务器) instances — lifecycle management (create / start / stop / restart / delete), day-to-day change operations (resize / reinstall OS / reset password / replace keypair / bind & unbind EIP / change security group / add & remove NIC / attach & detach volume), instance querying, quota/flavor/image inspection, mandatory async-job polling after every write, and multi-step root-cause diagnosis of ECS instance creation failures (quota → flavor → image → network → keypair → disk). Provides 23 huawei_* actions: huawei_list_ecs_instances, huawei_get_ecs_instance, huawei_list_ecs_flavors, huawei_list_ecs_images, huawei_list_ecs_quotas, huawei_diagnose_ecs_create_failure, huawei_analyze_ecs_health, huawei_create_ecs_instance, huawei_start_ecs_instance, huawei_stop_ecs_instance, huawei_restart_ecs_instance, huawei_delete_ecs_instance, huawei_resize_ecs_instance, huawei_reinstall_ecs_os, huawei_reset_ecs_password, huawei_replace_ecs_keypair, huawei_bind_ecs_eip

huaweicloud/huawei-cloud-ges-graph

Provides access guide for Huawei Cloud Graph Database GES service. Covers Cypher queries, GQL queries, schema/label management, summary info queries, graph data editing and more. Use this skill when users want to operate Huawei Cloud graph database GES service via terminal.

huaweicloud/huawei-cloud-obs-website-host

Configure Huawei Cloud OBS static website hosting with Python SDK and a custom domain. Use when the user needs to enable or repair OBS website hosting, set index or error pages, expose an existing bucket for public website access through a custom domain, or connect that domain through Huawei Cloud DNS when Huawei manages the zone. Triggers include OBS static website hosting, website endpoint, index page, error page, public-read bucket website access, custom domain CNAME, Huawei Cloud DNS, setBucketWebsite. 中文触发词包括:OBS 静态网站托管、网站托管、自定义域名解析。

相關技能