
ToolJet AWS Lambda 插件接入指南连接配置、Invoke 查询与源码实现解析【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet导读本文围绕 ToolJet 开源仓库中 AWS Lambda 插件aws-lambda的官方文档展开完整讲解如何在 ToolJet 中创建 AWS Lambda 数据源、配置 IAM 凭证并编写 Invoke Lambda Function 查询来调用 serverless 函数。同时结合仓库内插件源码marketplace/plugins/aws-lambda/lib/与配置清单说明底层调用链、参数加密机制与返回值解析方式帮助你既能在界面上完成配置也能理解其在 Node.js 服务端的真实执行原理。插件概览ToolJet 如何连接 AWS LambdaToolJet 是一个用于构建内部工具、仪表盘与业务应用的开源低代码平台支持通过插件体系连接各类外部服务。AWS Lambda 插件允许你在 ToolJet 应用的数据源面板中直接创建 AWS Lambda 数据源并通过查询Query触发云端 serverless 函数执行。根据 插件官方文档ToolJet 连接 AWS Lambda 的核心目的是运行 serverless 函数即把 ToolJet 作为触发器将业务事件如按钮点击、表单提交、定时任务转发给 AWS Lambda 处理再接收函数的返回结果用于后续工作流。从插件元数据看该插件的类型声明为api名称为 AWS Lambda datasource描述为 Interact with AWS Lambda functions见 manifest.json其唯一对外暴露的操作就是调用 Lambda 函数。准备工作IAM 用户与权限要求在 ToolJet 中创建 AWS Lambda 数据源之前你需要在 AWS 侧准备好一组长期凭证Access Key ID Secret Access Key。官方文档明确要求Access Key IDIAM 用户的访问密钥 ID该用户需拥有访问 AWS Lambda 的必需权限。Secret Access Key与该访问密钥 ID 对应的秘密访问密钥。从实践角度建议遵循最小权限原则为该 IAM 用户仅授予调用目标函数的权限例如在 IAM 策略中限定lambda:InvokeFunction动作并将资源Resource限定到具体的函数 ARN而不是授予整个账户的 Lambda 管理权限。此外请妥善保管 Secret Access Key——ToolJet 会在保存时对其进行加密存储详见下文源码视角。建立连接在 ToolJet 中配置 AWS Lambda 数据源连接参数按照文档连接 AWS Lambda 插件需要提供以下三项信息参数说明Access Key IDIAM 用户的访问密钥 ID具备访问 AWS Lambda 所需权限Secret Access Key对应的秘密访问密钥RegionLambda 函数所在 AWS 区域如上图所示在 ToolJet 数据源页面选择aws-lambda后右侧表单会依次呈现 Access key、Secret key已加密与 Region 下拉选择框底部提供 Read documentation 链接与 Save 保存按钮。Region 可选范围文档只给出函数所在区域的抽象说明而插件配置清单 manifest.json 中则完整定义了 Region 下拉框的 26 个可选值覆盖 AWS 全球主要区域与政务云区域常见选项包括US East (Ohio)us-east-2US East (N. Virginia)us-east-1US West (Oregon)us-west-2Asia Pacific (Singapore)ap-southeast-1Asia Pacific (Mumbai)ap-south-1Asia Pacific (Tokyo)ap-northeast-1Asia Pacific (Sydney)ap-southeast-2Europe (Frankfurt)eu-central-1Europe (Ireland)eu-west-1Europe (London)eu-west-2South America (São Paulo)sa-east-1AWS GovCloud (US-East)us-gov-east-1、AWS GovCloud (US-West)us-gov-west-1以及 China (Beijing)cn-north-1、China (Ningxia)cn-northwest-1等完整列表可查阅 manifest.json 中的 region.list。需要注意的是你选择的 Region 必须与目标 Lambda 函数实际部署的区域一致否则调用会因区域不匹配而失败。必填校验与安全存储从 manifest.json 可以看到access_key、secret_key、region三项均被标记为required未填全时无法保存数据源。其中secret_key的字段类型为password并带有encrypted: true标记表示该值在保存时会被 ToolJet 加密存储界面中也会以密文形式展示图中 Encrypted 标识access_key为普通text类型输入region为dropdown单选下拉插件还开启了customTesting: true即支持在数据源配置界面进行自定义连通性测试。编写查询Invoke Lambda Function查询参数建立连接后即可在查询编辑器中创建针对该数据源的查询。AWS Lambda 插件当前支持的操作是Invoke Lambda Function调用 Lambda 函数文档列出两个必填参数参数说明Function Name要调用的 Lambda 函数名称Payload发送给 Lambda 函数的 JSON 载荷如上图所示查询编辑器顶部提供 Preview 与 Run 按钮核心配置区包含 Data Source 下拉、Operation固定为 Invoke Lambda Function、Function Name 输入框与 Payload 编辑区下方还可以配置 Transformations数据转换、Settings加载时运行、确认提示、成功通知等与 Events事件处理器。表单细节来自 operations.json 的定义查询表单的具体行为由 operations.json 描述Operation下拉单选唯一选项为invoke_lambda显示名 Invoke Lambda Function见 operations.jsonFunction Name类型为codehinter即支持编写 JS 表达式与绑定组件变量的输入框占位符示例为my-lambda-functionPayload同样为codehinter类型编辑区高度 150px占位符示例为{key: value}支持使用表达式动态生成载荷。得益于codehinter类型你可以直接在 Payload 中引用页面组件的值例如{{ { userId: table1.selectedRow.id, action: approve } }}也可以在 Function Name 中使用动态表达式实现根据用户输入调用不同函数的场景。这是 ToolJet 查询相比纯 API 客户端更灵活的地方——查询参数与前端状态天然联动。源码视角一次 Invoke 调用的底层执行链路文档只描述做什么而插件源码则揭示了怎么做。AWS Lambda 插件的主实现位于 lib/index.ts核心逻辑非常清晰import { LambdaClient, InvokeCommand } from aws-sdk/client-lambda; // ... const lambdaClient new LambdaClient({ region: sourceOptions.region, credentials: { accessKeyId: sourceOptions.access_key, secretAccessKey: sourceOptions.secret_key, }, }); const command new InvokeCommand({ FunctionName: queryOptions.functionName, Payload: queryOptions.payload, }); const response await lambdaClient.send(command);关键调用链解析客户端初始化插件基于 AWS 官方 SDKaws-sdk/client-lambda版本要求^3.622.0见 package.json创建LambdaClient。区域与凭证并非硬编码而是从数据源配置sourceOptions中读取——这与界面上填写的 Access Key、Secret Key、Region 一一对应字段映射见 types.ts 中的SourceOptions。命令构造使用InvokeCommand封装调用请求FunctionName与Payload直接来自查询编辑器中的输入queryOptions。发送与返回lambdaClient.send(command)完成同步调用。Lambda 的同步调用会等待函数执行完毕并返回结果适合 ToolJet 中需要拿到返回值做后续处理的场景。响应解析AWS SDK 返回的response.Payload是Uint8Array二进制字节数组源码先通过TextDecoder解码为字符串再JSON.parse解析为 JSON 对象返回若 Payload 不是Uint8Array则直接使用原始值见 lib/index.ts。错误处理一旦调用失败如函数不存在、凭证无效、区域不匹配、函数执行抛出异常会抛出QueryError错误消息会在查询运行结果中展示便于排查见 lib/index.ts。返回值在 ToolJet 中的使用插件执行成功后将返回{ status: ok, data: responseData }。在 ToolJet 查询编辑器中调用结果会暴露为查询的data与rawData变量定义于 manifest.json 的 exposedVariables同时提供isLoading标志。你可以在后续组件或查询中这样引用{{ queries.awsLambdaQuery.data }} // Lambda 返回的 JSON 对象 {{ queries.awsLambdaQuery.rawData }} // 原始返回内容 {{ queries.awsLambdaQuery.isLoading }} // 查询是否正在执行例如将{{ queries.awsLambdaQuery.data.message }}绑定到文本组件的值即可把 Lambda 函数的返回信息展示在界面上。权限与安全实践结合文档要求与插件实现使用 AWS Lambda 插件时建议关注以下安全要点最小权限 IAM只为 IAM 用户授予lambda:InvokeFunction等最小必需权限并将资源范围限制到具体函数避免使用拥有完全管理权限的凭证密钥加密存储ToolJet 对secret_key进行加密存储encrypted: true但仍建议定期轮换 IAM 凭证降低泄露风险区域一致性Region 必须与函数部署区域一致否则调用失败Payload 格式Payload 应为合法 JSONLambda 处理函数内部如需访问事件字段应确保字段命名与你的函数代码约定一致敏感数据避免在 Payload 中硬编码真实密钥等敏感信息优先通过环境变量或表达式动态传入。常见问题与排查建议查询报 Query could not be completed该错误消息由插件源码统一抛出lib/index.ts。常见原因包括Access Key / Secret Key 错误、IAM 用户缺少lambda:InvokeFunction权限、Region 与函数不一致、函数名拼写错误。返回结果显示为 JSON 字符串而非对象如果函数返回的是非 JSON 内容JSON.parse会失败并走错误分支建议确保 Lambda 函数返回合法的 JSON 结构如{ statusCode: 200, body: ... }。函数执行超时ToolJet 通过 AWS SDK 的同步Invoke调用函数长时间运行的函数应考虑缩短逻辑或改用异步调用模式当前插件仅封装了同步调用语义。测试覆盖情况仓库中插件测试文件目前仅为占位it.todo(needs tests)见tests/index.js因此插件行为以源码与文档为准接入前建议先用一个简单的 echo 型 Lambda 函数做连通性验证。小结本文基于 AWS Lambda 插件官方文档 并结合仓库源码完整梳理了在 ToolJet 中接入 AWS Lambda 的流程准备 IAM 凭证 → 填写三项连接参数并选择区域 → 创建数据源 → 编写 Invoke Lambda Function 查询Function Name Payload→ 在应用中消费返回的data。同时从 lib/index.ts、manifest.json 与 operations.json 三个核心文件出发解释了区域下拉的来源、密钥加密、查询表单定义以及底层LambdaClient/InvokeCommand的完整调用链帮助你从会用进阶到理解其原理。【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考