本页面介绍了创建由 Endpoints 管理的 gRPC 服务所需的配置文件。
前提条件
首先,本页假定您已完成以下操作:
- Google Cloud 项目。
- 具备配置 gRPC API 服务的基本知识。
- 已安装 gRPC 和 gRPC 工具。如需了解详情,请参阅 gRPC 使用入门。
选择服务名称
Cloud Endpoints 会使用您在 gRPC API 配置 YAML 文件中配置的名称作为服务名称。您的 API 服务名称在 Google Cloud上必须是唯一的。由于 Endpoints 使用符合 DNS 规范的名称来识别服务,因此建议您使用 API 的域名或子网域名作为服务名称。使用此方法,Endpoints 服务页面上显示的服务名称会与对 API 的请求中使用的名称相匹配。Endpoints 对服务名称有以下要求:
- The maximum length of the domain name is 253 characters.
- The domain name must start with a lowercase letter.
-
Each section in the domain name, which is delimited by dots, has the following
requirements:
- Must start with a lowercase letter.
- Must not end with a dash.
- The remaining characters can be lowercase letters, numbers, or dashes.
- The maximum length is 63 characters.
您可以注册自己的自定义网域(例如 example.com),也可以使用由 Google 管理的网域。
使用由 Google 管理的网域
cloud.goog 网域归 Google 所有并由其管理。如果您想要使用由 Google 管理的网域,则必须在服务名称中包括您的 Google Cloud 项目 ID。由于 Google Cloud 项目具有全局唯一的项目 ID,因此这项要求可确保您的服务名称是独一无二的。如果您想要使用 cloud.goog 网域,则服务名称必须采用以下格式,其中 YOUR_API_NAME 是 API 的名称,而 YOUR_PROJECT_ID 是您的Google Cloud 项目 ID:
YOUR_API_NAME.endpoints.YOUR_PROJECT_ID.cloud.goog`
要将此网域用作 API 的域名,请参阅在 cloud.goog 网域上配置 DNS。
使用自定义网域
如果您不想使用由 Google 管理的网域,则可以使用您有权使用的自定义网域(例如 myapi.mycompany.com)。在部署 API 配置之前,请先按照验证网域所有权中的步骤操作。
配置协议缓冲区
为您的服务创建一个
.proto文件。如需了解详情,请阅读开发者指南。使用适用于您所用语言的
protoc编译器来编译 Protocol Buffers。例如:protoc --proto_path=. \ --include_imports \ --include_source_info \ --descriptor_set_out=api_descriptor.pb \ bookstore.proto在前面的命令中,
--proto_path设置为当前工作目录。在 gRPC 构建环境中,如果为.proto输入文件使用不同的目录,请更改--proto_path,以便编译器搜索您在其中保存了.proto文件的目录。如果
protoc命令无法生成描述符文件,请确保以下几点:- 您的
protoc是最新版本。 - 您已在
--proto_path(简写形式为-I)中指定用于保存所导入.proto文件的根目录。如需了解详情,请参阅 Protocol Buffers 文档。 - 您已指定
--include_imports。
如果您希望客户端通过结合使用 HTTP 和 JSON 来访问 gRPC 服务,则需要指定如何将数据从 HTTP 和 JSON 转换为 gRPC。建议您为
.proto文件中定义的 API 添加注释。如需了解详情,请参阅将 HTTP/JSON 转码为 gRPC。- 您的
配置 gRPC 服务配置文件
您需要创建一个 gRPC 服务配置 YAML 文件。在此文件中,您可以指定服务名称和使用限制,例如要求使用 API 密钥。
您可以将 Bookstore 示例中的 api_config.yaml 文件用作模型。
保存
api_config.yaml的副本。在
name字段中输入服务的名称。例如:name: bookstore.endpoints.example-project-12345.cloud.goog输入在 Google Cloud 控制台中 Endpoints > Services 页面上显示的标题。例如:
title: Bookstore gRPC API在
apis:name字段中输入 API 名称。您输入的文本必须与.proto文件中的完全限定 API 名称完全匹配。例如:apis: - name: endpoints.examples.bookstore.Bookstore
配置文件的其余部分。例如:
# # API usage restrictions. # usage: rules: # ListShelves methods can be called without an API Key. - selector: endpoints.examples.bookstore.Bookstore.ListShelves allow_unregistered_calls: true如需了解详情,请参阅规则和选择器。