部署函数

本指南介绍了如何使用 gcloud functions 命令从源代码部署函数。如需了解如何使用 gcloud run 命令部署函数,请参阅使用 gcloud CLI 部署 Cloud Run 函数

部署过程会获取源代码和配置设置并构建可运行的映像,Cloud Functions 自动管理这一过程,以便处理对函数的请求。

部署基础知识

如需简要了解您可以部署的函数类型,请参阅编写 Cloud Run functions 函数

部署函数的用户必须具有 Cloud Functions Developer IAM 角色或具有提供相同权限的其他角色。另请参阅其他部署配置

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. 使用 gcloud functions deploy 命令部署函数:

    gcloud functions deploy YOUR_FUNCTION_NAME \
       --region=YOUR_REGION \
       --runtime=YOUR_RUNTIME \
       --source=YOUR_SOURCE_LOCATION \
       --entry-point=YOUR_CODE_ENTRYPOINT \
       TRIGGER_FLAGS
    

    第一个参数 YOUR_FUNCTION_NAME 是已部署函数的名称。函数名称必须以字母开头,后面最多可跟 62 个字母、数字、连字符或下划线,但必须以字母或数字结尾。 为函数创建的 Cloud Run 服务的名称将将下划线替换为连字符,大写字母会转换为小写字母。例如,Function_1 将在 Cloud Run 中被命名为 function-1

    • --region 标志指定要在其中部署函数的区域。如需查看 Cloud Run 支持的区域列表,请参阅位置

    • --runtime 标志指定函数使用的语言运行时。如需查看受支持的运行时 ID 的列表,请参阅运行时支持

    • --source 标志用于指定函数源代码的位置。

    • --entry-point 标志指定源代码中函数的入口点。这是在您的函数运行时执行的代码。此标志的值必须是源代码中存在的函数名称或完全限定类名称。如需了解详情,请参阅函数入口点

    • 如需为函数指定触发器,需要使用额外的标志(上文表示为 TRIGGER_FLAGS),具体取决于您要使用的触发器:

      触发器标志 触发器说明
      --trigger-http 使用 HTTP(S) 请求触发函数。
      --trigger-topic=YOUR_PUBSUB_TOPIC 在有消息发布到指定的 Pub/Sub 主题时触发函数。
      --trigger-bucket=YOUR_STORAGE_BUCKET 在指定的 Cloud Storage 存储分区中创建或覆盖对象时触发函数。
      --trigger-event-filters=EVENTARC_EVENT_FILTERS 当与指定过滤条件匹配的事件发生时,通过 Eventarc 触发函数。

      如需查看有关部署命令及其标志的完整参考信息,请参阅 gcloud functions deploy 文档。

      如需详细了解 gcloud functions deploy 配置标志,请参阅 Cloud Run 文档

部署成功完成后,Google Cloud 控制台的 Cloud Run 概览页面中会显示带有绿色对勾标记的函数。

函数的初始部署可能需要几分钟时间,系统会同时对底层基础架构进行预配。重新部署现有函数时速度会更快,并且传入的流量会自动迁移到最新版本。

HTTP 端点网址

使用 gcloud functions 命令或 Cloud Functions v2 API 创建函数时,该函数默认具有 cloudfunctions.net HTTP 端点网址。如果您将此函数部署在 Cloud Run 上,该函数还会收到 run.app HTTP 端点网址。不过,在 Cloud Run 中创建的函数不会具有 cloudfunctions.net HTTP 端点网址。函数的 cloudfunctions.net 网址和 run.app 网址的行为方式完全相同。它们可以互换使用,用于触发您的函数。

Terraform 示例

如需有关如何使用 Terraform 部署函数的示例,请参阅 Terraform HTTP 示例Terraform Pub/Sub 示例

了解如何在 Cloud Run 上部署 Cloud Run functions 函数

在 Cloud Run 上部署函数与本文档中所述的步骤类似,但具有一些额外的优势: