调用 Cloud Functions 或 Cloud Run

通过 HTTP 请求从 Workflows 调用 Cloud Functions 或 Cloud Run 等 Google Cloud 服务。最常见的 HTTP 请求方法具有调用快捷方式(例如 http.gethttp.post),但您可以发出任何类型的 HTTP 请求,方法是将 call 字段设置为 http.request 并使用 method 字段指定请求类型。如需了解详情,请参阅发出 HTTP 请求

如需发送经过身份验证的请求,请执行以下操作:

  • 您的工作流必须与具有一个或多个包含所需权限的 Identity and Access Management (IAM) 角色的服务帐号相关联。

  • 您必须向工作流定义明确添加身份验证信息。默认情况下,出于安全原因,HTTP 请求不包含身份或访问令牌。

请注意,您的 Cloud Functions 或 Cloud Run 服务必须允许公共流量。如需了解详情,请参阅 Workflows 身份验证

使用具有所需权限的服务帐号

向其他 Google Cloud 服务发出请求时,您的工作流必须与具有正确权限能够访问所请求资源的服务帐号相关联。如需了解与现有工作流关联的服务帐号,请参阅验证工作流的关联服务帐号

设置服务帐号时,将请求身份与您要授予访问权限的资源相关联(将请求身份设为资源的主帐号),然后为其分配适当的角色。该角色可定义身份在资源上下文中具有的权限。

例如,如需将接收 Cloud Functions 配置为接受来自特定调用函数或服务的请求,您需要将调用者的服务帐号添加为接收函数的主帐号,并向该主帐号授予 Cloud Functions Invoker (roles/cloudfunctions.invoker) 角色。同样,如需为 Cloud Run 设置服务帐号,请向该服务帐号授予 Cloud Run Invoker (roles/run.invoker) 角色。如需了解详情,请参阅 Cloud Functions 的身份验证信息Cloud Run 身份验证概览

向工作流添加身份验证信息

向 Cloud Functions 或 Cloud Run 发出请求时,请使用 OIDC 进行身份验证。

如需使用 OIDC 发出 HTTP 请求,请在指定网址后,将 auth 部分添加到工作流定义的 args 部分。在此示例中,系统将发送调用 Cloud Functions 函数的请求:

YAML

  - step_A:
      call: http.get
      args:
          url: https://us-central1-project.cloudfunctions.net/functionA
          query:
              firstNumber: 4
              secondNumber: 6
              operation: sum
          auth:
              type: OIDC
              [audience: OIDC_AUDIENCE]
    

JSON

    [
      {
        "step_A": {
          "call": "http.get",
          "args": {
            "url": "https://us-central1-project.cloudfunctions.net/functionA",
            "query": {
              "firstNumber": 4,
              "secondNumber": 6,
              "operation": "sum"
            },
            "auth": {
              "type": "OIDC",
              ["audience": "OIDC_AUDIENCE"]
            }
          }
        }
      }
    ]
      
audience 是可选参数,但可用于为令牌指定 OIDC 目标设备。默认情况下,它设置为与 url 相同的值。

后续步骤