AWS Marketplace
针对 AWS Marketplace 提供商的用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

配置您的 SaaS 产品以接受新客户

当客户购买您的产品时,将发生以下流程。

在 AWS Marketplace 中

  1. 当客户在 AWS Marketplace 网站上访问您的产品列表页面时,可选择订阅您的产品。

  2. 该客户的 AWS 账户订阅您的产品。这意味着,从您的产品发送的计量记录将成为客户 AWS 账单的一部分。

  3. 为客户生成一个注册令牌,其中包含其客户标识符(将传达给您的网站)。

  4. 客户重定向到您的注册页面。本页面必须能够接受具有客户标识符的令牌。

在您的产品中

  1. 客户的浏览器向您的 SaaS 注册 URL 发送 POST 请求。该请求包含一个 POST 参数 x-amzn-marketplace-token,其中包含客户的注册令牌。从注册网站的角度来看,客户已使用此参数提交表单。注册令牌是一个不透明的字符串。

  2. 要兑换此令牌以获取客户标识符和产品代码,您的网站必须在 AWS Marketplace Metering Service 上调用 ResolveCustomer。客户标识符是一个字符串,它表示订阅您的产品的客户。客户标识符不是客户的 AWS 账户 ID,但在产品之间是通用的。产品代码是 SaaS 产品的唯一字符串,由 AWS 提供给您。每个 AWS 列表均有一个唯一的产品代码(在注册期间分配给您)。例如,a290sds6en72spp3ph4q890es 是产品代码,b53a9230-6767-4735-a3d9-d5c41caa24c4 是产品 ID。

    以下是 ResolveCustomer API 调用的响应的示例。

            
        ##### Resolving Customer Registration Token ##### 
        formFields = urlparse.parse_qs(postBody):
        if formFields.has_key('x-amzn-marketplace-token'):
        marketplaceClient = boto3.client('meteringmarketplace') 
        customerData = marketplaceClient.resolve_customer( 
        RegistrationToken=formFields['x-amzn-marketplace-
        token']) productCode = customerData['ProductCode']
        customerId = customerData['CustomerIdentifier']
        # TODO: Store information away with your customer record
        # TODO: Validate no other accounts share this identifier
                
  3. 您的网站将验证产品代码与您的 SaaS 产品身份相符。

  4. 您的网站必须在客户的会话中保留此客户标识符。它可以临时存储在您的服务器上,也可能是客户浏览器上已签名会话 cookie 的一部分。

  5. 指示客户在产品中创建账户或登录现有账户。

  6. 客户现在已使用特定于该 SaaS 产品的凭证登录您的网站。在您的账户数据库中,对于每个客户可能都有一行。您的账户数据库必须具有与 AWS 客户标识符对应的列,您将使用在步骤 2 获得的客户标识符填充此列。验证您的系统中没有任何其他账户共享此客户标识符。否则,您可能会发送相互冲突的计量记录。

  7. 在卖家注册过程中,系统将向您分配一个 Amazon SNS 主题,用于在客户订阅或取消订阅您的系统时通知您。通知是采用 JSON 格式的 Amazon SNS 通知,用于告知您客户操作。AWS 会将您的账户列入白名单以便您能够侦听有关 Amazon SNS 主题的这些通知。我们建议您使用 Amazon Simple Queue Service (Amazon SQS) 来捕获这些消息。您在收到带有 subscribe-success 的订阅通知后,客户账户已准备就绪,可以计量了。系统不会计量您在此通知前发送的记录。如果您拥有 SaaS 合同产品,则还将在创建合同时收到 entitlement-updated 通知。您的账户数据库必须有额外的一列来表示订阅状态。

    下面是 subscribe-success 订阅通知的示例。

        {
        "action": "subscribe-success",
        "customer-identifier": "T1VJRC0xMjM0MTIzNDEyMzQtNTY3ODU2ODc1Nj",
        "product-code": "72m8mmj6t2dgb8dfscnpsbfmn"
        }        

    注意

    请勿激活产品订阅,除非您收到 SUBSCRIPTION_SUCCESSFUL 通知。

  8. 您可以使用存储在数据库中的客户标识符通过 AWS Marketplace Metering Service 对用量计量或通过 AWS Marketplace Entitlement Service 检查权限。