如果您为产品选择基于用量的价格,则必须向 Service Control API 报告应用的使用情况。
如需了解 Service Control,请参阅入门指南。
准备工作
- 设置对 Cloud Commerce Partner Procurement API 的访问权限,如集成应用中所述。
- 我们建议您使用 Producer Portal 创建服务账号,以便 Service Control。
(对于基于用量的价格)报告用量
创建权益后,您必须使用以下 HTTP GET
请求调用 Partner Procurement API 来检索 usageReportingId
:
GET v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID
响应包含有关权益的信息,格式如下:
{ "name": "providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID", "provider": "YOUR_PARTNER_ID", "account": "USER_ACCOUNT_ID", "product": "example-messaging-service", "plan": "pro", "usageReportingId": "USAGE_REPORTING_ID", "state": "ENTITLEMENT_ACTIVATION_REQUESTED", "updateTime": "...", "createTime": "..." }
要报告使用情况,您必须首先进行 services.check
API 调用,以检查服务的配置。在响应中,如果 checkErrors[]
对象为空,请进行 services.report
API 调用以发送使用情况报告。
使用情况报告是一个 Service Control API Operation
。以下举例说明了 example-messaging-service
的使用情况报告,该报告会发送有关客户正在使用的存储的信息:
POST https://servicecontrol.googleapis.com/v1/services/example-messaging-service.gcpmarketplace.example.com:report
{ "operations": [{ "operationId": "1234-example-operation-id-4567", "operationName": "Hourly Usage Report", "consumerId": "USAGE_REPORTING_ID", "startTime": "2019-02-06T12:00:00Z", "endTime": "2019-02-06T13:00:00Z", "metricValueSets": [{ "metricName": "example-messaging-service/UsageInGiB", "metricValues": [{ "int64Value": "150" }] }], "userLabels": { "cloudmarketplace.googleapis.com/resource_name": "order_history_cache", "cloudmarketplace.googleapis.com/container_name": "storefront_prod", "environment": "prod", "region": "us-west2" } }] }
其中:
operationId
是服务实例生成的唯一字符串。使用 您的check
和report
操作使用相同的operationId
。consumerId
与权益中的usageReportingId
相同。startTime
和endTime
表示report
操作的总时间间隔的开始时间和结束时间。在大多数情况下,startTime
report
操作的值应与endTime
的 上一个report
操作。如果客户的服务在report
操作的startTime
之前停用,则services.check
API 调用会在checkErrors[]
对象中发送错误,客户将不会被收取相应时段的费用。MetricValueSet
包含一个或多个中间时间间隔以及相应的更新指标值。您可以在选择和提交价格模式时定义服务的指标。您可以在 Producer Portal 的技术集成部分。userLabels
是用户创建的标签,定义为符合特定语法要求的键值对字符串。这些标签将转发到 Cloud Billing 费用管理工具以进行归因。对于 与使用情况标签相关的建议, 为使用情况加标签的最佳实践。
如果 services.check
API 返回以下一个或多个错误,我们建议您停止向客户提供服务,除非错误得到解决:
SERVICE_NOT_ACTIVATED
BILLING_DISABLED
PROJECT_DELETED