mcpField
H
huawei-cloud-functiongraph-function-create

huawei-cloud-functiongraph-function-create

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

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

このスキルはHuawei Cloud FunctionGraph Python SDKを使って、クラウド関数を作成・実行します。関数をデプロイまたはテストする開発者向けで、VPCや環境変数の設定、同期・非同期実行に対応しています。

主な機能

  1. 01FunctionGraph関数の作成
  2. 02VPCと環境変数の設定
  3. 03同期・非同期での関数実行
  4. 04ランタイム、ハンドラー、コードの指定
  5. 05関数URNと実行結果の返却

活用シーン

  1. 01クラウド関数の迅速な作成
  2. 02VPC設定付き関数の一括デプロイ
  3. 03関数デプロイのCI/CDへの組み込み
  4. 04デプロイ済み関数の実行とテスト

インストール

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

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

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

同梱ファイル

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

references/
acceptance-criteria.md
iam-policies.md
sdk-installation-guide.md
verification-method.md
scripts/
create_function.py

詳細

FunctionGraph 関数の作成と呼び出しのスキル

概要

このスキルでは、Huawei Cloud 上の FunctionGraph 関数を管理し、高度な設定(VPC、環境変数)を指定した関数の作成と、関数の呼び出し(同期/非同期)をサポートします。

アーキテクチャ:Huawei Cloud FunctionGraph Python SDK を使用して、FunctionGraph サービスと連携します。

適用シナリオ:

  • コンソールに手動でログインせずに、クラウド関数をすばやく作成する
  • VPC や環境変数の設定を指定して、複数の関数を一括作成する
  • ワークフローのデプロイにおける基盤コンポーネント
  • 関数のデプロイを CI/CD と連携する
  • デプロイ済みの関数を呼び出してテストする

一般的な使用例:

  1. 「my_handler という名前の Python 関数を作成してください」
  2. 「このコードを VPC 設定とともに FunctionGraph にデプロイしてください」
  3. 「環境変数を設定した関数を作成してください」
  4. 「作成したばかりの関数を呼び出してください」

前提条件

1. Python 環境
  • Python 3.9+
  • 確認方法:python --version
2. SDK のインストール
pip install huaweicloudsdkfunctiongraph
3. 認証の設定
  • 有効な Huawei Cloud 認証情報(AK/SK 方式)
  • 環境変数で設定します:
export HUAWEI_AK="your-access-key"
export HUAWEI_SK="your-secret-key"
export HUAWEI_REGION="cn-north-4"
export HUAWEI_PROJECT_ID="your-project-id"

セキュリティ規則:

  • AK/SK の値をコードやログに絶対に公開しないでください
  • 会話中にユーザーが AK/SK を直接入力するよう絶対に促さないでください
  • 認証情報には必ず環境変数を使用してください
  • メインアカウントではなく IAM ユーザーを使用することを推奨します
4. IAM 権限の要件
  • functiongraph:function:create - 関数を作成する
  • functiongraph:function:get - 関数の詳細を照会する
  • functiongraph:function:list - 関数の一覧を取得する
  • functiongraph:function:invoke - 関数を呼び出す

詳細な権限設定については、IAM Policies を参照してください。

ワークフロー

User Request → Parse Parameters → Validate Input
  → Create Function (with optional VPC/Env Vars) → Return Function URN
  → (Optional) Invoke Function → Return Invocation Result

使用方法

関数を作成する
cd scripts

# Basic creation
python create_function.py create \
  --name my_function \
  --runtime Python3.9 \
  --handler index.handler \
  --code main.py

# With VPC configuration
python create_function.py create \
  --name my_function \
  --runtime Python3.9 \
  --handler index.handler \
  --code main.py \
  --vpc-id vpc-xxx \
  --subnet-id subnet-xxx \
  --security-group-id sg-xxx

# With environment variables
python create_function.py create \
  --name my_function \
  --runtime Python3.9 \
  --handler index.handler \
  --code main.py \
  --env-vars '{"DB_HOST":"localhost","DB_PORT":"3306"}'

# Full configuration
python create_function.py create \
  --name my_function \
  --runtime Python3.9 \
  --handler index.handler \
  --code main.py \
  --memory 256 \
  --timeout 30 \
  --description "My production function" \
  --vpc-id vpc-xxx \
  --subnet-id subnet-xxx \
  --security-group-id sg-xxx \
  --env-vars '{"DEBUG":"true","LOG_LEVEL":"info"}'
関数を呼び出す

注:関数の URN には、実際の FunctionGraph URN プレフィックス urn:fss: を使用します。 以下の例の PROJECT_ID は、実際のプロジェクト ID(HUAWEI_PROJECT_ID 環境変数と同じ値)に置き換えてください。 関数パッケージは default、バージョンは latest(または特定のバージョン/エイリアス)です。 create コマンドが返す URN をコピーし、呼び出し用に :latest を追加できます。

# Synchronous invocation (default)
python create_function.py invoke \
  --function-urn urn:fss:cn-north-4:PROJECT_ID:function:default:my_function:latest \
  --body '{"key1":"value1","source":"test"}'

# Asynchronous invocation
python create_function.py invoke \
  --function-urn urn:fss:cn-north-4:PROJECT_ID:function:default:my_function:latest \
  --body '{"async":true}' \
  --invocation-type async

# Invoke with log tail (returns last 4KB of log)
python create_function.py invoke \
  --function-urn urn:fss:cn-north-4:PROJECT_ID:function:default:my_function:latest \
  --body '{"test":"data"}' \
  --log-type tail

パラメーターの確認

作成パラメーター
パラメーター必須/任意説明デフォルト
--name必須関数名。命名規則に従う必要があります-
--runtime必須ランタイム環境(Python3.9 など)-
--handler必須関数のエントリーポイント(例:index.handler)-
--code必須コードファイルのパス、またはインラインコードの内容-
--memory任意メモリサイズ(MB)128
--timeout任意タイムアウト(秒)3
--description任意関数の説明-
--vpc-id任意VPC 設定用の VPC ID(--subnet-id および --security-group-id と同時に設定する必要があります)-
--subnet-id任意VPC 設定用のサブネット ID(--vpc-id および --security-group-id と同時に設定する必要があります)-
--security-group-id任意VPC 設定用のセキュリティグループ ID(--vpc-id および --subnet-id と同時に設定する必要があります)-
--env-vars任意JSON 文字列形式の環境変数-
呼び出しパラメーター
パラメーター必須/任意説明デフォルト
--function-urn必須呼び出す関数の URN-
--body任意JSON 文字列形式のイベントペイロード{}
--invocation-type任意sync または asyncsync
--log-type任意最後の 4KB のログを返す場合は tail-
ランタイムオプション
ランタイムハンドラー形式例
Python3.9index.handlerdef handler(event, context):
Node.js14.18index.handlerexports.handler = (event, context) => {}
Java8com.example.Handler::handleRequestJava クラスのメソッド
Go1.xhandlerGo 関数名

検証方法

詳しい手順については、検証方法を参照してください。

簡易検証
# Verify function exists using SDK

from huaweicloudsdkfunctiongraph.v2.functiongraph_client import FunctionGraphClient
from huaweicloudsdkfunctiongraph.v2.model import ListFunctionsRequest

# List functions to verify creation
client = FunctionGraphClient.new_builder().build()
request = ListFunctionsRequest()
response = client.list_functions(request)
print(f"Total functions: {len(response.functions)}")

出力形式

作成時の出力

スクリプトは、次のような構造化された JSON オブジェクトを返します。

{
  "status": "success",
  "function_urn": "urn:fss:cn-north-4:project_id:function:default:my_function",
  "function_name": "my_function",
  "runtime": "Python3.9",
  "memory_size": 128,
  "timeout": 3,
  "handler": "index.handler",
  "code_size": 1234,
  "message": "Function created successfully"
}
呼び出し時の出力
{
  "status": "success",
  "function_urn": "urn:fss:cn-north-4:project_id:function:default:my_function",
  "invocation_type": "sync",
  "result": {
    "output": "..."
  },
  "request_id": "a1b2c3d4-...",
  "message": "Function invoked successfully"
}

ベストプラクティス

  1. 本番環境に移行する前にテストする:まず開発環境で必ずテストしてください
  2. リソースを監視する:関数の呼び出しとエラーを監視するよう設定してください
  3. 環境変数を使用する:機密データは環境変数に保存してください
  4. エラー処理を実装する:関数コードに適切なエラー処理を追加してください
  5. 適切なタイムアウトを設定する:関数のロジックに基づいてタイムアウトを設定してください
  6. プライベートリソースには VPC を使用する:関数がプライベートネットワークリソースにアクセスする必要がある場合は、VPC 設定を使用してください

エラー処理

エラーコード説明解決方法
InvalidParameter入力パラメーターが無効ですパラメーターの形式と値を確認してください
InsufficientPermission権限が不足していますIAM 権限を確認してください
QuotaExceededリソースのクォータを超過しましたクォータの引き上げを申請するか、使用していない関数を削除してください
FunctionAlreadyExists同じ名前の関数が存在します別の関数名を使用するか、既存の関数を削除してください
FunctionNotFound関数の URN が見つかりません(呼び出し時)関数の URN が正しいことを確認してください

参考資料

コメント