通过 Amazon Web Services Marketplace 销售 API Gateway API - Amazon API Gateway
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

通过 Amazon Web Services Marketplace 销售 API Gateway API

构建、测试和部署 API 后,您可以将其打包到 API Gateway usage plan(使用计划)中,并通过 Amazon Web Services Marketplace 将该计划作为软件即服务 (SaaS) 产品进行销售。Amazon Web Services Marketplace 根据向使用计划发出的请求数量,对订阅您的产品/服务的 API 买家进行计费。

要在 Amazon Web Services Marketplace 上销售 API,您必须设置销售渠道以将 Amazon Web Services Marketplace 与 API Gateway 集成。一般而言,这涉及在 Amazon Web Services Marketplace 上列出您的产品,使用适当的策略设置 IAM 角色以允许 API Gateway 向 Amazon Web Services Marketplace 发送用量指标,将 Amazon Web Services Marketplace 产品与 API Gateway 使用计划进行关联,以及将 Amazon Web Services Marketplace 买家与 API Gateway API 密钥进行关联。以下各节讨论了相关详细信息。

有关在 Amazon Web Services Marketplace 上将您的 API 作为 SaaS 产品进行销售的更多信息,请参阅 Amazon Web Services Marketplace 用户指南

初始化 Amazon Web Services Marketplace 与 API Gateway 的集成

以下任务是为了一次性初始化 Amazon Web Services Marketplace 与 API Gateway 的集成,以便您将 API 作为 SaaS 产品进行销售。

在 中列出产品Amazon Web Services Marketplace

要将您的使用计划作为 SaaS 产品列出,请通过 Amazon Web Services Marketplace 提交产品加载表单。产品必须包含 apigateway 类型且名为 requests 的维度。此维度定义基于请求的定价,并由 API Gateway 用于计量对您的 API 提出的请求。

创建计量角色

使用以下执行策略和信任策略,创建一个名为 ApiGatewayMarketplaceMeteringRole 的 IAM 角色。此角色允许 API 代表您向 Amazon Web Services Marketplace 发送用量指标。

计量角色的执行策略

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "aws-marketplace:BatchMeterUsage", "aws-marketplace:ResolveCustomer" ], "Resource": "*", "Effect": "Allow" } ] }

计量角色的可信关系策略

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "apigateway.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

将使用计划与 Amazon Web Services Marketplace 产品关联

在 Amazon Web Services Marketplace 上列出产品时,您会收到一个 Amazon Web Services Marketplace 产品代码。要将 API Gateway 与 Amazon Web Services Marketplace 集成,请将您的使用计划与 ‭Amazon Web Services Marketplace 产品代码关联。您可以通过使用 API Gateway 控制台、API Gateway REST API、适用于 API Gateway 的 Amazon CLI 或适用于 API Gateway 的 Amazon SDK 将 API Gateway UsagePlanproductCode 字段设为 Amazon Web Services Marketplace 产品代码来启用关联。以下代码示例使用 API Gateway REST API:

PATCH /usageplans/USAGE_PLAN_ID Host: apigateway.region.amazonaws.com Authorization: ... { "patchOperations" : [{ "path" : "/productCode", "value" : "MARKETPLACE_PRODUCT_CODE", "op" : "replace" }] }

处理使用计划的客户订阅

以下任务由您的开发人员门户应用程序处理。

当客户通过 Amazon Web Services Marketplace 订阅您的产品时,Amazon Web Services Marketplace 会将 POST 请求转发至 SaaS 订阅您在 Amazon Web Services Marketplace 中上架产品时注册的 URL。POST 请求附带一个包含买家信息的 x-amzn-marketplace-token 参数。按照 SaaS 客户登记中的说明在您的开发人员门户应用程序中处理此重定向。

作为对客户订阅请求的响应,Amazon Web Services Marketplace 会向您可以订阅的 Amazon SNS 主题发送 subscribe-success 通知。(请参阅 SaaS 客户登记)。要接受客户订阅请求,您应创建或检索客户的 API Gateway API 密钥,将客户的 Amazon Web Services Marketplace 预置 customerId 与 API 密钥进行关联,然后将该 API 密钥添加到您的使用计划中,以此来处理 subscribe-success 通知。

当客户的订阅请求完成后,开发人员门户应用程序应向客户展示关联的 API 密钥,并告知客户该 API 密钥必须包含在对 API 提出的请求的 x-api-key 标头中。

如果客户取消对使用计划的订阅,Amazon Web Services Marketplace 会向 SNS 主题发送 unsubscribe-success 通知。要完成客户取消订阅的过程,应通过从使用计划中删除客户的 API 密钥来处理 unsubscribe-success 通知。

授权客户访问使用计划

要授权给定客户访问您的使用计划,请使用 API Gateway API 为该客户获取或创建 API 密钥,然后将该 API 密钥添加到使用计划中。

以下示例介绍了如何调用 API Gateway REST API 以创建具有特定 Amazon Web Services Marketplace customerId 值 (MARKETPLACE_CUSTOMER_ID) 的新 API 密钥。

POST apikeys HTTP/1.1 Host: apigateway.region.amazonaws.com Authorization: ... { "name" : "my_api_key", "description" : "My API key", "enabled" : "false", "stageKeys" : [ { "restApiId" : "uycll6xg9a", "stageName" : "prod" } ], "customerId" : "MARKETPLACE_CUSTOMER_ID" }

以下示例介绍了如何获取具有特定 Amazon Web Services Marketplace customerId 值 (MARKETPLACE_CUSTOMER_ID) 的 API 密钥。

GET apikeys?customerId=MARKETPLACE_CUSTOMER_ID HTTP/1.1 Host: apigateway.region.amazonaws.com Authorization: ...

要向使用计划添加 API 密钥,请通过相关使用计划的 API 密钥创建一个 UsagePlanKey。以下示例介绍如何使用 API Gateway REST API 完成此操作,其中 n371pt 是使用计划 ID,q5ugs7qjjh 是从之前的示例返回的示例 API keyId

POST /usageplans/n371pt/keys HTTP/1.1 Host: apigateway.region.amazonaws.com Authorization: ... { "keyId": "q5ugs7qjjh", "keyType": "API_KEY" }

将客户与 API 密钥关联

必须将 ApiKeycustomerId 字段更新为客户的 Amazon Web Services Marketplace 客户 ID。这可将 API 密钥与 Amazon Web Services Marketplace 客户关联,从而可对买家进行计量和计费。以下代码示例调用 API Gateway REST API 来执行此操作。

PATCH /apikeys/q5ugs7qjjh Host: apigateway.region.amazonaws.com Authorization: ... { "patchOperations" : [{ "path" : "/customerId", "value" : "MARKETPLACE_CUSTOMER_ID", "op" : "replace" }] }