本页将向您介绍并演示如何使用 Tencent Cloud SDK for Python 轻松实现无服务器云函数间调用
通常情况下,我们可能需要在一个无服务器云函数中依赖另一个或多个无服务器云函数。通过在无服务器云函数中集成并使用 Tencent Cloud SDK for Python,无服务器云函数间调用将非常易于实现。
在下文中我们将通过一个简单的应用场景向您进一步介绍并演示如何使用 Tencent Cloud SDK for Python 快速实现在无服务器云函数之间相互调用。
假定我们在数据中心 ap-shanghai
的命名空间 default
中拥有 2 个已创建就绪的无服务器云函数,其名称分别是 hello
和 addend
。这些无服务器云函数的配置如下:
在该场景中,我们要求在无服务器云函数 hello
中以友好且可供人类直接阅读的字符串返回一次加法运算的结果,其加法运算过程要求在无服务器云函数 addend
中实现。
在下文中,我们将通过几个步骤向您演示编写符合当前场景要求的代码示例:
addend
函数首先,我们需要先编写无服务器云函数 hello
的依赖函数 addend
的函数源代码:
在无服务器云函数 addend
中,我们尝试获取当前函数调用事件中的字段 value1
和 value2
的值,并将字段 value1
和 value2
的值相加后返回,期望相加值类型为整形。
hello
函数接着,我们需要编写依赖无服务器云函数 addend
的主函数 hello
的函数源代码:
首先我们需要在无服务器云函数 hello
中导入 Tencent Cloud SDK for Python 相关命名空间和模块:
接着我们需要为无服务器云函数 hello
编写入口函数。
在入口函数中我们将尝试使用 Tencent Cloud SDK for Python 所提供的无服务器云函数间调用功能调用无服务器云函数 addend
完成一次加法运算并获取结果:
在无服务器云函数 hello
中,我们尝试使用 Tencent Cloud SDK for Python 函数间调用功能调用无服务器云函数 addend
计算数值 10
和 20
的相加结果并以人类易读的描述性字符串返回。
如果无服务器云函数 addend
运行出错,则返回错误原因的描述性字符串。
请注意,无服务器云函数间调用仅支持已配置 运行角色 的无服务器云函数发起调用。
现在我们尝试运行无服务器云函数 hello
,如果一切正常其运行结果为:
在上文的演示代码中我们导入 Tencent Cloud SDK for Python 的无服务器云函数产品软件包,使用 functions.invoke
函数完成无服务器云函数之间相互调用的工作。
您或许已经注意到,无服务器云函数间调用的方式不需要您维护一个访问凭据和无服务器云函数产品客户端实例,这是因为 Tencent Cloud SDK for Python 的无服务器云函数间调用机制已代您维护一个有效的临时访问凭据和产品客户端实例。
当您初次使用 functions.invoke
或 functions.invoke_async
函数时,Tencent Cloud SDK for Python 会尝试在内部实例化一个无服务器云函数产品客户端并搜寻采用非持久环境凭据。
当无服务器云函数已配置具有有效访问权限的 运行角色 时,其函数在运行代码之前将自动申请并获得一个非持久性的临时访问凭据并将其存储在当前运行环境的环境变量中,这就是环境凭据的由来。
如果当前无服务器云函数已配置 运行角色,实例化通用或产品客户端时允许不提供访问凭据,此时 Tencent Cloud SDK for Python 将自动搜寻并采用环境凭据。
并且,函数 functions.invoke
或 functions.invoke_async
在内部将依赖无服务器云函数产品客户端的 easy_invoke
实例方法,其具有与依赖方法相同的行为和返回值。
请注意,使用无服务器云函数间调用方式调用的目标无服务器云函数必须与当前无服务器云函数所在数据中心相同,且命名空间为 default。
否则,您应该将参数 namespace_name 和 region_id 设置为有效值。
因此,无服务器云函数间调用机制并非真正地脱离无服务器云函数产品客户端,只是 Tencent Cloud SDK for Python 为开发者提供更佳便利的封装调用机制。
配置项
值
运行环境
Python 3.6
内存上限
64 MBytes
入口函数
index.main
运行角色
QCS_SCFExcuteRole