返回

函数互操作:GCP 中使用 HTTP 调用的详细指南

python

从一个函数调用另一个函数:GCP 中使用 HTTP 调用的指南

简介

Google Cloud Platform (GCP) 的强大功能之一就是使用 HTTP 调用在函数之间建立通信。此方法使开发人员能够轻松构建复杂的无服务器应用程序,其中一个函数可以触发另一个函数。本文将深入探讨如何在 GCP 中配置和使用 HTTP 调用来实现函数间的互操作。

先决条件

在开始之前,确保你拥有以下先决条件:

  • 已在 GCP 中创建项目。
  • 已启用 Cloud Functions API。
  • 已熟悉 Python。

第 1 步:创建服务帐户

从一个函数调用另一个函数的关键步骤是创建服务帐户。这是一种特殊的 Google 帐户,可授予函数调用权限。

  1. 导航至 IAM 和管理 > 服务帐户
  2. 单击 创建服务帐户
  3. 输入名称和说明。
  4. 授予 函数调用者 角色。

第 2 步:将服务帐户添加到函数 B

接下来,将服务帐户添加到包含函数 B 的项目中。

  1. 导航至函数 B 的项目。
  2. 选择 函数 > 查看函数
  3. 单击函数 B 的名称。
  4. 身份验证 部分,单击 添加成员
  5. 输入服务帐户的电子邮件地址。
  6. 授予 Cloud Functions Admin 角色。

第 3 步:获取服务帐户 JSON 密钥

要进行 HTTP 调用,你需要获取服务帐户的 JSON 密钥。

  1. 在服务帐户页面上,找到你创建的帐户。
  2. 单击 创建密钥
  3. 选择 JSON 文件类型。
  4. 单击 创建 并安全保存下载的文件。

第 4 步:编写 Python 代码进行 HTTP 调用

现在,你可以使用 Python 编写代码来从函数 A 调用函数 B。

import requests

# 设置函数 B 的 URL
function_url = 'https://europe-west6-xxx.cloudfunctions.net/yyy'

# 获取 JSON 密钥
json_path = "/Users/xxx44b1.json"

# 使用服务帐户进行身份验证
with open(json_path) as f:
    credentials = f.read()

# 发送 HTTP POST 请求
response = requests.post(function_url, json=credentials)

# 打印响应
print(response.text)

故障排除

如果你遇到 "404 页面未找到" 错误,请确保:

  • 你使用的是正确的函数 B URL。
  • 服务帐户已添加到函数 B 并具有适当的权限。
  • JSON 密钥有效且未过期。

结论

通过使用 HTTP 调用,你可以轻松地在 GCP 函数之间建立通信。这种方法提供了构建复杂无服务器应用程序的灵活性,其中一个函数可以触发多个下游函数。

常见问题解答

  1. 为什么需要使用服务帐户进行身份验证?
    服务帐户是一种安全的机制,可授予函数调用另一个函数的权限,同时保持应用程序安全。

  2. 我可以在不同的项目中调用函数吗?
    是的,只要目标函数已启用跨项目调用,你就可以在不同的项目中调用函数。

  3. 如何处理 HTTP 调用的失败?
    你可以使用重试机制或错误处理程序来处理 HTTP 调用的失败。

  4. HTTP 调用是否安全?
    HTTP 调用可以通过使用服务帐户进行身份验证、HTTPS 加密和数据验证来实现安全性。

  5. 我可以在 GCP 中找到更多有关 HTTP 调用的信息吗?
    有关更多信息,请参阅 GCP 文档:https://cloud.google.com/functions/docs/calling/http