快速入门:使用 gcloud CLI 部署 Cloud Run functions 函数
本页介绍了如何使用 gcloud CLI 部署 HTTP Cloud Run functions 函数。
准备工作
- 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.
-
Install the Google Cloud CLI.
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init -
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_IDwith your Google Cloud project name.
-
如果您要使用现有项目来完成本指南,请验证您是否拥有完成本指南所需的权限。如果您创建了新项目,则您已拥有所需的权限。
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run Admin API, and Cloud Logging APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com run.googleapis.com logging.googleapis.com -
Install the Google Cloud CLI.
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init -
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_IDwith your Google Cloud project name.
-
如果您要使用现有项目来完成本指南,请验证您是否拥有完成本指南所需的权限。如果您创建了新项目,则您已拥有所需的权限。
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run Admin API, and Cloud Logging APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com run.googleapis.com logging.googleapis.com - 要为 Cloud Run 服务设置默认项目,请使用以下命令:
将 PROJECT_ID 替换为您为此快速入门创建的项目的名称。gcloud config set project PROJECT_ID
- 查看 Cloud Run 价格或使用价格计算器估算费用。
- 项目的 Cloud Run Source Developer (
roles/run.sourceDeveloper) 角色 -
服务身份的 Service Account User (
roles/iam.serviceAccountUser) 角色 -
项目的 Logs Viewer (
roles/logging.viewer) 角色 创建名为
helloworld的新目录,并转到此目录中:mkdir helloworld cd helloworld在
helloworld目录中创建一个package.json文件以指定 Node.js 依赖项:使用以下 Node.js 示例在
helloworld目录中创建一个index.js文件:创建名为
helloworld的新目录,并转到此目录中:mkdir helloworld cd helloworld在
helloworld目录中创建一个requirements.txt文件,以指定 Python 依赖项:这会添加示例所需的软件包。
使用以下 Python 示例在
helloworld目录中创建一个main.py文件:创建名为
helloworld的新目录,并转到此目录中:mkdir helloworld cd helloworld创建
go.mod文件以声明 go 模块:使用以下 Go 代码示例在
helloworld目录中创建一个hello_http.go文件:创建名为
helloworld的新目录,并转到此目录中:mkdir helloworld cd helloworld创建以下项目结构以包含源目录和源文件:
mkdir -p ~/helloworld/src/main/java/functions touch ~/helloworld/src/main/java/functions/HelloWorld.java使用以下 Java 代码示例更新
HelloWorld.java文件:在
helloworld目录中创建一个pom.xml文件,并添加以下 Java 依赖项:创建名为
helloworld的新目录,并转到此目录中:mkdir helloworld cd helloworld创建名为
app.rb的文件,并将以下代码粘贴到其中:创建名为
Gemfile的文件,并将以下内容复制到其中:如果您未安装 Bundler 2.0 或更高版本,请安装 Bundler。
通过运行以下命令生成
Gemfile.lock文件:bundle install创建名为
helloworld的新目录,并转到此目录中:mkdir helloworld cd helloworld创建名为
index.php的文件,并将以下代码粘贴到其中:如果您未使用 Cloud Shell,请创建一个
composer.json文件,并将以下代码粘贴到其中:安装 .NET SDK。
在 Console 中,使用 dotnet 命令新建一个空 Web 项目。
dotnet new web -o helloworld-csharp转到
helloworld-csharp目录:将项目文件
helloworld-csharp.csproj中的示例代码替换为以下代码:将
Program.cs文件中的示例代码替换为以下代码:在包含示例代码的目录中运行以下命令,以部署函数:
Node.js
gcloud run deploy nodejs-http-function \ --source . \ --function helloGET \ --base-image nodejs24 \ --region REGION \ --allow-unauthenticated将 REGION 替换为您要在其中部署函数的服务的 Google Cloud区域。例如
europe-west1。Python
gcloud run deploy python-http-function \ --source . \ --function hello_get \ --base-image python313 \ --region REGION \ --allow-unauthenticated将 REGION 替换为您要在其中部署函数的服务的 Google Cloud区域。例如
europe-west1。Go
gcloud run deploy go-http-function \ --source . \ --function HelloGet \ --base-image go125 \ --region REGION \ --allow-unauthenticated将 REGION 替换为您要在其中部署函数的服务的 Google Cloud区域。例如
europe-west1。Java
在包含
pom.xml文件的目录中运行以下命令:gcloud run deploy java-http-function \ --source . \ --function functions.HelloWorld \ --base-image java21 \ --region REGION \ --allow-unauthenticated将 REGION 替换为您要在其中部署函数的服务的 Google Cloud区域。例如
europe-west1。Ruby
gcloud run deploy ruby-http-function \ --source . \ --function hello_get \ --base-image ruby34 \ --region REGION \ --allow-unauthenticated将 REGION 替换为您要在其中部署函数的服务的 Google Cloud区域。例如
europe-west1。PHP
gcloud run deploy php-http-function \ --source . \ --function helloGet \ --base-image php84 \ --region REGION \ --allow-unauthenticated将 REGION 替换为您要在其中部署函数的服务的 Google Cloud区域。例如
europe-west1。.NET
gcloud run deploy csharp-http-function \ --source . \ --function HelloWorld.Function \ --base-image dotnet8 \ --region REGION \ --allow-unauthenticated将 REGION 替换为您要在其中部署函数的服务的 Google Cloud区域。例如
europe-west1。部署完成后,Google Cloud CLI 会显示一个运行服务的网址。在浏览器中打开该网址,查看函数的输出。
在 Google Cloud 控制台中,前往 Cloud Run 服务页面:
在服务列表中找到要删除的服务,然后点击该服务对应的复选框以将其选中。
点击删除。这将删除服务的所有修订版本。
- SERVICE:服务的名称。
- REGION:服务的 Google Cloud 区域。
如需使用 Google Cloud 控制台将示例函数部署到 Cloud Run,请参阅快速入门:使用 Google Cloud 控制台将函数部署到 Cloud Run。
如需使用 Google Cloud 控制台和 Google Cloud CLI 部署函数和创建触发器,请参阅部署函数。
如需查看和删除现有函数,请参阅管理服务修订版本。
如需在您自己的工具链中构建函数容器并将其部署到 Cloud Run,请参阅构建函数。
如需使用 Eventarc 创建触发器,请参阅使用 Eventarc 创建触发器。
所需的角色
如需获得完成本教程所需的权限,请让您的管理员为您授予以下 IAM 角色:
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
授予 Cloud Build 服务账号对项目的访问权限
除非您替换此行为,否则 Cloud Build 会自动使用 Compute Engine 默认服务账号作为默认 Cloud Build 服务账号来构建源代码和 Cloud Run 资源。
为了让 Cloud Build 能够构建来源,请向 Cloud Build 服务账号授予项目的 Cloud Run Builder (roles/run.builder) 角色:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_EMAIL_ADDRESS \ --role=roles/run.builder
将 PROJECT_ID 替换为您的 Google Cloud项目 ID,并将 SERVICE_ACCOUNT_EMAIL_ADDRESS 替换为 Cloud Build 服务账号的邮箱。如果您使用 Compute Engine 默认服务账号作为 Cloud Build 服务账号,则服务账号邮箱应采用以下格式:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
将 PROJECT_NUMBER 替换为您的 Google Cloud项目编号。
如需详细了解如何查找项目 ID 和项目编号,请参阅创建和管理项目。
授予 Cloud Run Builder 角色之后,需要几分钟时间才能完成传播。
编写示例函数
如需编写应用,请按照以下步骤操作:
Node.js
Python
Go
Java
Ruby
PHP
.NET
部署该函数
如需部署 Cloud Run 函数,请按以下步骤操作:
清理
为避免您的 Google Cloud 账号产生额外费用,请删除您在本快速入门中部署的所有资源。
删除仓库
当部署的服务未在使用时,Cloud Run 不会向您收取费用。不过,您可能仍需要支付将容器映像存储在 Artifact Registry 中而产生的相关费用。如需删除 Artifact Registry 仓库,请按照 Artifact Registry 文档中删除仓库的步骤操作。
删除服务
Cloud Run 服务在收到请求之前不会产生费用。如需删除 Cloud Run 服务,请按照以下步骤之一操作:
控制台
要删除服务,请执行以下操作:
gcloud
要删除作业,请运行以下命令:
gcloud run services delete SERVICE --region REGION
替换以下内容:
删除测试项目
删除 Google Cloud 项目后,系统即会停止对该项目中的所有资源计费。如需释放项目中的所有 Google Cloud 资源,请按照以下步骤操作:
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID