在部署 Cloud Run functions 函数之前先对其进行测试

本指南介绍了如何在部署 Cloud Run functions 函数之前先在 Google Cloud 控制台中对其进行测试。此功能适用于 Node.js 和 Python 函数。

准备要进行测试的函数

如需准备要进行测试的函数,请执行以下操作:

  1. 在 Google Cloud 控制台中打开 Functions 概览页面:

    前往 Cloud Run functions 概览页面

    请务必选择启用了 Cloud Run functions 的项目。

  2. 点击创建函数以创建新的 Node.js 或 Python 函数,或选择现有的 Node.js 或 Python 函数,然后点击修改以进行修改。

  3. 点击下一步前往代码修改页面:

    显示函数预部署测试面板的屏幕截图

  4. 点击测试函数开始测试过程。

  5. 出现提示时,点击开始测试,以授权使用 Cloud Shell 终端。

运行测试

完成上述步骤后,触发事件面板会在右侧打开,确认函数已准备好进行测试。点击运行测试

显示函数预部署测试面板的屏幕截图

此测试阶段涉及以下组成部分:

  • 触发事件面板。触发事件面板预先填充了与您在配置页面指定的事件触发器匹配的载荷。这是函数的输入。
  • Cloud Shell 输出窗口。Cloud Shell 输出窗口会显示 HTTP 状态代码以及返回给调用方的任何响应。
  • 运行测试,用来执行测试。

您可以在 Cloud Shell 窗口中观察测试的输出:

显示 Cloud Shell 输出窗口的屏幕截图

Cloud Shell 终端

您可以在屏幕底部的 Cloud Shell 终端中查看函数生成的日志记录输出。例如,打开测试面板时,您会看到源代码打包输出。运行测试时,您会看到源代码更改和执行级别输出,包括 console.log 和错误。

如果您的测试失败,Cloud Shell 终端会显示相应的错误消息,以帮助您找出导致错误的确切原因,例如:

[11:31:47 AM] - Provided module can't be loaded.
Is there a syntax error in your code?
Detailed stack trace: /workspace/index.js:11
    : 'World';
    ^

SyntaxError: Unexpected token ':'
    at Object.compileFunction (node:vm:360:18)
    at wrapSafe (node:internal/modules/cjs/loader:1048:15)
    at Module._compile (node:internal/modules/cjs/loader:1083:27)
    at Module._extensions..js (node:internal/modules/cjs/loader:1173:10)
    at Module.load (node:internal/modules/cjs/loader:997:32)
    at Module._load (node:internal/modules/cjs/loader:838:12)
    at Module.require (node:internal/modules/cjs/loader:1021:19)
    at require (node:internal/modules/cjs/helpers:103:18)
    at getUserFunction (/workspace/node_modules/@google-cloud/functions-framework/build/src/loader.js:98:30)
    at async main (/workspace/node_modules/@google-cloud/functions-framework/build/src/main.js:35:32)

[11:31:47 AM] - Could not load the function, shutting down.

部署

完成测试后,您可以点击部署,以常规方式部署函数。

限制

部署前测试存在一些已知限制。

网络访问

部署前测试在 Cloud Shell 中运行,即使您在先前步骤中指定了无服务器 VPC 访问通道,Cloud Shell 也不会连接到您的 VPC。如需测试依赖于 VPC 连接的 Cloud Run functions 函数,您必须完全部署该 Cloud Run functions 函数。