快速入门:使用 Python 创建和部署 HTTP Cloud Functions 函数

使用 Python 创建和部署 HTTP Cloud Functions 函数

本指南将引导您完成使用 Python 运行时编写 Cloud Functions 函数的过程。Cloud Functions 函数有两种类型:

  • HTTP 函数,通过标准 HTTP 请求调用。
  • 事件驱动型函数,用于处理来自云基础设施的事件,例如 Pub/Sub 主题中收到消息或 Cloud Storage 存储桶发生更改。

本指南中的示例演示了如何创建简单的 HTTP 函数。

准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  3. 确保您的 Google Cloud 项目已启用结算功能

  4. 启用 Cloud Functions and Cloud Build API。

    启用 API

  5. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  6. 确保您的 Google Cloud 项目已启用结算功能

  7. 启用 Cloud Functions and Cloud Build API。

    启用 API

  8. 安装并初始化 gcloud CLI
  9. 更新并安装 gcloud 组件:
    gcloud components update
  10. 准备开发环境。

    转到 Python 设置指南

创建一个函数

  1. 在本地系统上为函数代码创建一个目录:

    Linux 或 Mac OS X

    mkdir ~/helloworld
    cd ~/helloworld
    

    Windows

    mkdir %HOMEPATH%\helloworld
    cd %HOMEPATH%\helloworld
    
  2. helloworld 目录中创建一个 main.py 文件,其中包含以下内容:

    
    import functions_framework
    
    from markupsafe import escape
    @functions_framework.http
    def hello_http(request):
        """HTTP Cloud Function.
        Args:
            request (flask.Request): The request object.
            <https://flask.palletsprojects.com/en/1.1.x/api/#incoming-request-data>
        Returns:
            The response text, or any set of values that can be turned into a
            Response object using `make_response`
            <https://flask.palletsprojects.com/en/1.1.x/api/#flask.make_response>.
        """
        request_json = request.get_json(silent=True)
        request_args = request.args
    
        if request_json and "name" in request_json:
            name = request_json["name"]
        elif request_args and "name" in request_args:
            name = request_args["name"]
        else:
            name = "World"
        return f"Hello {escape(name)}!"
    
    

    此示例函数会获取 HTTP 请求中提供的姓名并返回问候语;或者,如果没有提供姓名,则返回“Hello World!”。

指定依赖项

Python 依赖项可通过 pip 进行管理,并在名为 requirements.txt 的元数据文件中表示。此文件必须与包含函数代码的 main.py 文件位于同一目录中。

您无需创建 requirements.txt 来运行此特定示例,但假设您想要添加自己的依赖项。具体方法如下:

  1. helloworld 目录中创建一个 requirements.txt 文件。

  2. 将函数的依赖项添加到 requirements.txt 文件,例如:

    # An example requirements file, add your dependencies below
    sampleproject==2.0.0
    

部署该函数

如需使用 HTTP 触发器部署该函数,请在 helloworld 目录中运行以下命令:

gcloud functions deploy hello_http --runtime python312 --trigger-http --allow-unauthenticated

通过 --allow-unauthenticated 标志,您可以在不进行身份验证的情况下访问函数。如需进行身份验证,请省略此标志。

测试函数

  1. 当函数完成部署时,请记下 httpsTrigger.url 属性,或使用以下命令查找该属性:

    gcloud functions describe hello_http
    

    该属性应如下所示:

    https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello_http
  2. 在浏览器中访问此网址。您应该会看到一条“Hello World!”消息。

    尝试通过 HTTP 请求传递姓名,例如使用以下网址:

    https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello_http?name=NAME

    您应该会看到一条“Hello NAME!”消息。

查看日志

您可以使用 Google Cloud CLI 和 Cloud Logging 界面查看 Cloud Functions 函数的日志。

使用命令行工具

如需使用 gcloud CLI 查看函数的日志,请使用 logs read 命令,后跟函数名称:

gcloud functions logs read hello_http

输出应类似于以下内容:

LEVEL  NAME        EXECUTION_ID  TIME_UTC                 LOG
D      hello_http  pdb5ys2t022n  2019-09-18 23:29:09.791  Function execution started
D      hello_http  pdb5ys2t022n  2019-09-18 23:29:09.798  Function execution took 7 ms, finished with status code: 200

使用 Logging 信息中心

您还可以通过 Google Cloud 控制台查看 Cloud Functions 函数的日志。