亚马逊AWS官方博客

SaaS 产品在亚马逊云科技 Marketplace 上的定价模式及系统集成

1. 概述

亚马逊云科技 Marketplace(以下简称 Marketplace)是一个提供甄选的数字化产品的平台,也是 ISV(Independent Software Vendor)触达亚马逊云科技庞大的海外用户群。为了给企业提供更加易用的应用层软件,越来越多的 ISV 推出了 SaaS 产品。本文将介绍 Marketplace 中 SaaS 产品不同的定价模式,以及在不同模式下如何集成。

2. 定价模式介绍

SaaS 产品共有三种定价模式:

  • SaaS 合约(Contract):用户按合约预付费,可以选择厂商给出的 1 月 / 1 年 / 3 年的合约价格。合约到期后,用户需要续约才能继续使用产品。供应商通过调用 Marketplace API 确认购买情况。
  • SaaS 订阅(Subscription): 用户按使用量后付费,根据订阅维度的收费标准和实际使用量按需付费,且可随时取消订阅。供应商需定期提交使用报告,由 Marketplace 完成计费,也称为 usage-based、consumption-based 或 pay-as-you-go 模式。
  • SaaS 合约消费混合(Contract with Consumption):结合了前两种模式的特点。客户预先支付基础授权费,之后还需按实际使用量持续付费。供应商同时需要确认购买情况和定期提交使用报告。

下面这张图解释了三种模式下客户获取和使用 SaaS 应用的流程:

3. 定价模式选择

产品发布后将无法更改产品的定价模式,因此,产品发布前需要选择合适的定价模式。如果您根据使用量收费,但将来会收取预付费用,则应首先使用 SaaS 合约消费混合(Contract with Consumption)定价模式发布产品。此外,使用 SaaS 订阅(Subscription)定价模式,将无法为特定客户创建专属优惠(Private Offer)来收取预付费用。

特性 SaaS 合约(Contract) SaaS 订阅(Subscription) SaaS 合约消费混合(Contract with Consumption)
付款模式 预付费 按使用量后付费 基础费用预付 + 额外使用量后付费
计费周期 一次性预付整个合约期 按月计费 合约费用一次性预付 + 额外使用量按月计费
合约期限 固定期限(通常为 1 个月 / 1 年 / 3 年) 无固定期限,随时可取消 固定期限基础合约 + 灵活的额外使用量
续订方式 合约到期需手动续订或设置自动续订 持续订阅直至客户取消 基础合约到期需续订,额外使用持续计费
API集成 使用 GetEntitlements API 检索客户权限 使用 MeterUsage API 报告使用量 同时使用两种 API
SNS通知 接收 aws-mp-entitlement-notification 通知 接收 aws-mp-subscription-notification 通知 接收所有相关通知
使用限制 基于购买的权限 根据报告的使用量计费,无预设限制 基础权限固定,超额使用按量计费
价格灵活性 可提供不同期限的固定价格 可设置不同维度的使用量价格 最灵活,可组合固定价格和使用量价格
Private Offer 支持 部分支持(不支持预付费 Private Offer) 支持
适用场景 功能固定、价值明确的产品 使用量波动大、按需付费的服务 有基础功能和高级功能区分的产品

4. 系统集成

4.1 用户身份处理机制

用户身份验证流程对于所有定价模型都是相同的:

  1. 在 Marketplace 中,买方配置并支付(如需预付)。
  2. 买方将被重定向到卖家的网站,并在 HTTP 请求正文中包含一个令牌。
  3. 卖家调用 ResolveCustomer API 将该令牌交换为该 Web 访客的 Marketplace 客户 ID 及其它详细信息。
  4. 卖家将该客户 ID 存储在 SaaS 应用程序中,并将其与创建新 SaaS 账户或登录现有账户的 Web 访客相关联。
  5. 客户成功登录 SaaS 后将两个账号体系的身份进行绑定,持久化相关的客户信息(CustomerIdentifier, CustomerAWSAccountId, ProductCode)。
  6. 监听 SNS 消息,获得该客户的订阅成功消息后(subscribe-success),再给予服务。

4.2 用量处理机制

4.2.1 SaaS 合约定价(预付/自动续订)

在这种定价模型中,买家支付预付费用,这使他们能够根据购买详细信息(也称为权利)使用 SaaS 应用程序。

卖家的 SaaS 应用程序如何检索买家的购买详细信息(权利或 entitlements):

  1. 确认买家的预付款后,Marketplace 会通过 Amazon SNS(aws-mp-entitlement-notification)发送一条消息 entitlement-updated,通知应用程序特定客户 ID 的权利已更改。新购买或升级时可能会发生这种情况。
  2. 卖家的 SaaS 应用程序调用 GetEntitlements API 检索该客户 ID 的权利。
  3. 卖家的 SaaS 应用程序根据该客户 ID 将这些权利与相应的 SaaS 账户相关联。
  4. 根据这些权利,卖家的 SaaS 允许使用量达到这些限制。卖家有责任监控和限制使用。
  5. 持续监听 SNS 消息,当获取客户合约改变的消息 entitlement-updated 时,调用 GetEntitlements API 获取该客户最新的合约信息,更新 SaaS 架构中的客户合约信息,并按照合约提供相应服务。

4.2.2 SaaS 订阅(按量付费)

在此定价模型中,买方无需预先付款。卖家监控买家的使用情况并将其报告给 Marketplace 进行计费。

卖家的 SaaS 应用程序如何报告计费使用情况:

  1. 当买家的订阅成功且可计费时,Marketplace 会通过 Amazon SNS(aws-mp-subscription-notification)向卖家发送一条消息 subscribe-success,其中包含买家的客户 ID。卖家的应用程序根据该客户 ID 使用相应的 SaaS 账户存储此状态。
  2. 卖家允许买方开始将 SaaS 应用程序用于即用即付组件。
  3. 卖家监控和记录使用情况。卖家负责跟踪使用情况并在必要时实施限制,以降低风险并最大限度地减少暴露。
  4. 卖家每小时调用 BatchMeterUsage API 向 Marketplace 报告前一小时的使用情况,以便向买家收费。
  5. 用量情况会根据每小时进行累计,本小时内会进行覆盖。如有计算错误,可以在当前一小时内进行覆盖,或在后续小时的传输中进行调整。
  6. 建议采取相同的数据格式持久化客户的用量传输信息,用于对账。
  7. 如果当前小时该客户没有产生用量,请将用量设置为 0 进行传输。
  8. 如果买家在 Marketplace 中启动取消订阅流程,则 Marketplace 会向卖家发送通知 unsubscribe-pending,其中包含买家的 Marketplace 客户 ID。卖家有一小时的时段来报告所有未报告的使用情况,并限制买家对 SaaS 应用程序的访问。收到 unsubscribe-success 消息后,该用户的发送用量 API 将停止使用。

4.2.3 SaaS 合约与消费(预付+按量付费)

在此定价模型中,买家在 Marketplace 中订阅 SaaS 应用程序时需要支付预付软件费用,同时同意额外计费。该计费模型为上述两种计费模型的结合,需要将两种计费模型的对接方式进行结合,无需独立的架构设计。

4.3 SNS 消息机制

SNS 消息机制用于提供客户与 SaaS 产品之间的关系变化通知,包含客户的订阅情况,客户的合约升级情况。建议使用 SQS 消息队列来承接 SNS 的消息,具体实践可以参考 https://docs.aws.amazon.com/zh_cn/sns/latest/dg/subscribe-sqs-queue-to-sns-topic.html#

SNS 的消息体只包含状态的变化,而不包含具体的细节。例如,entitlement-update 的消息体中并不包含该客户对于该产品的合约到底发生了如何变化(新购买、过期、升级等),需要后续调用 GetEntitlements API 获取合约的最新信息。

对于订阅类型的产品,需要更多关注 unsubscribe-pending和unsubscribe-success 的消息,这意味着该客户对于该产品在 Marketplace 中进行了取消订阅的操作。当收到 unsubscribe-pending 消息体通知后,SaaS 供应商有 1 小时的时间来向 Marketplace 发送最终用量,该用户的发送用量的 API 将在 unsubscribe-success 消息后停止使用。

5. 总结

Marketplace 为供应商提供了丰富的定价工具支持,在发布产品前,可根据实际情况选择最适合自身的 SaaS 定价模式。

本篇作者

刘畅

亚马逊云科技合作伙伴解决方案架构师,负责亚马逊云科技合作伙伴相关的产品技术以及解决方案的建设。

张明月

亚马逊云科技资深合作伙伴解决方案架构师,负责亚马逊云科技合作伙伴相关的产品技术以及解决方案的建设。在企业 IT、云计算方面有 10+ 年的从业经历,在计算、存储、安全、DevOps 等领域有丰富的架构设计及实践经验。