sap-btp-job-scheduling について
SAP BTP Job Scheduling Service 向けのガイドスキルです。開発者によるジョブ、スケジュール、セキュリティの設定を支援し、REST API、Node.js クライアント、トラブルシューティング資料を提供します。
主な機能
- 01ジョブとスケジュールの作成・管理
- 02単発および定期スケジュールへの対応
- 03Cron、日時、自然言語形式の利用
- 04OAuth 2.0 と XSUAA のセキュリティ設定
- 05非同期ジョブ実行のガイダンス
- 06REST API と Node.js クライアントの資料
活用シーン
- 01Cloud Foundry または Kyma でスケジューリングサービスを設定
- 02マイクロサービスの定期タスクや単発タスクを設定
- 03ジョブのアクションエンドポイントを保護
- 04スケジュール失敗やサービス動作の調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ secondsky/ sap-skills --skill sap-btp-job-schedulingインストール後、Claude Code で/sap-btp-job-schedulingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdagents/openai.yamlreferences/changelog.mdconcepts.mdintegrations.mdoperations.mdrest-api.mdsecurity.mdsetup-guide.mdtroubleshooting.mdtemplates/job-creation.jsonxs-security.json詳細
SAP BTP Job Scheduling Service
関連スキル
- sap-dependency-security:ジョブスケジューリングマイクロサービスが npm/CLI の依存関係スタックを管理する際に、依存関係とワークフローを安全に強化するために使用します
目次
- 概要
- このスキルを使用するタイミング
- クイック判断ツリー
- 主な概念
- サービスの制約
- クイックリファレンステーブル
- ベストプラクティス
- 認証クイックスタート
- ジョブの作成例
- Node.js クライアントライブラリ
- レート制限
- サービスの動作
- 同梱リソース
- よくある落とし穴
- 外部リソース
- 更新とメンテナンス
概要
SAP Job Scheduling Service は、SAP BTP 上で単発および定期的なジョブや Cloud Foundry タスクを定義・管理するための、ランタイムに依存しないプラットフォームサービスです。アプリケーションを変更することなく、複数のハイパースケーラー(AWS、Azure、GCP)で動作します。
ドキュメントソース:https://help.sap.com/docs/job-scheduling
最終確認日:2025-11-27
このスキルを使用するタイミング
以下の場合にこのスキルを使用します。
- Cloud Foundry または Kyma ランタイムで Job Scheduling Service をセットアップする
- REST API またはダッシュボードを使用して ジョブを作成・管理する
- cron、日付/時刻、または人が読みやすい形式で スケジュールを設定する
- 長時間実行されるプロセス向けに 非同期ジョブの実行を実装する
- OAuth 2.0 と XSUAA を使用して アクションエンドポイントを保護する
- SAP Cloud ALM または Alert Notification Service と 連携する
- テナントを考慮したジョブスケジューリングで マルチテナントアプリケーションを開発する
- ジョブ実行の問題やスケジュールの失敗をトラブルシューティングする
- Node.js クライアントライブラリ(@sap/jobs-client)を 使用する
クイック判断ツリー
どのタスクですか?
Setup & Configuration
├─ Initial setup prerequisites → references/setup-guide.md
├─ Create service instance
│ ├─ BTP Cockpit → references/setup-guide.md#cockpit
│ ├─ CF CLI → references/setup-guide.md#cf-cli
│ └─ Kyma Dashboard → references/setup-guide.md#kyma
└─ Configure XSUAA scopes → references/security.md
Job Management
├─ Create jobs → references/rest-api.md#create-job
├─ Configure schedules → references/rest-api.md#schedules
├─ Run logs & monitoring → references/rest-api.md#run-logs
└─ Dashboard operations → references/operations.md#dashboard
Schedule Configuration
├─ One-time vs recurring → references/concepts.md#schedule-types
├─ Cron format → references/concepts.md#cron-format
├─ Date/time formats → references/concepts.md#date-formats
└─ Human-readable → references/concepts.md#human-readable
Asynchronous Execution
├─ Async mode flow → references/concepts.md#async-mode
├─ Callback implementation → references/rest-api.md#update-run-log
└─ CF tasks → references/concepts.md#cf-tasks
Security & Authentication
├─ OAuth 2.0 setup → references/security.md#oauth
├─ XSUAA configuration → references/security.md#xsuaa
└─ Credential rotation → references/security.md#rotation
Integrations
├─ SAP Cloud ALM → references/integrations.md#cloud-alm
└─ Alert Notification → references/integrations.md#alert-notification
Troubleshooting
├─ Common errors → references/troubleshooting.md#errors
├─ FAQ → references/troubleshooting.md#faq
└─ Support: BC-CP-CF-JBS
Version History & Updates
└─ What's New (2021-2025) → references/changelog.md
主な概念
ジョブ
アクションエンドポイントを含むスケジュールの集合です。ジョブは、指定された時刻に設定済みの URL を同期的に(短時間の操作)または非同期的に(長時間のプロセス)呼び出します。
スケジュール
ジョブ内の単発または定期的なエンティティです。複数の形式(cron、日付/時刻、人が読みやすい形式)をサポートし、3 つのライフサイクル状態があります:SCHEDULED → RUNNING → COMPLETED。
アクションエンドポイント
スケジュールの起動時にサービスが呼び出す、アプリケーションが公開する HTTP/REST エンドポイントです。本番環境では OAuth 2.0 による保護が必要です。
Cloud Foundry タスク
独自のコンテナ内で独立して実行されるアプリまたはスクリプトです。設定可能なメモリ割り当てを使用して、常に非同期で実行されます。
サービスの制約
| 制約 | 値 |
|---|---|
| スケジュールの最小間隔 | 5 分 |
| 同期リクエストのタイムアウト | 15 秒 |
| 非同期タイムアウト(デフォルト) | 30 分(最大 7 日まで設定可能) |
| POST リクエストの本文サイズ制限 | 100 KB |
| 実行ログの保持期間 | 15 日 |
| サービス SLA | スケジュール時刻から約 20 分 |
クイックリファレンステーブル
スケジュール形式
| 形式 | 例 | ユースケース |
|---|---|---|
| Cron | * * * * 10:12 0,30 0 | 10:00~12:00の間、30分ごと |
| 日付/時刻 | 2025-10-20T04:30:00Z | ISO-8601形式の1回限りの実行 |
| 人間が読める形式 | tomorrow at 4pm | 自然言語によるスケジュール設定 |
| repeatInterval | 2 hours, 5 minutes | 固定間隔で繰り返し |
| repeatAt | 4.40pm, 18:40 | 毎日、指定時刻に実行 |
Cron形式(7フィールド)
Year Month Day DayOfWeek Hour Minute Second
* * * * * * *
| フィールド | 値 | 特殊形式 |
|---|---|---|
| 年 | 4桁(2025) | * = 任意 |
| 月 | 1~12 | */a = aごと |
| 日 | -31~31 | 負の値 = 月末から数える |
| 曜日 | mon、tue、wed... | a.y = a回目 |
| 時 | 0~23 | a:b = 範囲 |
| 分 | 0~59 | a:b/c = 範囲内の間隔 |
| 秒 | 0~59 | a,b,c = 複数の値 |
スケジュールのライフサイクル状態
| フェーズ | 状態 | 説明 |
|---|---|---|
| SCHEDULED | SCHEDULED | 将来の実行に向けてキューに登録済み |
| RUNNING | TRIGGERED, ACK_RECVD, ACK_NOT_RECVD | 実行中 |
| COMPLETED | SUCCESS, ERROR, REQUEST_ERROR, UNKNOWN | 完了 |
ジョブのHTTPメソッド
| メソッド | エンドポイント | 目的 |
|---|---|---|
| POST | /scheduler/jobs | ジョブを作成 |
| GET | /scheduler/jobs | すべてのジョブを一覧表示 |
| GET | /scheduler/jobs/{id} | ジョブの詳細を取得 |
| PUT | /scheduler/jobs/{id} | ジョブを更新 |
| DELETE | /scheduler/jobs/{id} | ジョブを削除 |
ベストプラクティス
スケジュールの最適化
ピーク時間を避ける:
- ❌ 毎分の0秒または30秒
- ❌ 0分、30分、または5分ごと
- ❌ 毎時ちょうど
- ❌ UTCの午前0時(最も混雑する時間)
不規則な時刻を使用する:
- ✅
01:00:00ではなく01:12:17 - ✅
01:30:00ではなく01:38:37
非同期ジョブ
- 202 Acceptedをすぐに返す - リクエストをブロックしないでください
- リクエストヘッダーを保存する -
x-sap-job-id、x-sap-job-schedule-id、x-sap-job-run-id、x-sap-scheduler-host - 完了時に実行ログを更新する - 最終ステータスを指定した単一のAPI呼び出し
- タイムアウトを処理する - デフォルトは30分で、最大7日まで設定可能
1回限りのスケジュール
- テスト/検証にのみ使用する
- 実行後、自動的に無効化される
- 即時実行には
"time": "now"を使用する
認証のクイックスタート
Standardプラン(OAuth 2.0)
# Get access token
curl -X POST "<uaa_url>/oauth/token" \
-H "Authorization: Basic $(echo -n '<clientid>:<clientsecret>' | base64)" \
-d "grant_type=client_credentials"
# Use token in API calls
curl -X GET "https://jobscheduler-rest.<landscape>/scheduler/jobs" \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json"
xs-security.jsonの設定
{
"xsappname": "<app-name>",
"scopes": [{
"name": "$XSAPPNAME.JOBSCHEDULER",
"description": "Job Scheduler Scope",
"grant-as-authority-to-apps": ["$XSSERVICENAME(<jobscheduler-instance>)"]
}]
}
ジョブ作成の例
POST /scheduler/jobs
{
"name": "myJob",
"description": "Process daily reports",
"action": "https://myapp.cfapps.eu10.hana.ondemand.com/api/process",
"active": true,
"httpMethod": "POST",
"schedules": [{
"active": true,
"description": "Daily at 6 AM",
"repeatAt": "6.00am",
"startTime": {"date": "2025-01-01", "format": "YYYY-MM-DD"}
}]
}
Node.jsクライアントライブラリ
要件:Node.js 14.x以降
npm install @sap/[email protected]
const JobSchedulerClient = require('@sap/jobs-client');
const scheduler = new JobSchedulerClient.Scheduler();
// Create job
scheduler.createJob({ url: vcapServices.jobscheduler[0].credentials.url }, {
name: 'myJob',
action: 'https://myapp.../process',
active: true,
httpMethod: 'GET',
schedules: [{ cron: '* * * * 0 0 0', active: true }]
}, (err, result) => { /* handle */ });
レート制限
| 制限の種類 | 応答コード | ヘッダー |
|---|---|---|
| クライアントの上限を超過 | 429 | retry-after(秒) |
| 絶対上限を超過 | 503 | throttling(ミリ秒) |
制限は累積し、両方が同時に適用される場合があります。
サービスの動作
障害からの復旧
| 障害時間 | 動作 |
|---|---|
| < 20分 | 実行されなかったすべての処理を直ちに実行 |
| >= 20分 | 最後に実行されなかった処理のみ実行 |
自動無効化のトリガー
- 1回限りのスケジュールが実行された
- 有効な将来の日付が存在しない
- ジョブ/スケジュールのendTimeに到達した
- アクションエンドポイントに10日以上接続できない
参考ファイル
詳細ガイド
- references/concepts.md - スケジュールの種類、形式、ライフサイクル、非同期モード、マルチテナンシー
- references/rest-api.md - すべてのエンドポイントを網羅したREST APIリファレンス
- references/setup-guide.md - 前提条件、サービスインスタンスの作成
- references/security.md - OAuth 2.0、XSUAAスコープ、認証情報のローテーション
- references/integrations.md - Cloud ALM、Alert Notification Service
- references/troubleshooting.md - FAQ、エラーのシナリオ、モニタリング
- references/operations.md - ダッシュボード、バックアップ/復元、サービスの動作
- references/changelog.md - バージョン履歴、機能の更新(2021~2025)
利用可能なテンプレート
- templates/job-creation.json - ジョブ作成リクエストのテンプレート
- templates/xs-security.json - XSUAA設定のテンプレート
よくある落とし穴
セットアップ:
- ❌ Job Scheduling のバインドより前に XSUAA のバインドを設定していない
- ❌
grant-as-authority-to-appsを使ってスコープを付与していない - ❌ アクションエンドポイントに HTTPS ではなく HTTP を使用している
スケジュール設定:
- ❌ Linux の cron 形式を使用している(サービスでは SAP cron を使用します)
- ❌ ピーク時間(00:00、00:30 など)にスケジュールを設定している
- ❌ タイムゾーンが UTC であることを忘れている(サポートされるのは UTC のみです)
非同期ジョブ:
- ❌ 直ちに 202 Accepted を返していない
- ❌ Update Run Log API の呼び出しを忘れている
- ❌ 最終更新を 1 回だけ行わず、複数回ステータスを更新している
マルチテナント:
- ❌ SaaS テナントトークンで
tenantIdフィルターを使用している(400 が返されます) - ❌ アプリケーションの依存関係に Job Scheduling を含めていない
外部リソース
SAP ドキュメント
- SAP Help Portal:https://help.sap.com/docs/job-scheduling
- SAP Developer Center:https://developers.sap.com/
サポート
- コンポーネント:BC-CP-CF-JBS
- SAP Trust Center:プラットフォームのステータスを確認できます
- Guided Answers:セルフサービスでトラブルシューティングできます
更新とメンテナンス
情報源:SAP BTP Job Scheduling Service のドキュメント
このスキルを更新するには:
- GitHub リポジトリでドキュメントの更新を確認します
- What's New セクションで変更点を確認します
- 影響を受ける参照ファイルを更新します
- 設定に変更があった場合はテンプレートを更新します
- 「Last Verified」の日付を更新します
四半期ごとのレビューを推奨:3 か月ごとに更新を確認します
次回のレビュー:2026-02-27
同梱リソース
参照ファイル
- references/concepts.md - スケジュールの種類、形式、ライフサイクル、非同期モード、マルチテナント(12K 行)
- references/rest-api.md - すべてのエンドポイントを網羅した REST API リファレンス(20K 行)
- references/setup-guide.md - 前提条件、サービスインスタンスの作成(9K 行)
- references/security.md - OAuth 2.0、XSUAA スコープ、認証情報のローテーション(11K 行)
- references/integrations.md - Cloud ALM、Alert Notification Service(8K 行)
- references/troubleshooting.md - FAQ、エラーシナリオ、モニタリング(9K 行)
- references/operations.md - ダッシュボード、バックアップ/復元、サービスの動作(8K 行)
- references/changelog.md - バージョン履歴、機能の更新(2021-2025)(9K 行)
テンプレート
- templates/job-creation.json - 例を含むジョブ作成リクエストのテンプレート
- templates/xs-security.json - OAuth スコープ用の XSUAA 設定テンプレート
ライセンス:GPL-3.0 メンテナー:Eduard Jiglau | [email protected] | sap-ai-skills.com | https://github.com/secondsky/sap-skills