租户单元入门

本页面显示了租户单元(Service Infrastructure 的组成部分)的基本设置和工作流,其中包括

这些示例使用对 Service Consumer Management REST API 的直接调用。

有关租户单元的一般信息,请参阅创建和删除租户单元

准备工作

  • Service Consumer Management API 专门用于托管式服务服务提供方项目。您已该项目中拥有一个 Google Cloud 项目和一个托管服务(例如,使用 Cloud Endpoints 创建的服务)。
  • 如要使用租户单元,Service Consumer Management API 需要在服务提供方组织中创建租户项目。确保您有足够的配额来支持所需数量的服务使用方项目。
  • 在租户单元中创建的每个服务使用方项目还必须位于您指定的文件夹中。 因此,为了使用租户单元,您需要有一个组织

身份验证

Service Consumer Management API 等 Cloud API 仅接受经过身份验证的调用。 如果您还没有服务帐号,请访问身份验证使用入门,了解如何创建服务帐号并获取 JSON 密钥,以便向 Cloud API 进行身份验证。 如果您使用的是 Google 客户端库,则可以设置环境,以便它在默认情况下使用您的服务帐号凭据。如要直接调用 REST API,您需要在每个标头中提供访问令牌,具体如下例所示:

    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" --header 'Content-Type: application/json' --data '{"tag":"tag1", "project_config":{"folder":"folders/9876543210", "tenant_project_policy": {"policy_bindings":{"role":"roles/owner", "members":"user:user1@company.com"}}, "billing_config":{"billing_account":"billingAccounts/123456-472F22-28F9AA"}}}' -X POST "https://serviceconsumermanagement.googleapis.com/v1/services/your-service.example.com/consumers/12345678901/tenancyUnits/tu-hello:addProject"

创建租户单元

设置相关权限后,当服务使用方启用您的服务时,您可以创建一个租户单元,用于保存该服务使用方的租户项目。租户单元是一个轻量级实体,代表服务使用者(通常是启用了 API 的 Cloud 项目)与托管服务之间的关系。每个服务使用方只能有一个活动的租户单元。

您按如下所示创建租户单元:

POST https://serviceconsumermanagement.googleapis.com/v1/services/your-service.example.com/projects/12345678901/tenancyUnits

在这里,“projects/12345678901”是服务使用者项目编号,且 your-service.example.com是您的服务名称。

返回的数据结构包含租户单元的名称以及生成的唯一 ID(可用于访问它)。在此示例中,生成的名称为 /services/your-service.example.com/projects/12345678901/tenancyUnits/absdef

添加租户项目

您现在可以为用户添加项目了。如要将新租户项目添加到上一步创建的租户单元中,请调用以下方法:

POST https://serviceconsumermanagement.googleapis.com/v1/services/your-service.example.com/projects/12345678901/tenancyUnits/absdef:addProject

采用以下数据:

{"tag":"tag1", "project_config":{"folder":"folders/9876543210", "tenant_project_policy":{"policy_bindings":{"role":"roles/owner", "members":"user:bob@example.com"}}, "billing_config":{"billing_account":"billingAccounts/123456-472F22-28F9AA"}}}

tag 值是您在租户单元内为项目提供的标识符:它可以是您喜欢的任何内容(这里是 tag1),可以是区域、用户网络或只是字符串 ID。

此调用返回一个长时间运行的操作,您可以查询该操作以查看项目创建是否成功。

如果需要应用其他配置(例如,添加新的托管服务),则可以调用 services.tenancyUnits.applyProjectConfig 方法。

搜索您的租户单元

为服务使用方查找某一租户单元

如要为特定服务使用方查找某一租户单元,请使用 ListTenancyUnits 方法指定服务使用方项目编号:

GET https://serviceconsumermanagement.googleapis.com/v1/services/your-service.example.com/projects/12345678901/tenancyUnits

搜索租户单元

您可以使用 SearchTenancyUnits 方法搜索为您的服务定义的租户单位。举例来说,以下查询将返回所有满足下列条件的单元:其中包含带有“tag1”标记的项目:

GET https://serviceconsumermanagement.googleapis.com/v1/services/your-service.example.com:search?query=tenant_resources.tag=tag1

清理租户单元

当服务使用方停止使用您的服务时,删除租户单元会清理资源并帮助确保用户的数据得到删除。

移除租户项目

如要删除租户项目,您应先删除服务使用方的相关租户单元。removeProject 方法将删除项目及其中的所有资源:

POST https://serviceconsumermanagement.googleapis.com/v1/services/your-service.example.com/projects/12345678901/tenancyUnits/absdef:removeProject

采用以下数据:

{"tag":"tag1"}

删除租户单元

移除租户单元中的所有租户项目后,或所有租户项目均处于 DELETED 状态时,您可以删除该单元:

DELETE https://serviceconsumermanagement.googleapis.com/v1/services/your-service.example.com/projects/12345678901/tenancyUnits/absdef