使用华为云SDK开发Python函数示例
华为云API Explorer工具提供各云服务的API参考文档及配套SDK代码示例。
本章节指导您使用华为云SDK,在函数工作流控制台开发Python函数。
步骤一:创建Python函数
- 登录函数工作流控制台,右上角单击“创建函数”。
- 创建一个空白的Python事件函数,建议选择较新的运行时版本,单击“立即创建”进入函数详情页。
- 在“代码”页签,下拉至“代码依赖包”模块,单击“添加依赖包”。
- 如图1所示,“依赖包源”选择“私有依赖包”,单击“创建依赖包”进入依赖包创建界面。
图1 选择依赖包
- 请参考华为云Python SDK和创建函数依赖包为函数创建所需的Python依赖包。
请注意,创建Python依赖包时需选择与Python函数相同的运行时版本。
- 完成依赖包创建后,回到4添加已创建的依赖包。
步骤二:通过APIE获取SDK代码示例
- 打开API Explorer,如图2所示选择所需的接口,单击“代码示例”页签,选择“Python”语言。
- 此处以“获取函数列表”为例,选择接口。
- 填写接口所需的参数,参数描述可参考API参考手册中的相应章节,本例可参考获取函数列表API。
- 复制APIE生成的代码,粘贴在步骤一:创建Python函数函数的代码编辑框中。
- 示例代码中的AK/SK信息建议配置在函数的环境变量中,并在代码中使用context.getUserData(string key)方法获取。
改写后的代码内容如下:
# -*- coding:utf-8 -*- import json import os from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkfunctiongraph.v2.region.functiongraph_region import FunctionGraphRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkfunctiongraph.v2 import * def handler (event, context): ak = context.getUserData("AK") sk = context.getUserData("SK") projectId = "project_id" credentials = BasicCredentials(ak, sk, projectId) client = FunctionGraphClient.new_builder() \ .with_credentials(credentials) \ .with_region(FunctionGraphRegion.value_of("cn-north-4")) \ .build() try: request = ListFunctionsRequest() request.marker = "marker" request.maxitems = "maxitems" request.package_name = "package_name" request.func_name = "func_name" response = client.list_functions(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) return { "statusCode": 200, "isBase64Encoded": False, "body": json.dumps(event), "headers": { "Content-Type": "application/json" } }
- (可选)如需使用更安全的鉴权方式,可将以下代码内容替换:
ak = context.getUserData("AK") sk = context.getUserData("SK") credentials = BasicCredentials(ak, sk, projectId)
替换为:
ak = context.getSecurityAccessKey() sk = context.getSecuritySecretKey() st = context.getSecurityToken() credentials = BasicCredentials(ak, sk, projectId).with_security_token(st)