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

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

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

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

指南结构

  1. 使用 gcloud CLI 创建 Google Cloud 项目
  2. 创建函数
  3. 指定依赖项
  4. 部署函数
  5. 测试已部署的函数
  6. 查看日志
  7. 使用 Functions 框架

使用 gcloud CLI 创建 Google Cloud 项目

  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. 准备开发环境。

    转到 .NET 设置指南

创建函数

本部分介绍了如何从头开始手动创建函数。或者,您也可以使用模板软件包提供的模板。

如需创建函数,请执行以下操作:

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

    Windows

    mkdir %HOMEPATH%\helloworld
    cd %HOMEPATH%\helloworld
    

    Linux 或 Mac OS X

    mkdir ~/helloworld
    cd ~/helloworld
    
  2. 创建一个名为 Function.cs 的文件,其中包含以下内容:

    using Google.Cloud.Functions.Framework;
    using Microsoft.AspNetCore.Http;
    using System.Threading.Tasks;
    
    namespace HelloWorld;
    
    public class Function : IHttpFunction
    {
        public async Task HandleAsync(HttpContext context)
        {
            await context.Response.WriteAsync("Hello World!");
        }
    }

    此示例函数会输出问候语“Hello World!”

指定依赖项

下一步是设置依赖项。您可以在 C# Cloud Functions 函数中设置两种不同类型的依赖项:

  • 将 Functions 框架设为可用。这是您在本部分执行的任务。
  • 通过依赖项注入在项目文件和代码中将其他库设为可用。如需了解详情,请参阅通过 Functions 启动类进行自定义

如需将 Functions 框架设为可用,请将目录更改为您在上面创建的 helloworld 目录:

     cd ~/helloworld

然后,创建一个名为 HelloWorld.csproj 的文件,其中包含以下内容:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Google.Cloud.Functions.Hosting" Version="2.1.0" />
  </ItemGroup>
</Project>

部署函数

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

gcloud functions deploy my-first-function --entry-point HelloWorld.Function --runtime dotnet6 --trigger-http --allow-unauthenticated

其中,my-first-function 是在 Google Cloud 控制台中用来标识函数的注册名称,而 --entry-point 用于指定函数的完全限定类名称 (FQN)。

测试已部署的函数

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

    gcloud functions describe my-first-function
    

    该属性应如下所示:

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

查看日志

使用命令行工具

您可以在 Cloud Logging 界面中查看 Cloud Functions 的日志,也可以通过 Google Cloud CLI 查看。

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

gcloud functions logs read my-first-function

输出应类似于以下内容:

LEVEL  NAME               EXECUTION_ID  TIME_UTC                 LOG
D      my-first-function  k2bqgroszo4u  2020-07-24 18:18:01.791  Function execution started
D      my-first-function  k2bqgroszo4u  2020-07-24 18:18:01.958  Function execution took 168 ms, finished with status code: 200
...

使用日志记录信息中心

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

使用模板软件包

以上部分介绍了如何从头开始手动创建函数。以后,您可能会使用模板创建新的函数。

如需使用模板创建、构建和测试函数,请执行以下操作:

  1. 安装 .NET SDK

  2. 安装模板软件包:

    dotnet new install Google.Cloud.Functions.Templates
    
  3. 接下来,为您的项目创建一个目录,并使用 dotnet new 创建新的 HTTP 函数:

    mkdir HelloFunctions
    cd HelloFunctions
    dotnet new gcf-http
    

    此命令会在当前目录中创建 HelloFunctions.csprojFunction.cs。打开 Function.cs 查看代码,并根据需要提供自定义消息。

  4. 在本地构建函数,如下所示:

    dotnet run
    
  5. 服务器运行后,转到 http://localhost:8080 来调用该函数。在控制台中按 Ctrl-C 停止服务器。

    此函数会显示消息“Hello Functions 框架”。

或者,您也可以从另一个终端窗口使用 curl 向此函数发送请求:

curl localhost:8080
# Output: Hello Functions Framework