huawei-cloud-functiongraph-function-create
huawei-cloud-functiongraph-function-create について
このスキルはHuawei Cloud FunctionGraph Python SDKを使って、クラウド関数を作成・実行します。関数をデプロイまたはテストする開発者向けで、VPCや環境変数の設定、同期・非同期実行に対応しています。
主な機能
- 01FunctionGraph関数の作成
- 02VPCと環境変数の設定
- 03同期・非同期での関数実行
- 04ランタイム、ハンドラー、コードの指定
- 05関数URNと実行結果の返却
活用シーン
- 01クラウド関数の迅速な作成
- 02VPC設定付き関数の一括デプロイ
- 03関数デプロイのCI/CDへの組み込み
- 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.mdiam-policies.mdsdk-installation-guide.mdverification-method.mdscripts/create_function.py詳細
FunctionGraph 関数の作成と呼び出しのスキル
概要
このスキルでは、Huawei Cloud 上の FunctionGraph 関数を管理し、高度な設定(VPC、環境変数)を指定した関数の作成と、関数の呼び出し(同期/非同期)をサポートします。
アーキテクチャ:Huawei Cloud FunctionGraph Python SDK を使用して、FunctionGraph サービスと連携します。
適用シナリオ:
- コンソールに手動でログインせずに、クラウド関数をすばやく作成する
- VPC や環境変数の設定を指定して、複数の関数を一括作成する
- ワークフローのデプロイにおける基盤コンポーネント
- 関数のデプロイを CI/CD と連携する
- デプロイ済みの関数を呼び出してテストする
一般的な使用例:
- 「my_handler という名前の Python 関数を作成してください」
- 「このコードを VPC 設定とともに FunctionGraph にデプロイしてください」
- 「環境変数を設定した関数を作成してください」
- 「作成したばかりの関数を呼び出してください」
前提条件
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 または async | sync |
--log-type | 任意 | 最後の 4KB のログを返す場合は tail | - |
ランタイムオプション
| ランタイム | ハンドラー形式 | 例 |
|---|---|---|
| Python3.9 | index.handler | def handler(event, context): |
| Node.js14.18 | index.handler | exports.handler = (event, context) => {} |
| Java8 | com.example.Handler::handleRequest | Java クラスのメソッド |
| Go1.x | handler | Go 関数名 |
検証方法
詳しい手順については、検証方法を参照してください。
簡易検証
# 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"
}
ベストプラクティス
- 本番環境に移行する前にテストする:まず開発環境で必ずテストしてください
- リソースを監視する:関数の呼び出しとエラーを監視するよう設定してください
- 環境変数を使用する:機密データは環境変数に保存してください
- エラー処理を実装する:関数コードに適切なエラー処理を追加してください
- 適切なタイムアウトを設定する:関数のロジックに基づいてタイムアウトを設定してください
- プライベートリソースには VPC を使用する:関数がプライベートネットワークリソースにアクセスする必要がある場合は、VPC 設定を使用してください
エラー処理
| エラーコード | 説明 | 解決方法 |
|---|---|---|
| InvalidParameter | 入力パラメーターが無効です | パラメーターの形式と値を確認してください |
| InsufficientPermission | 権限が不足しています | IAM 権限を確認してください |
| QuotaExceeded | リソースのクォータを超過しました | クォータの引き上げを申請するか、使用していない関数を削除してください |
| FunctionAlreadyExists | 同じ名前の関数が存在します | 別の関数名を使用するか、既存の関数を削除してください |
| FunctionNotFound | 関数の URN が見つかりません(呼び出し時) | 関数の URN が正しいことを確認してください |