sap-btp-service-manager について
SAP BTP Service Manager を使ったサービス管理のリファレンススキルです。インスタンスやバインディングのライフサイクル、ブローカー管理、認証、CLI・API 操作、Kubernetes 連携とトラブルシューティングを扱います。
主な機能
- 01サービスインスタンスのライフサイクル管理
- 02バインディングとサービスキーの作成
- 03ブローカーとプラットフォームの登録
- 04SMCTL、BTP CLI、API の操作
- 05Kubernetes Service Operator の設定
- 06プロビジョニングとアクセスの問題調査
活用シーン
- 01BTP 環境でのサービスプロビジョニング
- 02アプリケーションへの認証情報の提供
- 03サービスブローカーとプラットフォームの登録
- 04バインディングやレート制限エラーの診断
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ secondsky/ sap-skills --skill sap-btp-service-managerインストール後、Claude Code で/sap-btp-service-managerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdagents/openai.yamlreferences/api-reference.mdbtp-cli-commands.mdkubernetes-operator.mdrate-limiting-filtering.mdroles-permissions.mdservice-catalog-legacy.mdsmctl-commands.mdtemplates/oauth-token-request.shservice-binding-cf.jsonservice-binding-k8s.yamlservice-instance-cf.jsonservice-instance-k8s.yaml詳細
SAP BTP Service Manager スキル
関連スキル
- sap-btp-cloud-platform:プラットフォームの基礎、サービスの理解、BTP 統合に使用します
- sap-btp-best-practices:本番環境へのデプロイパターンとサービス管理ガイドラインに使用します
- sap-btp-connectivity:サービスで接続設定が必要な場合の宛先設定に使用します
- sap-cap-capire:CAP サービスのプロビジョニングとバインディング管理に使用します
SAP Service Manager を使用して、SAP BTP 環境全体のサービスを管理するための包括的なスキルです。
目次
このスキルを使用する場面
以下のタスクに取り組む場合に、このスキルを使用してください。
サービスインスタンスの管理:
- Cloud Foundry、Kyma、Kubernetes、その他の環境でのサービスインスタンスの作成
- SAP BTP コックピット、SMCTL CLI、または BTP CLI によるサービスのプロビジョニング
- サービスパラメーターとラベルの設定
- サービスインスタンスの削除とライフサイクルの管理
サービスバインディングの管理:
- アプリケーションに認証情報を提供するためのバインディングの作成
- サービスインスタンスと Cloud Foundry アプリケーションのバインド
- 外部クライアントからアクセスするためのサービスキーの作成
- Kubernetes ServiceBinding CRD の管理
プラットフォームとブローカーの管理:
- プラットフォーム(OSBAPI 対応システム)の登録
- サービスブローカーの登録
- ブローカーのカタログとサービスプランの管理
- プラットフォーム/ブローカーの登録情報の更新と削除
認証と認可:
- OAuth2 クライアント認証情報の設定
- X.509 証明書認証の使用
- Subaccount Service Administrator ロールの割り当て
- Service Manager のプランとスコープの管理
Kubernetes/Kyma 統合:
- SAP BTP Service Operator のセットアップ
- ServiceInstance および ServiceBinding CRD の作成
- Service Catalog(svcat)から SAP BTP Service Operator への移行
- オペレーターとの通信のための cert-manager のインストール
API と CLI の操作:
- SMCTL コマンドラインインターフェースの使用
- サービス管理での BTP CLI の使用
- Service Manager REST API の使用
- サービスリソースのフィルタリングとクエリ
トラブルシューティング:
- サービスのプロビジョニング失敗のデバッグ
- バインディング認証情報の問題の解決
- レート制限(HTTP 429)への対応
- 非同期操作のステータス確認
クイックスタート
1. SMCTL CLI のインストール
⚠️ 重要:SMCLI リポジトリは 2025 年 9 月 30 日にアーカイブされました。ツールは引き続き動作しますが、SAP BTP ワークフローを長期的に運用するための移行戦略を検討してください。
推奨方法(Go):
# Install via Go (preferred approach)
go install github.com/Peripli/service-manager-cli@latest
# Add to PATH (if not already)
export PATH=$PATH:$(go env GOPATH)/bin
smctl --version
代替方法(ビルド済みバイナリ):
# Download from: https://github.com/Peripli/service-manager-cli/releases/latest
tar -xzf smctl-*.tar.gz && chmod +x smctl
sudo mv smctl /usr/local/bin/ && smctl --version
注:ビルド済みバイナリを使う方法も引き続き動作しますが、Go によるインストールが公式に推奨されています。新規デプロイでは、SAP ネイティブの BTP CLI を代替手段として評価することを検討してください。
2. ログイン
# Interactive login
smctl login -a https://service-manager.cfapps.<region>.hana.ondemand.com \
--param subdomain=<subdomain>
# Client credentials
smctl login -a https://service-manager.cfapps.<region>.hana.ondemand.com \
--param subdomain=<subdomain> --auth-flow client-credentials \
--client-id <id> --client-secret <secret>
3. 基本操作
# Browse services
smctl marketplace
# Create instance (async)
smctl provision my-instance <service> <plan>
# Create binding
smctl bind my-instance my-binding
主要な概念
Service Manager のアーキテクチャ
SAP Service Manager は、SAP BTP におけるサービスブローカーとプラットフォームの中央レジストリです。
主なリソース:
- プラットフォーム - アプリケーションが実行される OSBAPI 対応システム
- サービスブローカー - サービスカタログを提供する仲介者
- サービスインスタンス - 個々のサービスのインスタンス
- サービスバインディング - インスタンスへのアクセス認証情報
- サービスプラン - サービスが提供する機能のセット
- サービス提供項目 - ブローカーが提供するサービスの情報
Service Manager のプラン
| プラン | 目的 | スコープ |
|---|---|---|
| subaccount-admin | 全面的な管理 | 10 個のスコープ(管理+読み取り) |
| subaccount-audit | 読み取り専用の監視 | 6 個のスコープ |
| container | 分離された管理 | 7 個のスコープ |
ロール
- サブアカウントサービス管理者 - リソースに対するすべての CRUD 操作
- サブアカウントサービス閲覧者 - 読み取り専用アクセス(機能セット B)
Cloud Foundry の操作
サービスインスタンスとバインド
Cockpit 経由:Services > Instances > Create > サービス/プランを選択 > Cloud Foundry ランタイム
CF CLI 経由:
# Create instance
cf create-service <service> <plan> <instance-name>
# Bind to app
cf bind-service <app-name> <instance-name>
# Create service key (external access)
cf create-service-key <instance-name> <key-name>
Kubernetes の操作
前提条件
- kubectl v1.7 以降を備えた Kubernetes クラスター
- Helm v3.1.2 以降
- SMCTL v1.10.1 以降
サービスオペレーターのセットアップ
1. cert-manager をインストールします:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.0/cert-manager.yaml
2. Service Manager リソースを作成します:
smctl provision sm-operator service-manager service-operator-access --mode sync
smctl bind sm-operator sm-operator-binding --mode sync
smctl get-binding sm-operator-binding -o json
3. オペレーターをデプロイします:
helm repo add sap-btp-operator https://sap.github.io/sap-btp-service-operator/
helm install sap-btp-operator sap-btp-operator/sap-btp-operator \
--namespace sap-btp-operator --create-namespace \
--set manager.secret.clientid=<id> \
--set manager.secret.clientsecret=<secret>
リソースの作成
ServiceInstance:
apiVersion: services.cloud.sap.com/v1alpha1
kind: ServiceInstance
metadata:
name: my-service-instance
spec:
serviceOfferingName: <service-offering>
servicePlanName: <plan-name>
ServiceBinding:
apiVersion: services.cloud.sap.com/v1alpha1
kind: ServiceBinding
metadata:
name: my-binding
spec:
serviceInstanceName: my-service-instance
参考:完全なガイドについては、references/kubernetes-operator.md を参照してください。
BTP CLI の操作
統合 BTP CLI を使用する方法です。SMCTL の代替として利用できます。
# Create instance
btp create services/instance \
--subaccount <subaccount-id> \
--service <service-name> \
--plan <plan-id> \
--parameters '{"key":"value"}' \
--labels '{"env":["dev"]}'
# Get instance details
btp get services/instance <instance-id> \
--subaccount <subaccount-id> \
--show-parameters
# Create binding
btp create services/binding \
--subaccount <subaccount-id> \
--binding <binding-name> \
--service-instance <instance-id>
# Platform management
btp list services/platform --subaccount <id>
btp register services/platform --subaccount <id> --name <name> --type <type>
btp unregister services/platform <platform-id> --subaccount <id>
API の操作
OAuth2 トークンの取得
curl '<uaa_url>/oauth/token' -X POST \
-H 'Accept: application/json' \
-d 'grant_type=client_credentials&client_id=<clientid>&client_secret=<clientsecret>'
レスポンス:
{
"access_token": "<token>",
"token_type": "bearer",
"expires_in": 43199,
"scope": "<xsappname>.job.read <xsappname>.event.read"
}
API ベース URI
https://service-manager.cfapps.<region>.hana.ondemand.com/v1/
レート制限
以下の 3 つの同時適用されるレベルで制限されます。
- レベル 1:すべての API - 1 時間あたり 10,000 件、1 分あたり 1,000 件
- レベル 2:リソース固有 - 1 時間あたり 1,000~6,000 件
- レベル 3:インスタンス操作 - 1 時間あたり 50~6,000 件
制限を超えると、Retry-After ヘッダーとともに HTTP 429 が返されます。
フィルタリング
クエリパラメーター:
fieldQuery- リソース属性でフィルタリングlabelQuery- リソースラベルでフィルタリング- 演算子:
eq、ne、in、containsなど
参考:レート制限とフィルタリングの詳細については、references/rate-limiting-filtering.md を参照してください。
SMCTL コマンドリファレンス
主なコマンド
| カテゴリー | コマンド | 説明 |
|---|---|---|
| 認証 | login、logout | セッションの管理 |
| インスタンス | provision、deprovision、list-instances | サービスインスタンスのライフサイクル |
| バインド | bind、unbind、list-bindings | サービスバインドの管理 |
| ブローカー | register-broker、update-broker | サービスブローカーの操作 |
| プラットフォーム | register-platform、list-platforms | プラットフォームの登録 |
| マーケットプレイス | marketplace | サービスオファリングの参照 |
共通フラグ
--mode sync/async- 実行モード(デフォルト:async)-c, --parameters- JSON 設定-o, --output- 出力形式(json、yaml、text)-v, --verbose- 詳細な出力
参考:すべてのフラグと使用例を含む完全なコマンドリファレンスについては、references/smctl-commands.md を参照してください。
一般的な操作
非同期操作のステータス確認
# Get operation URL from provision/bind response
smctl status /v1/service_instances/<id>/operations/<op-id>
API:
GET /v1/{resourceType}/{resourceID}/operations/{operationID}
レスポンスの状態:in progress、succeeded、failed
サービスインスタンスの削除
前提条件:
- すべてのサービスバインドを削除する
- すべてのサービスキーを削除する
- インスタンスがアプリケーションにバインドされていないこと
# Force delete without confirmation
smctl deprovision my-instance -f
# Sync mode
smctl deprovision my-instance --mode sync
注:Kyma/Kubernetes インスタンスは BTP cockpit から削除できません。
管理者ロールの割り当て
- サブアカウント > Security > Trust Configuration > SAP ID Service に移動します
- ユーザーのメールアドレスを入力します
- Show Assignments > Add User をクリックします
- Role Collection を割り当て、"Subaccount Service Administrator" を選択します
トラブルシューティング
問題:マーケットプレイスにサービスが表示されない
確認項目:
- サブアカウントにサービスエンタイトルメントが追加されていますか?
- クォータが割り当てられていますか(エンタープライズアカウントの場合)?
- 正しいリージョンが選択されていますか?
問題:インスタンスの作成に失敗する
確認項目:
- 有効なプランが選択されていますか?
- パラメーターの JSON 構文は正しいですか?
- クォータを超過していませんか?
- 必要な依存関係はプロビジョニングされていますか?
デバッグ:
smctl get-instance <name> -o json
# Check "last_operation" for error details
問題:レート制限を超過した(HTTP 429)
解決方法:
Retry-Afterヘッダーを確認します- 指数バックオフを実装します
- 可能な場合は操作をバッチ処理します
- レスポンスのキャッシュを検討します
問題:バインドの認証情報がない
確認項目:
- バインドは正常に完了しましたか?
- 正しいバインド名を参照していますか?
- シークレットは作成されていますか(Kubernetes の場合)?
# SMCTL
smctl get-binding <name> -o json
# Kubernetes
kubectl get secrets <binding-name> -o yaml
問題:X.509 認証に失敗する
確認事項:
- 証明書の有効期限が切れていませんか?
- 証明書とキーのペアは正しいですか?
- 証明書チェーンは完全ですか?
- クライアント ID は証明書と一致していますか?
ベストプラクティス
1. スクリプトには同期モードを使用する
smctl provision my-instance service plan --mode sync
2. リソースにラベルを付ける
smctl provision my-instance service plan \
-c '{}' \
--labels '{"environment":"production","team":"platform"}'
3. 外部アクセスにはサービスキーを使用する
アプリにバインドする代わりに、外部クライアント用のサービスキーを作成します。
4. 再試行ロジックを実装する
非同期操作では、指数バックオフを使ってステータスをポーリングします。
5. 適切なプランを選択する
subaccount-admin:すべての管理操作subaccount-audit:読み取り専用の監視container:インスタンスごとに分離されたアクセス
6. 認証情報を保護する
- サービスキーを定期的にローテーションする
- 本番環境では X.509 を使用する
- 認証情報はシークレットマネージャーに保存する
同梱リソース
テンプレート(5 ファイル)
templates/ ディレクトリに、すぐに使えるテンプレートがあります:
- service-instance-cf.json - Cloud Foundry インスタンスのパラメーター
- service-binding-cf.json - Cloud Foundry バインディングのパラメーター
- service-instance-k8s.yaml - Kubernetes ServiceInstance CRD
- service-binding-k8s.yaml - Kubernetes ServiceBinding CRD
- oauth-token-request.sh - OAuth2 トークン取得スクリプト
リファレンスドキュメント(7 ファイル)
references/ ディレクトリに、詳細なドキュメントがあります:
- api-reference.md - API エンドポイント、操作、サンプルの完全な一覧
- smctl-commands.md - すべてのフラグと使用方法を含む SMCTL CLI の完全なリファレンス
- btp-cli-commands.md - BTP CLI コマンドの包括的なリファレンス
- kubernetes-operator.md - Service Operator のセットアップ、CRD、移行ガイド
- rate-limiting-filtering.md - レート制限、フィルタリング、ベストプラクティス
- roles-permissions.md - プラン、ロール、スコープ、認可の詳細
- service-catalog-legacy.md - 旧式の svcat とブローカープロキシのセットアップ(非推奨)
クイックリファレンステンプレート
公式ドキュメントへのリンク
主なリソース
- GitHub ドキュメント:https://github.com/SAP-docs/sap-btp-service-manager/tree/main/docs
- SAP Help Portal:https://help.sap.com/docs/service-manager
- SMCTL リリース:https://github.com/Peripli/service-manager-cli/releases
- Service Operator:https://github.com/SAP/sap-btp-service-operator
API ドキュメント
- Swagger UI:
https://service-manager.cfapps.<region>.hana.ondemand.com/swaggerui/swagger-ui.html - リージョン:https://help.sap.com/docs/btp/sap-business-technology-platform/regions-and-api-endpoints-available-for-cloud-foundry-environment
関連ドキュメント
- BTP Cockpit:https://cockpit.btp.cloud.sap/
- cert-manager:https://cert-manager.io/docs/installation/kubernetes/
- Kyma サービス:https://help.sap.com/docs/btp/sap-business-technology-platform/using-services-in-kyma-environment
Claude への指示
このスキルを使用する際は、次の手順に従ってください。
- 環境を特定する - Cloud Foundry、Kyma、Kubernetes、またはその他
- 適切なツールを選択する - SMCTL、BTP CLI、CF CLI、kubectl、または cockpit
- 適切な認証方式を使用する - OAuth2、X.509、または対話型
- レート制限を確認する - 一括操作では再試行ロジックを実装する
- 非同期処理の完了を確認する - プロビジョニング/バインド操作のステータスをポーリングする
- テンプレートを参照する - 一般的な操作には提供されているテンプレートを使用する
- リファレンスファイルを確認する - 詳細情報は references/ ディレクトリにあります
Cloud Foundry の場合:cf CLI または cockpit を使用します
Kubernetes の場合:ServiceInstance/ServiceBinding CRD を使用します
その他の環境の場合:SMCTL または BTP CLI を使用します
API アクセスの場合:最初に OAuth2 トークンを取得します
トラブルシューティングの際は、次の点を確認してください。
- 非同期処理の操作ステータスを確認する
- 認証情報と権限を確認する
- 429 エラーが発生する場合はレート制限を確認する
- 前提条件(エンタイトルメント、クォータ、依存関係)を確認する
ライセンス:GPL-3.0
バージョン:1.1.1
メンテナンス担当:Eduard Jiglau
メールアドレス:[email protected]
ウェブサイト:https://sap-ai-skills.com
リポジトリ:https://github.com/secondsky/sap-skills