Cloud Run functions 概览

本指南简要介绍了其他服务如何参与 Cloud Run functions 函数部署流程。 Google Cloud

准备工作

通过 Cloud Run 部署选项和资源模型指南,熟悉 Cloud Run functions 函数和源部署概念。

架构概览

将函数的源代码部署到 Cloud Run functions 时,该源代码存储在 Cloud Storage 存储桶中。然后,Cloud Build 会自动将您的代码构建到容器映像中,并将该映像推送到 Artifact Registry 映像注册表。当需要运行容器来执行函数时,Cloud Run functions 会访问此映像。

在下图中,“Cloud Run functions”框代表使用 Cloud Run Admin API 或 Cloud Functions API 在 Cloud Run 中部署的函数。通常,较新的函数使用 Cloud Run Admin API 部署,较旧的函数使用 Cloud Functions API 部署。

从 Google Cloud 控制台调用 Cloud Run Admin API。
图 1:用户准备函数源代码并将其部署到 Cloud Run。

根据部署函数时使用的 API,会发生以下情况:

  • 如果您使用 Cloud Run Admin API 部署了函数,则会发生以下情况:

    1. 您的源代码会上传到没有保留期限的 Cloud Storage 存储桶。

      1. 如果您使用的是默认加密,则存储桶的名称会自动生成,并命名为 run-sources-PROJECT_ID-REGION
      2. 如果您使用客户管理的加密密钥 (CMEK) 保护数据,则系统不会自动生成存储桶名称,您必须提供存储桶名称。
    2. 源代码会提交到 Cloud Build,Google Cloud 的 Buildpack 和 Functions 框架会在其中创建容器映像。请注意,Cloud Build 服务账号会构建容器映像。

    3. 然后,您的容器映像会通过名为 REGION-docker.pkg.dev/PROJECT_ID/cloud-run-source-deploy 的自动创建的存储桶上传到 Artifact Registry。

    4. 映像会作为服务部署到 Cloud Run。

    5. 您可以使用 Eventarc、Pub/Sub 或其他 HTTP 触发器触发或调用该函数。

  • 如果您使用 Cloud Functions API (v2) 部署了函数,则会发生以下情况:

    1. 您的源代码会上传到没有保留期限的 Cloud Storage 存储桶。

      存储桶的名称由系统自动生成,采用以下格式:

      1. 如果您使用的是默认加密,则该存储桶的名称为 gcf-v2-sources-PROJECT_NUMBER-REGION
      2. 如果您使用 CMEK 保护数据,则该存储桶的名称为 gcf-sources-PROJECT_NUMBER-REGION-CMEK_KEY_HASH
    2. 源代码会提交到 Cloud Build,Google Cloud 的 Buildpack 和 Functions 框架会在其中创建容器映像。请注意,Cloud Build 服务账号会构建容器映像。

    3. 然后,您的容器映像会通过名为 REGION-docker.pkg.dev/PROJECT_ID/gcf-artifacts 的自动创建的存储桶上传到 Artifact Registry。

    4. 映像会作为服务部署到 Cloud Run。

    5. 您可以使用 Eventarc、Pub/Sub 或其他 HTTP 触发器触发或调用该函数。

后续步骤