使用 .NET 创建和部署 HTTP Cloud Run functions
本指南将引导您完成使用 .NET 运行时语言 C# 编写 Cloud Run functions 的过程。Cloud Run functions 有两种类型:
- HTTP 函数,通过标准 HTTP 请求调用。
- 事件驱动型函数,由云基础设施中的事件触发,例如 Pub/Sub 主题中收到消息或 Cloud Storage 存储桶发生更改。
如需了解详情,请参阅编写 HTTP 函数和编写事件驱动型函数。
准备工作
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Artifact Registry, Cloud Run, and Cloud Logging APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Artifact Registry, Cloud Run, and Cloud Logging APIs.
- 安装并初始化 Google Cloud SDK。
- 使用以下命令更新和安装
gcloud
组件。gcloud components update
-
准备开发环境。
创建函数
本部分介绍了如何手动创建 .NET 函数。或者,您也可以使用 Functions 框架模板来创建函数。
如需创建函数,请执行以下操作:
在本地系统上为函数代码创建一个目录:
Windows
mkdir %HOMEPATH%\helloworld cd %HOMEPATH%\helloworld
Linux 或 Mac OS X
mkdir ~/helloworld cd ~/helloworld
在
helloworld
目录中创建一个名为Function.cs
的文件,其中包含以下内容:
指定依赖项
Cloud Run functions 函数需要一组称为 Functions 框架的库。如需将 Functions 框架提供给 build,请执行以下步骤:
将目录切换到您刚刚创建的
helloworld
目录:cd ~/helloworld
在
helloworld
目录中创建一个名为HelloWorld.csproj
的文件,其中包含以下内容:
如需了解如何通过项目文件或在代码中通过依赖项注入将其他库提供给 build,请参阅通过 Functions 启动类进行自定义。
在本地构建和测试函数
使用以下命令在本地构建并运行函数:
dotnet run
在浏览器中访问
http://localhost:8080
,或从其他窗口运行curl localhost:8080
,以测试函数。 如果您使用的是 Cloud Shell,请点击 图标,然后选择在端口 8080 上预览以查看函数输出。如需了解详情,请参阅向本地函数发送请求。
部署函数
如需部署函数,请在 helloworld
目录中运行以下命令:
gcloud functions deploy csharp-http-function \
--gen2 \
--entry-point=HelloWorld.Function \
--runtime=dotnet8 \
--region=REGION \
--source=. \
--trigger-http \
--allow-unauthenticated
将 REGION 替换为要部署函数的 Google Cloud 区域的名称(例如 us-west1
)。
其中,csharp-http-function
是在 Google Cloud 控制台中用来标识函数的注册名称,而 --entry-point
用于指定函数的完全限定类名称 (FQN)。
通过可选的 --allow-unauthenticated
标志,您可以在不进行身份验证的情况下访问函数。
测试已部署的函数
函数部署后,请记下
gcloud functions deploy
命令输出中的uri
属性,或使用以下命令检索该属性:gcloud functions describe csharp-http-function \ --region=REGION
将 REGION 替换为您在其中部署函数的 Google Cloud 区域的名称(例如
us-west1
)。在浏览器中访问
http://localhost:8080
,或从其他窗口运行curl localhost:8080
,以测试函数。如需了解详情,请参阅向本地函数发送请求。
查看函数日志
使用命令行工具查看日志
您可以使用 Cloud Logging 界面或通过 Google Cloud CLI 查看函数的日志。
如需使用 gcloud CLI 查看函数的日志,请使用 logs read
命令:
gcloud functions logs read \
--gen2 \
--limit=10 \
--region=REGION \
csharp-http-function
将 REGION 替换为您在其中部署函数的 Google Cloud 区域的名称(例如 us-west1
)。
输出类似以下内容:
LEVEL: I
NAME: my-first-function
TIME_UTC: 2023-06-01 12:47:42.221
LOG: Request finished HTTP/1.1 GET http://my-first-function-l5vqvupfzq-uw.a.run.app/favicon.ico - - - 404 0 - 0.9393ms
LEVEL: I
NAME: my-first-function
TIME_UTC: 2023-06-01 12:47:42.220
LOG: Request starting HTTP/1.1 GET http://my-first-function-l5vqvupfzq-uw.a.run.app/favicon.ico - -
使用日志记录信息中心查看日志
要使用日志记录信息中心查看函数的日志,请打开 Cloud Run functions 概览页面,点击列表中的函数名称,然后点击日志标签页。
使用模板软件包创建函数
以下说明帮助您创建一个简单的函数。在实际情况下,您可能更希望使用 Functions 框架模板来创建函数。
如需使用 Functions 框架模板创建、构建和测试函数,请执行以下操作:
安装 .NET SDK。如果您使用的是 Cloud Shell,则可以跳过此步骤。
安装模板软件包:
dotnet new install Google.Cloud.Functions.Templates
为您的项目创建一个目录,并创建一个空的 HTTP 函数:
mkdir HelloFunctions cd HelloFunctions dotnet new gcf-http
此命令会在当前目录中创建
HelloFunctions.csproj
和Function.cs
。打开Function.cs
查看代码,并根据需要提供自定义消息。(可选)按照上述说明在本地构建和测试函数。
执行以下
gcloud deploy
命令以部署函数:gcloud functions deploy HelloFunctions.Function \ --gen2 \ --entry-point=HelloWorld.Function \ --runtime=dotnet8 \ --region=REGION \ --source=. \ --trigger-http \ --allow-unauthenticated
将 REGION 替换为您在其中部署函数的 Google Cloud 区域的名称(例如
us-west1
)。
如需详细了解 Functions 框架,请参阅 Functions 框架文档。