如何在action内部调用其他action?相关示例及实现方法咨询
Action调用相关问题解答
1. Action内部调用其他Action的示例
主流无服务器平台均支持在Action内部调用同租户/命名空间下的其他Action,相比外部调用不需要走公网,时延更低、权限默认继承也更安全。
以下是Node.js runtime下的调用示例:
// 平台会自动注入SDK实例和当前上下文参数,不需要手动初始化鉴权 const main = async (params) => { // 调用同命名空间下名为anotherAction的Action const invokeRes = await ow.actions.invoke({ name: "anotherAction", // 传入给被调用Action的参数 params: { payload: params.rawData, timestamp: Date.now() }, // blocking设为true为同步调用,等待被调用Action返回结果;设为false为异步触发,不需要等待返回 blocking: true }) return { code: 200, data: invokeRes.response.result } }
其他语言runtime的逻辑一致,引入对应平台的官方SDK,调用内置的Action调用方法即可。
2. 编程调用Action的入手路径
- 优先使用对应平台的官方SDK:SDK已经封装了签名、鉴权、重试、异常处理等逻辑,只需要传入Action名称、调用参数、调用模式即可完成调用,开发成本最低。
- 如果有自定义场景无法使用SDK,再选择直接调用REST API实现。
- 调用前需要确认当前账号/进程持有对应Action的调用权限,避免出现权限拒绝错误。
3. REST API调用说明
所有Action操作都可以通过REST API实现,通用的调用请求结构如下:POST /api/v1/namespaces/{你的命名空间名称}/actions/{目标Action名称}?blocking=true&result=true
api-host规则
api-host是对应平台的服务接入地址,不同部署场景取值不同:
- 私有化部署场景:就是你部署平台时配置的API网关域名,或者IP+端口
- 公有云服务场景:对应云厂商的官方无服务器服务接入域名,直接使用平台提供的固定值即可
调用时需要在请求头携带Authorization: Bearer {你的账号认证令牌},请求体为JSON格式的传入参数。
内容的提问来源于stack exchange,提问作者Philippe Tjon-A-Hen
相关产品推荐
相关产品推荐

