Communityコーディング&開発github.com

huaweicloud/huawei-cloud-obs-upload

ローカルファイルまたはディレクトリを指定したHuawei Cloud OBS(オブジェクトストレージサービス)バケットにアップロードし、定期的なアップロードタスク(crontab)を設定・管理します。また、OBSバケットの一覧とストレージ容量・オブジェクト数を表示します。

huawei-cloud-obs-upload とは?

このスキルは、Huawei Cloud OBS(Object Storage Service)に対するファイル/ディレクトリアップロード、バケット一覧表示、および定期的な同期アップロードの設定をエージェントに提供します。アップロード操作にはobsutil CLIツールを、バケット一覧と容量/オブジェクト数取得にはhcloud CLI(hcloud obs ls、CES ShowMetricData)を利用するという明確なツール分離の原則に基づいています。セキュリティ面では、AK/SKの会話内での入力を禁止し、削除操作や範囲外の操作を厳格に拒否します。各アップロードおよびスケジュール設定の前にユーザーの明示的な確認を必須とし、ディレクトリアップロード時の構造保持(-flatオプション)もユーザーの意思決定に委ねます。

対応~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に質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Huawei Cloud OBS アップロードスキル

概要

ローカルファイルまたはディレクトリをHuawei Cloud OBSバケットにアップロードし、容量とオブジェクト数を含むバケット一覧を表示し、crontabを介した定期的なアップロードをスケジュールします。アップロード操作にはobsutilを使用し、バケット一覧/統計情報にはhcloud obs ls + CES メトリクスを使用します。

ツール分離の原則:

  • obsutil — ファイル/ディレクトリアップロード、スケジュールされたアップロード同期(アップロードの中核ツール; hcloud CLIにはPutObjectのサポートがありません)
  • hcloud CLI — hcloud obs lsによるバケット一覧(obsutilモード)、hcloud CES ShowMetricDataによるバケット容量/オブジェクト数の統計
  • crontab / タスクスケジューラ — 定期的なアップロードのためのOSレベルのスケジュールタスク(デーモンプロセス依存なし)

セキュリティアーキテクチャ:

  • AK/SKは会話内で読み取り、エコー、印刷されることは決してありません
  • obsutilの認証情報はユーザーが自身のターミナルで設定します(会話内で尋ねることはありません)
  • 削除操作は固く禁止されています(元に戻せません); 範囲外の操作は拒否され、代替案が案内されます
  • ディレクトリアップロード時に、ディレクトリ構造を保持するかどうか(-flat)は顧客の明示的な回答に基づいて決定され、決して推測されません
  • すべてのアップロード(タスク2)およびすべてのスケジュールアップロード設定(タスク3)には、コマンドまたはcrontabの書き込みの前にユーザーの明示的な確認が必要です
  • エージェントは、ユーザーが指定した正確なバケットとパスに対して、このスキルに記述されたステップのみを実行します。ユーザーに代わって他のOBS/CLIアクションを実行することは決してありません

⚠️ データ送信に関する通知

  • アップロードは、ローカルファイル/ディレクトリをリモートクラウドストレージに転送し、そこに永続化します。 アップロード前に、ユーザーに明確に伝えてください:"<パス> をアップロードすると、データはOBSバケット <Bucket> に送信され、クラウドに保存されます。" ユーザーがこれを意図していなかった場合は、実行を停止してください。
  • スケジュールアップロードは、ローカルディレクトリからクラウドへ定期的にデータを繰り返しプッシュします。 ユーザーに対して、各実行でデータがリモートに送信され永続化されることを明示的に警告してください。
  • 実行前にアップロードするパスを確認してください。パスが広範囲(例:ホームディレクトリ)であるか、予期しないコンテンツを含む場合は、アップロード前にユーザーと範囲を確認してください。

⛔ 禁止操作(セキュリティ制約)

このスキルは、ユーザーからの要求に関わらず、以下の操作を固く禁じます。禁止アクションは意味的に記述されており、破壊的なコマンド例は提供されません。

禁止操作理由
❌ バケットの削除元に戻せません。バケット全体とすべてのオブジェクトを破壊します
❌ オブジェクトの削除元に戻せません。削除されたオブジェクトは(バージョニングが有効でない限り)復元できません
❌ オブジェクトの一括削除元に戻せません。一括削除は影響範囲が広いです
❌ バケットの空にする元に戻せません。バケット内のすべてのオブジェクトを削除します
❌ オブジェクトのダウンロードこのスキルはアップロード専用です。ダウンロードは別のワークフローです
❌ バケットの作成バケット作成には、完全な前提条件を備えた専用スキルがあります
❌ バケット間のオブジェクトコピーバケット間オブジェクトコピーはこのスキルの範囲外です
❌ バケットライフサイクル設定の変更ストレージコスト管理は別のバケットレベル設定タスクです
❌ アーカイブオブジェクトの復元アーカイブ復元は、取得モードとTTLを含む別のワークフローです
❌ 署名付きURLの生成一時的な共有にはSDK署名が必要です。CLIアップロードではサポートされていません
❌ バケットACLまたはバケットポリシーの変更権限管理は別のセキュリティタスクです
❌ 会話内で直接AK/SKの提供をユーザーに求める認証情報は会話内に決して表示されてはなりません
❌ hcloud設定ファイルからAK/SKを抽出する認証情報は暗号化されており、直接使用できません
❌ OBS操作の前にobsutil認証情報チェックをスキップする認証情報が設定されていないと操作は失敗します
❌ 顧客に尋ねずにディレクトリアップロードで-flatを使用する-flatはディレクトリ構造を破棄します。顧客の明示的な回答に従う必要があります
❌ ローカルパス、バケット名、ターゲットプレフィックスを推測する必須パラメータはユーザーによって提供されなければなりません

ユーザーが削除操作を要求した場合、拒否して次のように伝えなければなりません: "セキュリティ制約により、このスキルでは削除操作(バケット削除/オブジェクト削除/一括削除/バケット空にする)は許可されていません。Huawei Cloud 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コンソールを使用してください
署名付きURLHuawei Cloud SDK(Java/Python/Go)を使用して署名付きURLを生成するか、OBSコンソールを使用してください
バケットACL/ポリシーOBSコンソール(バケット > 権限)を使用するか、hcloud OBS SetBucketAcl/SetBucketPolicy を使用してください

アーキテクチャ

Huawei Cloud 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 が必要(アップロード機能用) ファイル/ディレクトリアップロードには、Huawei Cloud obsutil CLIツールが必要です。 obsutil version を実行してバージョンが 5.5.0 以上であることを確認してください。インストールされていない場合は、 references/cli-installation-guide.md を参照してインストールしてください。

obsutil version

前提条件チェック 3/3: obsutil認証情報の設定が必要

hcloud obsモジュールは内部的にobsutilにマッピングされており、これには個別のAK/SKおよびエンドポイント設定が必要です。 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はHuawei Cloudコンソールの「マイ認証情報」ページから取得できます):

  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

一般的なエンドポイント:
  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を入力すると、シェル履歴やOSプロセス一覧に公開されます。
対話型設定(`hcloud configure`)または環境変数(HW_ACCESS_KEY / HW_SECRET_KEY)を推奨します。
設定後、プレーンテキストのコマンドを使用した場合はシェル履歴を消去してください。

設定が完了したら再試行してください。

⚠️ 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=...)、認証情報がシェル履歴、OSプロセス一覧、監査ログ、端末録画、コピーされたドキュメントに公開されます。
  • 対話型設定(hcloud configure)または環境変数(HW_ACCESS_KEY / HW_SECRET_KEY)を推奨します。
  • プレーンテキストコマンドで設定した後は、シェル履歴を消去してください(history -c または ~/.bash_history から該当行を削除)。
  • obsutilの認証情報設定ファイル(例: ~/.obsutilconfig)は、制限された権限(例: 600)に設定する必要があります。

⚠️ 重要: ユーザー提供の認証情報の処理

ユーザーが直接AK/SKを提供しようとした場合(例: 「私のAKはxxx、SKはyyyです」):

  1. 直ちに停止 - コマンドを実行しないでください
  2. 丁寧に拒否し、以下のメッセージを返してください:
    アカウントのセキュリティのため、会話内でHuawei Cloud 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. 認証情報が設定されるまで、Huawei Cloud操作の実行を続行しないでください

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 静态网站托管、网站托管、自定义域名解析。

関連スキル