使用 .NET 创建和部署 HTTP Cloud Run functions
本指南将引导您完成用 Java 运行时编写 Cloud Functions 函数的过程。Cloud Run 函数有两种类型:
- HTTP 函数,通过标准 HTTP 请求调用。
- 事件驱动函数,由 Cloud 基础架构中的事件触发,例如 Pub/Sub 主题中收到消息或 Cloud Storage 存储桶中发生更改。
本文档介绍了如何创建简单的 HTTP 函数并使用 Maven 或 Gradle 来构建它。
如需了解详情,请参阅编写 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
-
准备开发环境。
创建函数
本部分介绍如何创建函数。
Maven
在本地系统上为函数代码创建一个目录:
Linux 或 Mac OS X:
mkdir ~/helloworld cd ~/helloworld
Windows:
mkdir %HOMEPATH%\helloworld cd %HOMEPATH%\helloworld
创建项目结构以包含源目录和源文件。
mkdir -p ~/helloworld/src/main/java/functions touch ~/helloworld/src/main/java/functions/HelloWorld.java
将以下内容添加到
HelloWorld.java
文件中:此示例函数会输出问候语“Hello World!”
Gradle
在本地系统上为函数代码创建一个目录:
Linux 或 Mac OS X:
mkdir ~/helloworld-gradle cd ~/helloworld-gradle
Windows:
mkdir %HOMEPATH%\helloworld-gradle cd %HOMEPATH%\helloworld-gradle
创建项目结构以包含源目录和源文件。
mkdir -p src/main/java/functions touch src/main/java/functions/HelloWorld.java
将以下内容添加到
HelloWorld.java
文件中:此示例函数会输出问候语“Hello World!”
指定依赖项
下一步是设置依赖项:
Maven
将目录切换到您之前创建的 helloworld
目录,然后创建 pom.xml
文件:
cd ~/helloworld
touch pom.xml
如需使用 Maven 管理依赖项,请在项目的 pom.xml 文件内的 <dependencies>
部分中指定依赖项。对于此练习,请将以下内容复制到 pom.xml
文件中。
如需查看基于 Maven 的完整示例,请参阅 helloworld。
Gradle
将目录切换到您之前创建的 helloworld-gradle
目录,然后创建 build.gradle
文件:
cd ~/helloworld-gradle
touch build.gradle
如需使用 Gradle 管理依赖项,请在项目的 build.gradle 文件中指定依赖项。对于此练习,请将以下内容复制到 build.gradle
文件中。请注意,此 build.gradle
文件包含一项自定义任务,可以帮助您在本地运行函数。
如需查看基于 Gradle 的完整示例,请参阅 helloworld-gradle。
在本地构建和测试函数
在部署函数之前,您可以在本地构建和测试该函数:
Maven
Gradle
运行以下命令以确认函数已构建:
gradle build
使用以下命令启动函数:
gradle runFunction -Prun.functionTarget=functions.HelloWorld
在浏览器中访问
http://localhost:8080
,或从其他窗口运行curl localhost:8080
,以测试函数。如需了解详情,请参阅向本地函数发送请求。
部署函数
如需部署函数,请在 helloworld
目录(如果您使用的是 maven
)或 helloworld-gradle
目录(如果您使用的是 Gradle)中运行以下命令:
gcloud functions deploy java-http-function \
--gen2 \
--entry-point=functions.HelloWorld \
--runtime=java17 \
--region=REGION \
--source=. \
--trigger-http \
--allow-unauthenticated
将 REGION 替换为要部署函数的 Google Cloud 区域的名称(例如 us-west1
)。
通过可选的 --allow-unauthenticated
标志,您可以在不进行身份验证的情况下访问函数。
java-http-function
是在 Google Cloud 控制台中用来标识函数的注册名称,而 --entry-point
用于指定函数的完全限定类名称 (FQN)。
测试已部署的函数
函数部署后,请记下
gcloud functions deploy
命令输出中的uri
属性,或使用以下命令检索该属性:gcloud functions describe java-http-function \ --region=REGION
将 REGION 替换为您在其中部署函数的 Google Cloud 区域的名称(例如
us-west1
)。在浏览器中访问此网址。该函数将返回一条“Hello World!”消息。
查看函数日志
使用命令行工具查看日志
您可以使用 Cloud Logging 界面或通过 Google Cloud CLI 查看函数的日志。
如需使用 gcloud CLI 查看函数的日志,请使用 logs read
命令:
gcloud functions logs read \
--gen2 \
--limit=10 \
--region=REGION \
java-http-function
将 REGION 替换为您在其中部署函数的 Google Cloud 区域的名称(例如 us-west1
)。
输出类似以下内容:
LEVEL: I
NAME: my-first-function
TIME_UTC: 2023-05-29 23:09:57.708
LOG:
LEVEL: I
NAME: my-first-function
TIME_UTC: 2023-05-29 23:05:53.257
LOG: Default STARTUP TCP probe succeeded after 1 attempt for container "my--first--function-1" on port 8080.
LEVEL:
NAME: my-first-function
TIME_UTC: 2023-05-29 23:05:53.248
LOG: 2023-05-29 23:05:53.248:INFO:oejs.Server:main: Started @892ms
使用日志记录信息中心查看日志
要使用日志记录信息中心查看函数的日志,请打开 Cloud Run functions 概览页面,点击列表中的函数名称,然后点击日志标签页。