mcpField
H
huawei-cloud-functiongraph-trigger-create

huawei-cloud-functiongraph-trigger-create

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

huawei-cloud-functiongraph-trigger-create について

huawei-cloud-functiongraph-trigger-create は、Huawei Cloud FunctionGraph の関数に TIMER トリガーを作成するスキルです。サーバーレス関数の実行予定を設定するユーザー向けで、Quartz Cron と固定間隔に対応し、API 呼び出し前に関数とパラメーターを検証します。

主な機能

  1. 01FunctionGraph TIMER トリガーの作成
  2. 02Quartz Cron と Rate によるスケジュール
  3. 03トリガー状態とイベントデータの設定
  4. 04作成前の関数・パラメーター検証
  5. 05結果とエラーの JSON 出力

活用シーン

  1. 01定期的なデータ処理の実行
  2. 02関数によるバックアップの予約
  3. 03監視とヘルスチェックの定期実行
  4. 04時間指定通知の設定

インストール

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

$npx skills add https://github.com/huaweicloud/huaweicloud-skills --skill huawei-cloud-functiongraph-trigger-create

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

同梱ファイル

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

references/
acceptance-criteria.md
cron-reference.md
iam-policies.md
sdk-installation-guide.md
verification-method.md
scripts/
create_trigger.py
simple_timer_func.py
timer_func_code.py

詳細

概要

このスキルでは、Huawei Cloud FunctionGraph の関数に対するスケジュール済みトリガー(TIMER タイプ)を作成、設定できます。柔軟なスケジュール設定のために、Quartz Cron 式の形式をサポートしています。

このトリガーを使用すると、指定した時間間隔でサーバーレス関数を自動実行できます。以下の用途に最適です。

  • 定期的なデータ処理タスク
  • スケジュールされたバックアップ処理
  • 定期的な監視とヘルスチェック
  • 時刻に基づく通知システム

前提条件

このスキルを使用する前に、以下の要件を満たしていることを確認してください。

  1. Python 環境:Python 3.9 以降がインストールされていること
  2. SDK のインストール:FunctionGraph SDK をインストールします:pip install huaweicloudsdkfunctiongraph
  3. 環境変数:以下の環境変数を設定します。
    • HUAWEI_AK:Huawei Cloud のアクセスキー
    • HUAWEI_SK:Huawei Cloud のシークレットキー
    • HUAWEI_REGION:対象リージョン(例:cn-north-4)
    • HUAWEI_PROJECT_ID:プロジェクト ID
  4. FunctionGraph 関数:対象の関数が指定したリージョンにすでに存在していること
  5. ネットワークアクセス:Huawei Cloud API エンドポイントへの安定したネットワーク接続

ワークフロー(工作流)

スケジュール済みの TIMER トリガーを作成する全ワークフローは、以下の手順で構成されます。

手順 1:環境変数を読み込み、認証します(加载环境变量/鉴权)

スクリプトは起動時に以下の環境変数を読み込みます。

  • HUAWEI_AK:Huawei Cloud のアクセスキー(必須)
  • HUAWEI_SK:Huawei Cloud のシークレットキー(必須)
  • HUAWEI_REGION:対象リージョン。デフォルトは cn-north-4 です
  • HUAWEI_PROJECT_ID:プロジェクト ID

HUAWEI_AK または HUAWEI_SK が設定されていない場合、スクリプトは Config error: Please set environment variables HUAWEI_AK and HUAWEI_SK を出力し、API を呼び出す前に終了します。

手順 2:対象の関数 URN を確認します(确认 function_urn)

--function-urn を使って対象の関数 URN を渡します。例:urn:fss:cn-north-4:project_id:function:default:my-function:latest。トリガーを作成する前に、スクリプトは ShowFunctionConfig を呼び出して関数が存在することを確認します。関数が見つからない場合は FunctionNotFound を返し、何も作成せずに終了します。

手順 3:トリガーの設定を確認します(确认触发配置)

トリガーのパラメーターを確認します(パラメーターの確認を参照)。

  • --name:トリガー名。1~64 文字
  • --schedule:Cron の場合は Quartz Cron 式(6~7 フィールド)、Rate の場合は 5m のようなレート値
  • --schedule-type:Cron(デフォルト)または Rate
  • --status:ACTIVE(デフォルト)または DISABLED
  • --user-event:追加のユーザーイベントデータ(任意)

スクリプトは API を呼び出す前に、すべてのパラメーター(必須フィールド、Cron の構文、名前の長さ、ステータス値)を検証します。

手順 4:作成スクリプトを実行します(执行 create_trigger.py)

スキルのディレクトリから実行します。

python3 scripts/create_trigger.py \
    --function-urn "urn:fss:cn-north-4:project_id:function:default:my-function:latest" \
    --name "daily-trigger" \
    --schedule "0 0 2 * * ?" \
    --schedule-type "Cron" \
    --status "ACTIVE"

手順 5:結果を確認します(验证结果)

  • 成功すると、作成された trigger_id、trigger_name、trigger_type(TIMER)、schedule、enable_status を含む、status: "success" の JSON レスポンスがスクリプトから出力されます。
  • 失敗すると、error_code(InvalidParameter、FunctionNotFound、TriggerAlreadyExists、TriggerLimitExceeded、InternalError)を含む status: "failed" が出力され、ゼロ以外のコードで終了します。該当するパラメーターを修正して、スクリプトを再実行してください。
  • FunctionGraph コンソールでも結果を確認できます。Function details → Triggers タブに、新しい TIMER トリガーが Active ステータスで表示されます。

使用方法

基本的なコマンド構造

python3 scripts/create_trigger.py \
    --function-urn "urn:fss:cn-north-4:project_id:function:default:my-function:latest" \
    --name "daily-trigger" \
    --schedule "0 0 2 * * ?" \
    --schedule-type "Cron" \
    --status "ACTIVE"

例

Cron 式のトリガー
python3 scripts/create_trigger.py \
    --function-urn "urn:fss:cn-north-4:project_id:function:default:my-function:latest" \
    --name "hourly-report" \
    --schedule "0 0 8 * * ?" \
    --schedule-type "Cron"
固定レートのトリガー
python3 scripts/create_trigger.py \
    --function-urn "urn:fss:cn-north-4:project_id:function:default:my-function:latest" \
    --name "every-5min" \
    --schedule "5m" \
    --schedule-type "Rate"

Cron 式の形式

FunctionGraph では、6 または 7 フィールドの Quartz Cron 形式を使用します(7 番目のフィールドである year は省略可能です)。

┌───────────── second (0-59)
│ ┌───────────── minute (0-59)
│ │ ┌───────────── hour (0-23)
│ │ │ ┌───────────── day of month (1-31)
│ │ │ │ ┌───────────── month (1-12)
│ │ │ │ │ ┌───────────── day of week (1-7, 1=Sunday)
│ │ │ │ │ │ ┌───────────── year (optional, e.g. 2026)
│ │ │ │ │ │ │
* * * * * ? *

特殊文字や一般的な例を含む Cron 式の詳しいリファレンスについては、Cron 式のリファレンスを参照してください。

パラメーターの確認

トリガーを作成する前に、以下のパラメーターを確認してください。

パラメーターCLI 引数必須説明例
function_urn--function-urnはい対象の関数 URNurn:fss:cn-north-4:xxx:function:default:my-func:latest
trigger_name--nameはいトリガー名(1~64 文字)daily-trigger
schedule--scheduleはいCron 式または Rate 値0 0 2 * * ? または 5m
schedule_type--schedule-typeいいえCron(デフォルト)または RateCron
enable_status--statusいいえACTIVE(デフォルト)または DISABLEDACTIVE
user_event--user-eventいいえ追加のユーザーイベントデータoptional info

確認チェックリスト

  • 関数 URN が正しく、関数が存在する
  • Cron 式が検証済みである
  • トリガー名が命名規則に従っている
  • IAM 権限が十分である
  • リージョンが関数の場所と一致している

出力形式

成功応答

{
    "status": "success",
    "trigger_id": "timer-xxx-xxx-xxx",
    "trigger_name": "daily-trigger",
    "trigger_type": "TIMER",
    "schedule": "0 0 2 * * ?",
    "enable_status": "ACTIVE",
    "message": "Trigger created successfully"
}

エラー応答

{
    "status": "failed",
    "error_code": "TriggerAlreadyExists",
    "message": "Trigger with the same name already exists"
}

エラーコードとトラブルシューティングの詳細については、Cron 式リファレンスを参照してください。

検証方法

トリガーの作成後、設定を検証してください。

1. 関数トリガーの一覧表示

FunctionGraph コンソール → 関数の詳細 → トリガータブに移動して、すべてのトリガーを表示します

2. トリガーの詳細確認

FunctionGraph コンソール → 関数の詳細 → トリガー → トリガーの詳細を表示に移動します

3. トリガー実行の監視

FunctionGraph コンソール → 関数の詳細 → トリガー → 実行履歴を表示に移動します

期待される指標:

  • トリガーのステータス:アクティブ
  • 次回の実行時刻:正しく計算されている
  • 実行履歴:失敗した呼び出しがない

ベストプラクティス

Cron 式のベストプラクティス

  1. 頻繁な実行を避ける:必要な場合を除き、5 分以上の間隔を使用します
  2. タイムゾーンを考慮する:FunctionGraph はデフォルトで UTC を使用します
  3. 未使用の日付フィールドには ? を使用する:月内の日付または曜日のどちらかに ? を使用します
  4. 作成前に検証する:オンラインの Cron 検証ツールで式をテストします

命名規則

  • わかりやすい名前を使用します:daily-data-sync、hourly-health-check
  • 次のパターンに従います:[頻度]-[目的]
  • 最大 64 文字です
  • 小文字とハイフンを使用します

セキュリティに関する考慮事項

  1. 最小権限:必要最小限の IAM 権限を付与します
  2. 暗号化を有効にする:機密性の高い関数入力には KMS を使用します
  3. 実行を監視する:失敗を検知するために Cloud Eye アラームを設定します
  4. レート制限:適切な再試行パラメーターを設定します

運用上の推奨事項

  1. テスト時は、まずステータスを無効にします
  2. 説明フィールドにトリガーの目的を記載します
  3. 一時的な失敗に備えて適切な再試行を設定します
  4. 有効化後、最初の実行を監視します

参考ドキュメント

詳細については、以下を参照してください。

重要な注意事項

互換性に関する注意事項

このスキルは Huawei Cloud FunctionGraph API で動作するように設計されています。tags フィールドは、スキルの検索と分類に役立ちます。

制限事項

  1. トリガーの最大数:各関数でデフォルトでサポートされるトリガーは最大 10 個です
  2. Cron の精度:秒単位のスケジュールでは、わずかな遅延が発生する場合があります
  3. タイムアウトの処理:関数のタイムアウトはトリガーの間隔より短くする必要があります
  4. コールドスタート:初回の実行では、追加の遅延が発生する場合があります

コストへの影響

  • トリガーの設定に追加料金はかかりません
  • 関数の実行には呼び出しごとに課金されます
  • コストを最適化するため、実行頻度を考慮してください

よくある落とし穴

  1. タイムゾーンの誤り:FunctionGraph は UTC を使用することにご注意ください。
  2. スケジュールの重複:複数のトリガーにより、同時実行が発生する場合があります。
  3. 実行時間の長い関数:次のトリガーが実行される前に関数が完了するようにしてください。
  4. Cron 構文エラー:デプロイ前に式の形式を検証してください。

トラブルシューティングとエラーコードについては、Cron 式のリファレンスを参照してください。


関連スキル:

  • huawei-cloud-functiongraph-function-create
  • huawei-cloud-functiongraph-deploy

コメント