指定 Go 依赖项

您可以使用 Go 模块vendor 目录指定 Cloud Functions 函数依赖项。

使用 Go 模块指定依赖项

如需使用 Go 模块指定 Cloud Functions 函数依赖项,请在 go.mod 文件中列出这些依赖项。部署您的函数时,Go 会自动将依赖项整合到 go.mod 文件中。

如需创建 go.mod 文件,请参阅管理 Go 中的依赖项

Functions 框架是所有函数所需的依赖项。虽然 Cloud Functions 会在创建函数时代表您安装该框架,但为清楚起见,我们建议您将其添加为显式依赖项。

如果函数依赖于专用依赖项,我们建议您将 functions-framework 镜像到您的私有注册表。将镜像的 functions-framework 作为依赖项添加到函数中,以避免从公共互联网安装软件包。

使用 vendor 目录指定依赖项

借助 Cloud Functions,您还可以通过 vendor 目录添加您的依赖项。如果依赖项不能通过依赖项管理器获取,或者您的 Cloud Functions 环境的互联网访问受限,则使用 vendor 目录很有用。

在大多数情况下,vendor 目录使用依赖项管理器进行维护。您可以使用您喜欢的任何依赖项管理器。例如,您可以使用 Go 的模块功能通过 go.mod 文件创建 vendor 目录。

您必须在 vendor 目录中添加 Go 版 Functions 框架。要使用 Go 工具链执行此操作,请按以下说明操作:

  1. 将以下指令添加到 Go 代码的导入块中:

    _ "github.com/GoogleCloudPlatform/functions-framework-go/funcframework"
    
  2. 更新 go.mod 文件,以包含新的导入软件包:

    go mod tidy
    
  3. 使用 go.mod 文件的内容创建 vendor 目录:

    go mod vendor
    

1.16 之前的 Go 版本

对于早于 1.16 的 Go 版本,如果您有一个 go.mod 文件和 vendor 目录,则在部署函数时,vendor 目录将被忽略。为了确保使用您的 vendor 目录,请使用 .gcloudignore 文件以避免上传 go.modgo.sum 文件:

  1. 使用以下内容在项目根目录下创建 .gcloudignore 文件:

    go.mod
    go.sum
    
    # Also ignore Git directories. Delete the following two lines if you want to
    # upload them.
    .git
    .gitignore
    

使用专用依赖项

如果函数的依赖项托管在不可公开访问的代码库中,则部署函数之前,您必须先使用 vendor 目录提取您的依赖项。如果您打算使用 go.mod 文件,请参阅上述说明以避免 go.mod 文件和 vendor 目录之间可能发生冲突。