mcpField
C
cloudbase-platform

cloudbase-platform

github.com/tencentcloudbaseクラウド・DevOps1.2k61 回インストール1 日前に更新
リポジトリ

cloudbase-platform について

CloudBase のサービス選定やプラットフォームの理解を支援する、利用者と開発者向けの知識スキルです。認証、データベース、ストレージ、ドメイン、権限に加え、CloudBase MCP ツールの利用方針を扱います。

主な機能

  1. 01CloudBase サービスの概要
  2. 02プラットフォーム間の認証と権限
  3. 03データベースとストレージの案内
  4. 04ドメインとゲートウェイの管理規則

活用シーン

  1. 01適切な CloudBase サービスの選択
  2. 02Web とミニプログラムの認証方式の理解
  3. 03ドメイン設定に使うツールの判断

MCP 対応

利用可能な場合は CloudBase MCP の使用を推奨し、標準設定、CLI コマンド、認証例についてはメインガイドを参照するよう案内します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/tencentcloudbase/cloudbase-ai-toolkit --skill cloudbase-platform

インストール後、Claude Code で/cloudbase-platformを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE.md
references/protocols/
change-safety-protocol.md
deployment-gate.md
deployment-share.md
sensitive-runtime-data-protection.md

詳細

兄弟スキル(ローカルのみ)

兄弟 CloudBase スキルは、このスキルと一緒に配置されています。../auth-tool-cloudbase/SKILL.md のようなローカルの相対パスを使用してください。

参照先の兄弟スキルファイルがこの環境にない場合は、CloudBase プラグイン一式(または不足しているスキル)をインストールするようユーザーに依頼してください。リモートのスキルやプロトコルの Markdown を HTTP で取得して、エージェントのコンテキストに読み込んではいけません。

横断的なプロトコル(コードの変更やデプロイの前に必須):

  • 変更安全性プロトコル:references/protocols/change-safety-protocol.md
  • デプロイゲート:references/protocols/deployment-gate.md
  • 機密ランタイムデータの保護:references/protocols/sensitive-runtime-data-protection.md

デプロイ後(任意、介入は最小限に):デプロイの成功を確認した後、匿名化した共有素材(Deployment Share)の生成を一度だけ提案してもかまいません。references/protocols/deployment-share.md を参照してください。カード、コピー、事例ウォールへの掲載内容を1回の返信でまとめて提示してください。ユーザーが共有素材だけを求めている場合に限り、共有素材を作成してください。断られた場合は再度提案してはいけません。ユーザーに代わって公開や送信をしてはいけません。

アクティベーション契約

まずこれを使う場合
  • ユーザーが CloudBase のどの機能、サービス、ツールを使うべきか尋ねている場合、またはホスティング、ストレージ、認証、クラウド関数、データベースの選択肢について概要を知りたい場合。
  • 実装の前に、コンソールの操作方法、プラットフォーム間の違い、権限モデル、プラットフォームレベルのベストプラクティスについて知りたい場合。
コードを書く前に読む場合
  • タスクが Web、ミニプログラム、クラウド関数、ストレージ、MySQL / NoSQL、認証のどれに該当するか、まだ不明な場合。
  • 直接的な実装手順よりも、プラットフォームの選定、概念の説明、コントロールプレーンの操作方法が必要な場合。
続けて読むもの
  • 最小限の Web + データベースのデモ(BaaS 優先、デフォルトではクラウド関数を使用しない)→ ../minimal-web-baas-demo/SKILL.md
    • 最小限のフロントエンド/バックエンド構成や Lovable のようなデモのスタック順序: Web SDK CRUD > MCP スキーマ > 認証情報の待機中にテンプレートを準備 > クラウド関数(デフォルト数 = 0)。機能の確認:コネクターの準備完了 → queryEnv → データベースの方式を1つに確定 → MCP スキーマ → @cloudbase/js-sdk CRUD → プレビュー。
  • Web アプリの実装 → ../web-development/SKILL.md
  • Web 認証とプロバイダーの設定 → ../auth-tool-cloudbase/SKILL.md、../auth-web-cloudbase/SKILL.md
  • ミニプログラムの開発 → ../miniprogram-development/SKILL.md
  • CloudBase Integration Center 経由の WeChat Pay、公式アカウント OAuth、JSAPI Pay、またはネイティブ QR コード決済 → ../cloudbase-wechat-integration/SKILL.md(公式ドキュメント:https://docs.cloudbase.net/integration/introduce.md)
  • クラウド関数 → ../cloud-functions/SKILL.md
  • 公式 HTTP API クライアント → ../http-api-cloudbase/SKILL.md
  • ドキュメントデータベース → ../cloudbase-document-database-web-sdk/SKILL.md または ../cloudbase-document-database-in-wechat-miniprogram/SKILL.md
  • CloudBase PostgreSQL / PG → ../postgresql-development-cloudbase/SKILL.md
  • リアルタイム/ライブプッシュ/チャネル/ライブテーブル変更のサブスクリプション/マルチプレイヤー同期 → ../postgresql-development-cloudbase/references/realtime.md
    • PG モードのみ。 リアルタイムコードを書く前に、その Step 0 の環境確認を実行してください。環境に realtime スキーマがない場合は、回避策を試さずに停止して、その旨を報告してください。
    • app.realtime()(Broadcast / Presence / Postgres CDC)は、ドキュメントデータベースの collection.watch() とは異なります。リアルタイムのリクエストに watch() のコードで回答したり、その逆を行ったりしてはいけません。
  • MySQL リレーショナルデータベース/データモデリング → ../relational-database-mcp-cloudbase/SKILL.md または ../data-model-creation/SKILL.md
  • クラウドストレージ → ../cloud-storage-web/SKILL.md
使用しない場合
  • より具体的なスキルが適合する場合の、Web ページ、認証フロー、関数、データベース操作の直接的な実装。
  • 専門スキルで扱う低レベル API パラメーターのリファレンスや SDK の使用例。
よくある間違い/注意点
  • この汎用スキルを、すべての CloudBase 開発におけるデフォルトのエントリーポイントとして扱うこと。
  • 適切な実装スキルがすでに明確になっているのに、このスキルを使い続けること。
  • プラットフォームの概要に、プラットフォーム固有の API の形式や SDK の詳細を混在させること。
  • 既存のアプリケーションで、使用中の認証、ストレージ、データのファイルがすでに明らかな場合に、この概要スキルを迂回路として使うこと。
  • 変更安全性プロトコル(cloudbase-platform/references/protocols/change-safety-protocol.md)に最初に従わずに、コードや設定を変更すること。
  • cloudbase-platform/references/protocols/deployment-gate.md のチェックを最初に完了せずに、デプロイ、公開、カスタムドメイン、CloudRun に関する作業を開始すること。
  • Cloud Functions/CloudRun から x-cloudbase-context、req.headers 全体、または process.env を出力すること(httpbin 形式のデバッグ画像も含む)。references/protocols/sensitive-runtime-data-protection.md に従ってください。
  • セキュリティドメインとカスタムドメインを混同すること:これらは目的の異なる2つのツールです。正確な区分については、以下の「ドメイン管理ツール」の表を参照してください。

このスキルを使用するタイミング

以下が必要な場合は、CloudBase プラットフォームの知識を得るためにこのスキルを使用してください。

  • CloudBase のストレージとホスティングの概念を理解する
  • 実装前にプラットフォームの機能を比較する
  • クロスプラットフォーム認証の違い(Web 対 Mini Program)を理解する
  • データベースの権限とアクセス制御を理解する
  • CloudBase コンソールの管理ページにアクセスする

このスキルでは、Web、Mini Program、バックエンドサービスのいずれであるかを問わず、すべての CloudBase プロジェクトに適用される基礎知識を提供します。


このスキルの使い方(コーディングエージェント向け)

  1. プラットフォームごとの違いを理解する

    • Web とミニプログラムでは、認証方法がまったく異なります
    • プラットフォームを厳密に区別する必要があります
    • プラットフォーム間で認証方法を混在させないでください
    • ワークスペースがすでに TODO や事前構築済みのハンドラーを含むアプリケーションの場合、プラットフォームの概要説明にとどまらないでください。具体的な実装スキルと、そのフローを担う既存ファイルへ速やかに進んでください。
  2. ベストプラクティスに従う

    • SDK 組み込みの認証機能を使用します(Web)
    • ミニプログラムの自然なログイン不要機能を理解します
    • 適切なデータベース権限を設定します
    • ブラウザーでの CRUD には @cloudbase/js-sdk による直接の DB アクセスを優先します。クラウド関数は、シークレット、スケジュール済み/バックグラウンドジョブ、またはセキュリティルール/RLS では表現できない権限昇格を伴うコレクション間のロジックにのみ使用します(デモの既定の方法については ../minimal-web-baas-demo/SKILL.md を参照してください)
  3. 適切な SDK と API を使用する

    • データモデル用の SDK はプラットフォームごとに異なります
    • MySQL データモデルにはコレクション API ではなく、モデル SDK を使用する必要があります
    • PostgreSQL/CloudBase PG の作業は postgresql-development-cloudbase に振り分けてください。PG のデータパスで NoSQL の app.database()/db.collection(...) のスニペットや、MySQL 用の queryMysqlDatabase/manageMysqlDatabase を再利用しないでください
    • 環境 ID の取得には queryEnv ツールを使用します
    • 構成が固定された既存の Web アプリケーションでは、概念を広く読み込む前に、既存の src/lib/backend.*、src/lib/auth.*、src/lib/*service.* と、紐づくページハンドラーを調べてください。
  4. メインの cloudbase ガイドラインに記載されている標準的な CloudBase MCP セットアップを使用する

    • このプラットフォーム概要では、MCP/mcporter の設定ブロック全体を意図的に重複して記載していません
    • 標準の設定スニペット、CLI コマンド、認証の例については、まずメインの cloudbase ガイドラインを読んでください
    • ここでも同じ基本ルールに従ってください。このセッションでツールを利用できる場合は MCP を優先し、利用できない場合は次のセッションに向けて MCP を設定し、今は tcb CLI を使用します(../cloudbase-cli/SKILL.md、../cloudbase/references/tooling-fallback.md)。MCP を実行する前にツールのスキーマを確認してください。設定に Secret ID/Secret Key/Env ID をハードコードしないでください
    • 認証の区分を明確にしてください。管理側のログインには auth を使用し、アプリケーション側の認証設定には queryAppAuth/manageAppAuth を使用します

CloudBase プラットフォームの知識

ドメイン管理ツール:明確な区別

ドメイン関連のタスクでは、要件に応じて適切なツールを使用してください。

要件ツールパラメーター目的
セキュリティドメインmanageEnv(action="addSecurityDomain" | "removeSecurityDomain")domains(host:port 形式の文字列の配列)ブラウザーからのアップロードにおける CORS/リクエスト送信元の検証です。証明書は関係しません。(非推奨のエイリアス:envDomainManagement。)
既存のカスタムドメインを再利用queryGateway(listCustomDomains) → manageGateway(createRoute)domain = 既存のカスタムドメイン。ルートのフィールドすでにバインドされているカスタムドメインでサービス/パスを公開します。certificateId は不要です。 既存のカスタムドメインがある場合は、こちらを優先してください。
新しいカスタムドメインをバインドmanageGateway(action="bindCustomDomain")domain(文字列)、certificateId(文字列)新しいパブリック HTTPS ドメインを初めてバインドします。SSL コンソールで取得した certId が必要です。
カスタムドメインを削除manageGateway(action="deleteCustomDomain")domain(文字列)カスタムドメインのバインドを解除します(そのドメイン上のルートを削除した後に限ります)。
ゲートウェイルートを無効化/有効化manageGateway(action="disableRoute" | "enableRoute")path(必須)。明示的な domain を推奨ModifyHTTPServiceRoute 経由で Routes[].Enable を切り替えます(ModifyGatewayRoute は使用しません)。
静的ホスティングのデフォルトドメインを無効化queryGateway(listRoutes) → manageGateway(disableRoute)domain = *.tcloudbaseapp.com(DomainType=STATIC_STORE、IsDefault=true)、通常は path="/"共有ホスティング CDN のデフォルトホストへのパブリックアクセスを無効にします。manageHosting は使用しないでください。

適切なツールを選ぶための主な判断基準:

  • タスクに「カスタムドメインでのアクセス」が含まれていて、環境にすでにカスタムドメインがある → listCustomDomains の後に createRoute(domain=...) を実行します(certificateId は不要です)
  • タスクに「証明書 ID」または「SSL」が含まれ、新しいドメインのバインドが必要 → manageGateway(action="bindCustomDomain") を使用します
  • タスクに「ブラウザーからのアップロード」、「CORS」、または「セキュリティドメイン」が含まれている → manageEnv(action="addSecurityDomain" / "removeSecurityDomain") を使用します
  • タスクにドメインを使った「パブリックアクセス」または「HTTPS」が含まれている → 可能な場合は createRoute での再利用を優先します。初めてドメインをバインドする場合に限り bindCustomDomain を使用します
  • タスクに「静的ホスティングのデフォルトドメインを閉じる/無効化する」または *.tcloudbaseapp.com が含まれている → queryGateway(listRoutes) の後、その STATIC_STORE ドメインを指定して manageGateway(disableRoute) を実行します。ModifyGatewayRoute を決して推測で使用しないでください
  • タスクがオンボーディングの全手順(バインド可能か、どれくらい待つか、DNS の設定方法、ICP 登録が事前に必要か)について尋ねている、またはバインド済みのドメインにアクセスできない → ../cloud-api-operations/references/recipes/custom-domain.md に従ってください。最初に読み取り専用の VerifyHTTPServiceRoute 事前チェックを実行し、その後バインドして、Status/DNSStatus をポーリングします。このレシピでは、アカウントレベルの ID に対するドメイン登録/DNS/ICP の呼び出しが UnauthorizedOperation を返す場合がある理由も説明しています。
エラーコードのトラブルシューティング:公式ドキュメントを参照する

CloudBase のツール呼び出しが失敗し、エラーメッセージに特定のエラーコード(Category.Code 形式。例:OperationDenied.FreePackageDenied、ResourceNotFound.*)が含まれている場合は、操作する前に必ず公式ドキュメントを参照してください。意味を推測したり、ここに修正方法を決め打ちで記載したりしないでください。

  1. エラーメッセージからエラーコードを抽出します。
  2. 次のコマンドで検索します:searchKnowledgeBase(mode="docs", action="searchDocs", query="<错误码>")。公式ドキュメント検索では、エラーコードのページも検索されます。ドキュメントに記載された意味と修正手順に従って対応します(プランの制限ならアップグレードの案内、設定ミスなら設定の修正など)。
  3. ドキュメント検索で何も見つからない場合は、次の正式なエラーコードのページを参照します。
    • エラーコードの基礎とセルフサービスでのトラブルシューティング:https://docs.cloudbase.net/error-code/basic
    • コントロールプレーンのクラウド API エラーコード:https://cloud.tencent.com/document/product/876/34823
  4. プランごとの機能やエラーコードの意味を、記憶に頼って断定しないでください。信頼できる情報源は公式ドキュメントとコンソールのプラン比較のみです。例:Web 安全ドメインに必要なプランを案内する際は、どのプランで利用できるかを推測せず、https://cloud.tencent.com/document/product/876/127357 を参照してください。

課金関連およびサービス停止を示すコードは例外です。コードの文面は誤解を招くため、対応する前に原因を診断してください。 InsufficientBalance(クラウド関数が HTTP 410 で返す場合)、EXCEED_REQUEST_LIMIT、または単にサービスが停止している場合、InsufficientBalance はアカウントの問題を示しているように見えますが、そうではありません。枯渇するのは環境のリソースポイントです。アカウント残高より先に消費され(プランの割り当て → リソースパック → 従量課金)、チャージしても回復しません。サーバーレスサービスの公式ステータスコード表には「チャージして再試行」と記載されているため、記載どおりに案内すると、ユーザーはアカウントに誘導されますが、問題は解決しません。

案内する前に、まず原因を診断してください。原因は4種類あり、それぞれ対応が異なります(無料トライアルのポイント枯渇/有料プランのポイント枯渇/プランの期限切れ/アカウントの実際の未払い)。チャージが必要なのは最後のケースだけです。manageEnv(action="usage") を実行して現在のサイクルにおける環境のポイント使用状況を確認し、併せてアカウント残高も読み取ります(callCloudApi、billing)。どちらも読み取り専用です。判定表、プランごとの対処方法、コンソールの項目についてはcredits-exhaustionを参照してください。案内する際に押さえておくべき点は2つです。無料トライアルではリソースパックの購入も従量課金の有効化もできないため、有料プランへのアップグレードのみが解決策です。また、プラン名は「免费体验版」/「个人版」/「标准版」/「企业版」/「企业高级版」です。

操作結果の記録

タスクで操作手順や結果をファイル(例:RESULT.json)に記録することが明示的に求められている場合は、まずツールを呼び出し、その後、すべての試行(アクション、成功/失敗、メッセージ)と、合計/成功/失敗の件数を含むsummaryを記載した完全な記録を書き込みます。ツール呼び出しが完了する前に、記憶を頼りにファイルを書き込まないでください。

ストレージとホスティング

  1. 静的ホスティングとクラウドストレージ:

    • CloudBase の静的ホスティングとクラウドストレージは、別々のバケットです
    • 一般に、公開アクセス可能なファイルは静的ホスティングに保存できます。静的ホスティングでは、公開ウェブアドレスが提供されます
    • 静的ホスティングでは、カスタムドメインを設定できます(コンソールでの操作が必要です)
    • プライバシー要件のあるファイルにはクラウドストレージが適しています。一時ファイル URL を使って一時的なアクセスアドレスを取得できます
    • タスクで COS SDK によるポーリング、ファイルメタデータの検索、またはアップロードしたオブジェクトの一時 URL が必要な場合は、manageHosting(action="upload") ではなく、クラウドストレージツール(manageStorage / queryStorage)を使用してください
  2. 静的ホスティングのドメイン:

    • CloudBase の静的ホスティングのドメインとウェブサイトのドキュメント設定は、queryHosting(action="websiteConfig") で取得できます
    • 静的ホスティングのファイルパスと組み合わせて、最終的なアクセスアドレスを構築します
    • デフォルトの共有ホストは <envId>-<appId>.tcloudbaseapp.com のような形式です(DomainType=STATIC_STORE。queryGateway(listRoutes) では多くの場合 IsDefault=true)
    • このデフォルトの公開ホストを無効にするには、manageGateway(action="disableRoute", domain="<that-host>", path="/") を実行します(または enable=false を指定して updateRoute を実行します)。再度有効にするには enableRoute を使用します。manageHosting にデフォルトドメインを無効にするアクションがあると考えないでください。また、存在しない ModifyGatewayRoute を呼び出さないでください。API は ModifyHTTPServiceRoute です
    • 重要:アクセスアドレスがディレクトリの場合、末尾に / を付ける必要があります
  3. クラウドストレージの公開 URL:

    • 重要:manageStorage(action=upload) と queryStorage(action=url) が返す temporaryUrl は、有効期限のある一時的な署名付き URL です(デフォルトは 1 時間)。恒久的な公開 URL として使用しないでください。
    • クラウドストレージオブジェクトの恒久的な公開アクセス URL を取得するには:
      1. queryEnv(action=info) を呼び出して環境の詳細を取得します
      2. EnvInfo.Storages[0].CdnDomain からストレージの CDN ドメインを取り出します(例:your-env-id.tcb.qcloud.la)
      3. 公開 URL を構築します:https://{CdnDomain}/{cloudPath}
    • 例:CdnDomain が env-xxx.tcb.qcloud.la で、cloudPath が uploads/avatar.jpg の場合、公開 URL は https://env-xxx.tcb.qcloud.la/uploads/avatar.jpg です
    • 注:公開 URL にアクセスできるのは、ストレージバケットの ACL で公開読み取りが許可されている場合のみです(デフォルトは PRIVATE で、署名付き URL が必要です)
  4. 共有バケット(ExternalStorage)環境:

    • 環境によっては、複数の環境で共有される COS バケットにファイルを保存し、各環境をそれぞれのディレクトリプレフィックス(BasePath)の下に分離しています。queryEnv(action="info") で確認できます。EnvInfo.Storages[0].Bucket が空で、Storages[0].ExternalStorage.Enabled === true の場合、クラウドストレージは共有バケットを使用しています。静的ホスティングも同様に EnvInfo.StaticStorages[0] を確認してください。ストレージとホスティングでは、異なるバケットと BasePath を使用する場合があります。
    • パスは論理パスのままです。 ストレージツールとホスティングツールが BasePath を自動で追加するため、通常の環境と同じ cloudPath を指定し、BasePath やバケット名を前に付けないでください。例:BasePath が tenant-a の場合、cloudPath="tenant-a/images/a.png" ではなく cloudPath="images/a.png" を指定してアップロードしてください(前者ではファイルが tenant-a/tenant-a/ の下に配置されます)。ホスティング URL と CDN URL も論理パスから構築してください。ドメインが BasePath を解決するため、ホスティング URL に BasePath を追加すると 404 が返されます。
    • manageHosting(action="setWebsiteDocument") は、バケット内のすべての環境に影響するバケットレベルの設定を変更するため、共有バケットのホスティングでは失敗します。queryHosting(action="websiteConfig") による読み取りは引き続き可能です。再試行せず、この設定はプラットフォーム側で管理されていることをユーザーに伝えてください。
    • ストレージのセキュリティルールは COS バケットの ACL ではなく、環境ごとに管理されます。そのため、通常の環境と同じ方法で読み取りと更新を行ってください。
    • 共有バケット環境の削除時にファイルがどうなるかは、プラットフォームによって決まります。その BasePath ディレクトリが保持または削除されると約束しないでください。

環境と認証

  1. SDK の初期化:

    • CloudBase SDK の初期化には環境 ID が必要です
    • queryEnv ツールで環境 ID を照会できます
    • ユーザーが環境エイリアス、ニックネーム、その他の短縮形のみを指定した場合は、まず queryEnv(action="list", alias=..., aliasExact=true) で解決し、返された完全な EnvId を使用してください
    • エイリアスのような短縮形を SDK の初期化、auth.set_env、コンソール URL、生成される設定ファイルに直接渡さないでください
    • Web では、必ず同期的に初期化してください:
      • import cloudbase from "@cloudbase/js-sdk"; const app = cloudbase.init({ env: "your-full-env-id" });
      • import("@cloudbase/js-sdk") のような動的インポートや、内部で initPromise を使う initCloudBase() のような非同期ラッパーは使用しないでください
    • その後、検証済みの方法(ユーザー名/パスワード、電話番号、メール、または WeChat)でログインしてください
  2. 環境管理(manageEnv 経由): manageEnv ツールを使用すると、CloudBase 環境のライフサイクルを全面的に管理できます。

    アクション説明主なパラメーター
    listPackages利用可能なプランを照会します(なし)
    create新しい環境を作成します(確認が必要)alias、packageId、resources、duration、region、externalStorage
    modifyPlanプランを変更します(アップグレード/ダウングレード、確認が必要)envId、packageId
    renew環境を更新します(確認が必要)envId、duration

    特定のリソースを指定して環境を作成する場合:

    manageEnv(action="create", alias="my-env", packageId="baas_personal",
              resources=["storage","function","postgresql"], confirm="yes")
    
    • resources(任意、作成時のみ):有効にする CloudBase の機能を指定します:
      • storage — クラウドストレージ
      • function — Cloud Functions
      • postgresql — PostgreSQL リレーショナルデータベース(PG モード)
    • 省略した場合、デフォルトですべての機能が有効になります。MCP は CreateEnv に空でない Resources を常に送信します。
    • flexdb(ドキュメントデータベース)は提供されていません。新しい環境は NoSQL テナントなしで作成されます。渡さないでください。スキーマで拒否されます。環境に実際に NoSQL があるかどうかを確認するには、推測せずに queryEnv(action="info") → EnvInfo.RuntimeBackends を読み取ってください。
    • リージョンは選択できます。region(例:region="ap-shanghai")を渡すと、環境の作成先を指定できます。これは CreateEnv の本文フィールドではなく、X-TC-Region リクエストコンテキストとして適用されます。そのため、Region を params 内に入れないでください。省略した場合は、現在のセッションリージョンが使用されます(cloudBaseOptions.region → TCB_REGION → プロジェクト設定/rc バインディング → サイトのデフォルト:国内サイトでは ap-shanghai、国際サイトでは ap-singapore)。同等の CLI:tcb env create --region ap-shanghai。
    • ⚠️ region を渡す場合は、確認時の呼び出しでも confirm="yes" とともに同じ値を指定してください。そうしないと、2 回目の呼び出しではセッションリージョンに戻り、確認した概要とは異なる場所に環境が作成される可能性があります。
    • externalStorage(任意、作成時のみ):{ bucketName, region, basePath } を指定すると、専用バケットではなく既存の共有 COS バケット上に環境のクラウドストレージを作成し、basePath の下にファイルを分離します(バケット内で一意である必要があります)。オブジェクトを渡す場合は、3 つのフィールドすべてが必須です。ユーザーがバケットを指定した場合にのみ使用してください。通常は、1 環境につき 1 つのバケットを使用するとアカウントの COS バケット上限に達するため、1 つのアカウントで多数の環境を作成するプラットフォーム向けです。バケット名を決して推測しないでください。静的ホスティングには適用されません。ホスティングを有効にすると、ホスティングバケットはプラットフォームによって選択され、このツールでは設定できません。
    • ⚠️ region と同様に、confirm="yes" の呼び出しでも同じ externalStorage を指定してください。確認時の呼び出しではその呼び出し自体の引数のみが読み取られるため、省略すると専用バケットで環境が作成されます。
    manageEnv(action="create", alias="tenant-a", packageId="baas_personal",
              externalStorage={ bucketName: "shared-bucket-1250000000", region: "ap-shanghai", basePath: "tenant-a" },
              confirm="yes")
    
    • ⚠️ すべての有料操作(create/modifyPlan/renew)には confirm="yes" が必要です。 作成前に利用可能なパッケージを照会する場合:
    manageEnv(action="listPackages")
    
    • ⚠️ このリストは、コンソールの新規購入/新規環境メニューで提供されているパッケージに絞り込まれています:baas_personal(个人版)、baas_pf_standard(标准版)、baas_pf_enterprise(企业版)、baas_pf_enterprise_senior(企业高级版)、baas_trial(体验版)、baas_integration(集成版)。パッケージのファミリー(default/basic/trial/vip)は、このセットには対応していません。starter(入门版)、baas_team(团队版)、enterprise_basic(企业基础版)などのレガシーパッケージは、現行パッケージと同じファミリーに属しているため、意図的に除外されています。プラットフォームはほかの有効なpackageIdも引き続き受け付けるため、実際の作成結果を正としてください。

    プランを変更する場合(listPackagesのpackageIdを使用):

    manageEnv(action="modifyPlan", envId="your-env-id", packageId="<packageId>", confirm="yes")
    

    環境を更新する場合:

    manageEnv(action="renew", envId="your-env-id", duration=1, confirm="yes")
    

認証のベストプラクティス

重要:プラットフォームごとに認証方法はまったく異なるため、必ず明確に区別してください!

Web 認証
  • SDK 組み込みの認証を必ず使用してください:CloudBase Web SDK は完全な認証機能を提供します
  • 推奨方法:auth.getVerification()を使用した SMS ログインです。詳しくは Web 認証関連のドキュメントを参照してください
  • 禁止事項:ログイン認証ロジックを実装するためにクラウド関数を使用しないでください
  • セッション管理:ルートガードとログイン確認にはauth.getSession()を使用し、data.sessionがあることを必須としてください。非推奨のgetLoginState()や、実際のログインの証明としてのauth.getUser()/auth.getCurrentUser()は使用しないでください。
  • プロバイダーとログイン方法の設定:MCP のauthツールではなく、queryAppAuth/manageAppAuthを使用してください
  • 匿名ログインはデフォルトで無効です。 公開可能なaccessKeyだけでは、ゲートウェイで認証された匿名セッションは作成されません。@cloudbase/js-sdk 3.xでは、NoSQL のapp.database()による CRUD の前にawait auth.signInAnonymously()(または同等の認証済みセッション)を呼び出してください。呼び出さないと、ゲートウェイは401を返します。アプリで AuthGuard または RLS によるアクセス制御を使用している場合、匿名アクセスを許可するときはis_anonymousのチェックが設定されていることを確認してください。
  • ⚠️ PG RLS:current_userではなくauth.uid()を使用してください。 CloudBase PostgreSQL の RLS ポリシーを記述する際、ユーザー ID にはauth.uid()を使用する必要があります(JWT のsub/実際のユーザー ID を**text**として返します。Supabase とは異なり、uuidではありません)。所有者カラムにはvarchar(64)/textを推奨します。カラムがuuidの場合はauth.uid()::uuidでキャストしてください。そうしないと、operator does not exist: uuid = textが発生します。current_userやcurrent_setting(...)は使用しないでください。これらの PostgreSQL 組み込み関数は CloudBase の認証ユーザー ID ではなく、データベースのロール名(例:authenticated)を返します。CloudBase PG は4つの認証ヘルパー関数を提供します:auth.uid()、auth.role()、auth.email()、auth.jwt()。SELECT proname FROM pg_proc WHERE pronamespace = 'auth'::regnamespaceを実行して利用可能か確認してください。
ミニプログラム認証
  • ログイン不要の機能:ミニプログラムの CloudBase は本来ログイン不要で、ログインフローは必要ありません
  • ユーザー識別子:クラウド関数内で wx-server-sdk を使用してwxContext.OPENIDを取得してください
  • ユーザー管理:openid に基づいて、クラウド関数内でユーザーデータを管理してください
  • 禁止事項:ログインページやログインフローのコードを生成しないでください

クラウド関数

  1. Node.js クラウド関数:
    • Node.js クラウド関数にはpackage.jsonを含め、必要な依存関係を宣言する必要があります
    • manageFunctions(action="createFunction")を使用して関数を作成できます
    • manageFunctions(action="updateFunctionCode")を使用してクラウド関数をデプロイしてください
    • クラウド依存関係のインストールを優先し、node_modules はアップロードしないでください
    • functionRootPathは関数ディレクトリの親ディレクトリを指します。例:cloudfunctionsディレクトリ

データベースの権限

⚠️ 重要:データベース操作コードを書く前に、必ず権限を設定してください!

  1. 権限モデル:

    • CloudBase のデータベースアクセスには権限があります
    • デフォルトの基本権限は次のとおりです:
      • READONLY:全員が読み取り可能で、作成者/管理者のみ書き込み可能です
      • PRIVATE:作成者/管理者のみ読み取り/書き込み可能です
      • ADMINWRITE:全員が読み取り可能で、管理者のみ書き込み可能です(⚠️ Web SDK からの書き込みには使用できません!)
      • ADMINONLY:管理者のみ読み取り/書き込み可能です
      • CUSTOM:カスタムルールによる細かな制御が可能です
  2. プラットフォームの互換性(重要):

    • ⚠️ Web SDK では、書き込み操作に ADMINWRITE または ADMINONLY を使用できません
    • ✅ Web アプリでユーザー生成コンテンツを扱う場合は、CUSTOM ルールを使用してください
    • ✅ 管理者が管理するデータ(商品、設定)には、READONLY を使用してください
    • ✅ クラウド関数は、権限の種類にかかわらずすべてのアクセスが可能です
  3. 設定手順:

    Create collection → Configure security rules → Write code → Test
    
    • managePermissions(action="updateResourcePermission") を使用して、リソースの権限を設定します
    • 権限を変更したばかりの場合は、数秒後に再試行してください(通常は約30秒以内です)。2~5分、むやみに待たないでください。それでも失敗する場合は、まず実際のルールの形式とアクティブなクライアントの書き込みパターンを再確認してください。失敗の多くはキャッシュではなく、ルールの設定ミスが原因です。
    • 詳細については、no-sql-web-sdk/security-rules.md の resourceType="noSqlDatabase" の例のみを参照してください。doc._openid、auth.openid、クエリサブセットの検証、または create/update/delete の JSON テンプレートを、関数、ストレージ、SQL テーブル向けの汎用ルールとして扱わないでください
    • 公式リファレンス:
      • セキュリティルールの概要:https://cloud.tencent.com/document/product/876/41802
      • NoSQL データベースのセキュリティルール:https://docs.cloudbase.net/database/security-rules
      • クラウド関数のセキュリティルール:https://docs.cloudbase.net/cloud-function/security-rules
      • ストレージのセキュリティルール:https://docs.cloudbase.net/storage/security-rules

互換性に関する注記:

  • 正式なプラグイン名:permissions
  • 従来のプラグインエイリアス security-rule、security-rules、secret-rule、secret-rules、access-control は、引き続き permissions プラグインに解決されます
  • 従来のツール readSecurityRule/writeSecurityRule は削除されました。queryPermissions/managePermissions を使用してください
  1. 一般的なシナリオ:

    • E コマースの商品:READONLY(管理者はクラウド関数を通じて管理します)
    • ショッピングカート:auth.uid のチェックを含む CUSTOM(ユーザーは自分のカートを管理します)
    • 注文:所有権の検証を含む CUSTOM
    • システムログ:PRIVATE または ADMINONLY
  2. 複数コレクションにまたがる操作:

    • 権限モデルで可能な場合は、セキュリティルール/RLS とクライアント SDK を優先してください
    • 操作に昇格された権限、サーバーシークレット、またはルールでは表現できない複数コレクションのロジックが必要な場合は、クラウド関数を使用してください
    • 最小限の Web デモ(Todo/Notes/Kanban/最小前后端)では、CRUD のためにクラウド関数を導入しないでください — ../minimal-web-baas-demo/SKILL.md に従ってください

ロール管理(MCP)

CloudBase MCP は、queryPermissions と managePermissions(CLI の同等コマンド:tcb role)を使用したロール管理を提供します。すべてのアクションの一覧については、各ツールのスキーマを参照してください。

⚠️ 重大:ロールポリシーとリソース権限は、相互に自動同期されない独立した 2 つのシステムです。

  • リソース権限(セキュリティルール)は、特定のリソース(テーブル、コレクション、関数、ストレージ)へのアクセスを制御します
  • ロール(ID の側面)は、ポリシーのセットとメンバーの割り当てを制御します

クエリ(queryPermissions):listRoles、getRole(roleId/roleIdentity/roleName で指定)。 管理(managePermissions):createRole、updateRole、deleteRoles、addRoleMembers、removeRoleMembers、addRolePolicies、removeRolePolicies。

managePermissions(action="createRole", roleName="Developer", roleIdentity="developer",
                  policies=["FunctionsAccess"], memberUids=["user-uid-1"])

⚠️ 削除できるのはカスタムロールのみです。システムロールは読み取り専用です。

関連項目:cloudbase-cli/references/permission.md の CLI 同等コマンド

  1. クラウド関数の最適化:
    • ブラウザーからの CRUD で、クラウド関数のミドルウェア層をデフォルトにしないでください。@cloudbase/js-sdk → データベースを優先します(../minimal-web-baas-demo/SKILL.md を参照)
    • クラウド関数が本当に必要な場合は、数を最小限に抑え、各関数の用途をシークレット、高い権限、またはバックグラウンド処理に限定してください

データモデル

  1. データモデル操作オブジェクトの取得:

    • ミニプログラム:@cloudbase/wx-cloud-client-sdk が必要です。const client = initHTTPOverCallFunction(wx.cloud) を初期化し、client.models を使用します
    • クラウド関数:@cloudbase/[email protected]+ が必要です。const app = cloudbase.init({env}) を初期化し、app.models を使用します
    • Web:@cloudbase/js-sdk が必要です。const app = cloudbase.init({env}) を初期化し、ログイン後に app.models を使用します
  2. データモデルのクエリ:

    • MCP の manageDataModel ツールを呼び出して、以下を実行できます。
      • モデル一覧のクエリ
      • モデルの詳細情報(Schema フィールドを含む)の取得
      • 特定のモデルの SDK 使用方法のドキュメント取得
  3. MySQL データモデルの呼び出し規則:

    • MySQL データモデルではコレクションメソッドによる呼び出しはできません。データモデル SDK を使用する必要があります
    • 誤り:db.collection('model_name').get()
    • 正しい:app.models.model_name.list({ filter: { where: {} } })
    • manageDataModel ツールの docs メソッドを使用して、具体的な SDK の使用方法を取得してください

コンソール管理

リソースの作成/デプロイ後は、対応するコンソールリンクを提示してください。コンソール URL はすべて次の形式です:https://tcb.cloud.tencent.com/dev?envId=${envId}#/{path}。${envId} は queryEnv を使用して解決した実際の EnvId に置き換え(最初にエイリアスを解決してください。「環境と認証」を参照)、リソース名は実際の値に置き換えてください。

CloudBase コンソールは頻繁に更新されます。ログイン済みのライブコンソールに、この一覧とは異なるハッシュパスが表示されている場合は、古いドキュメントよりライブコンソールのパスを優先し、その後、このスキルを更新して一致させてください。

エントリーポイント(各1行)
  • 概要:#/overview
  • テンプレートセンター:#/cloud-template/market
  • ドキュメントデータベース:#/db/doc · コレクション #/db/doc/collection/${collectionName} · モデル #/db/doc/model/${modelName}
  • MySQL データベース:#/db/mysql · テーブル #/db/mysql/table/default/(先にコンソールで有効にする必要があります)
  • PostgreSQL データベース:#/db/postgres · データエディター #/db/postgres/data-editor · SQL エディター #/db/postgres/sql-editor · 設定 #/db/postgres/setting(インスタンス仕様、アカウントパスワード) · タスク #/db/postgres/tasks(非同期タスクリスト:仕様変更、共有から専用へのアップグレード) · バックアップ #/db/postgres/backups · 移行 #/db/postgres/migrations
  • Cloud Functions:#/scf · 詳細 #/scf/detail?id=${functionName}&NameSpace=${envId}
  • CloudRun:#/platform-run(環境ごとの機能で、事前のプロビジョニングが必要です — manageCloudRun(action="initEnv") を実行してから、queryCloudRun(action="envStatus") を normal になるまでポーリングします。CloudRun がなくても環境は存在でき、その場合でも CloudRun API は空のフィールドを含む成功レスポンスを返します)
  • Cloud Storage:#/storage
  • AI+:#/ai
  • 静的ホスティング:#/static-hosting(別 URL:https://console.cloud.tencent.com/tcb/hosting)
  • ID 認証:#/identity · ログイン管理 #/identity/login-manage · トークン管理 #/identity/token-management
  • Weida ローコード:#/lowcode/apps
  • ログとモニタリング:#/devops/log
  • 環境設定:#/env/env-setting(環境情報、QPS 超過、プレビュー状態)
  • HTTP アクセス:#/env/http-access(セキュリティドメイン、CORS、環境変数、クォータ)
  • ICP 登録:#/env/filing-manage(この環境が登録リソースの要件を満たすかどうか:パッケージのプラン、残り有効期間が 6 か月超、CloudRun 固定 IP。未達項目にはそれぞれ「更新」/「固定 IP を有効にする」ボタンがあります)

ログイン管理などの設定ページでは、リンクを提示するだけでなく、設定手順に沿ってユーザーを案内してください。

リファレンスインデックス

パッケージに含まれるすべてのリファレンスファイル(スキルの到達性チェックに必須):

コメント