FunctionGraph Function Creation & Invocation Skill
Overview
This skill manages FunctionGraph functions on Huawei Cloud, supporting creation with advanced configuration (VPC, environment variables) and function invocation (sync/async).
Architecture: Uses Huawei Cloud FunctionGraph Python SDK to interact with FunctionGraph service.
Applicable Scenarios:
- Quickly create cloud functions without manual console login
- Batch creation of multiple functions with VPC or environment variable configuration
- Foundation component for workflow deployment
- CI/CD integration for function deployment
- Invoke and test deployed functions
Typical Use Cases:
- "Create a Python function named my_handler"
- "Deploy this code to FunctionGraph with VPC configuration"
- "Create a function with environment variables"
- "Invoke the function I just created"
Prerequisites
1. Python Environment
- Python 3.9+
- Verify:
python --version
2. SDK Installation
pip install huaweicloudsdkfunctiongraph
3. Authentication Configuration
- Valid Huawei Cloud credentials (AK/SK mode)
- Configure via environment variables:
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"
Security Rules:
- NEVER expose AK/SK values in code or logs
- NEVER let users input AK/SK directly in conversation
- ALWAYS use environment variables for credentials
- Recommend using IAM user instead of main account
4. IAM Permission Requirements
functiongraph:function:create- Create functionfunctiongraph:function:get- Query function detailsfunctiongraph:function:list- List functionsfunctiongraph:function:invoke- Invoke function
See IAM Policies for detailed permission configuration.
Workflow
User Request → Parse Parameters → Validate Input
→ Create Function (with optional VPC/Env Vars) → Return Function URN
→ (Optional) Invoke Function → Return Invocation Result
Usage
Create a Function
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"}'
Invoke a Function
# Synchronous invocation (default)
python create_function.py invoke \
--function-urn urn:fg:cn-north-4:PROJECT_ID:function:my_function:latest \
--body '{"key1":"value1","source":"test"}'
# Asynchronous invocation
python create_function.py invoke \
--function-urn urn:fg:cn-north-4:PROJECT_ID:function: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:fg:cn-north-4:PROJECT_ID:function:my_function:latest \
--body '{"test":"data"}' \
--log-type tail
Parameter Confirmation
Create Parameters
| Parameter | Required/Optional | Description | Default |
|---|---|---|---|
--name |
Required | Function name, must follow naming rules | - |
--runtime |
Required | Runtime environment (Python3.9, etc.) | - |
--handler |
Required | Function entry point (e.g., index.handler) | - |
--code |
Required | Code file path or inline code content | - |
--memory |
Optional | Memory size in MB | 128 |
--timeout |
Optional | Timeout in seconds | 3 |
--description |
Optional | Function description | - |
--vpc-id |
Optional | VPC ID for VPC configuration | - |
--subnet-id |
Optional | Subnet ID for VPC configuration | - |
--security-group-id |
Optional | Security group ID for VPC configuration | - |
--env-vars |
Optional | Environment variables as JSON string | - |
Invoke Parameters
| Parameter | Required/Optional | Description | Default |
|---|---|---|---|
--function-urn |
Required | Function URN to invoke | - |
--body |
Optional | Event payload as JSON string | {} |
--invocation-type |
Optional | sync or async |
sync |
--log-type |
Optional | tail to return last 4KB log |
- |
Runtime Options
| Runtime | Handler Format | Example |
|---|---|---|
| Python3.9 | index.handler | def handler(event, context): |
| Node.js14.18 | index.handler | exports.handler = (event, context) => {} |
| Java8 | com.example.Handler::handleRequest | Java class method |
| Go1.x | handler | Go function name |
Verification Method
See Verification Method for detailed procedures.
Quick Verification
# 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)}")
Output Format
Create Output
The script returns a structured JSON object:
{
"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"
}
Invoke Output
{
"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"
}
Best Practices
- Test before production: Always test in a development environment first
- Monitor resources: Set up monitoring for function invocations and errors
- Use environment variables: Store sensitive data in environment variables
- Implement error handling: Add proper error handling in function code
- Set appropriate timeouts: Configure timeout based on function logic
- VPC for private resources: Use VPC configuration when functions need access to private network resources
Error Handling
| Error Code | Description | Resolution |
|---|---|---|
| InvalidParameter | Invalid input parameters | Check parameter format and values |
| InsufficientPermission | Insufficient permissions | Check IAM permissions |
| QuotaExceeded | Resource quota exceeded | Request quota increase or delete unused functions |
| FunctionAlreadyExists | Function with same name exists | Use different function name or delete existing function |
| FunctionNotFound | Function URN not found (invoke) | Verify the function URN is correct |
