亚马逊AWS官方博客

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

引言

随着云计算的普及,越来越多的软件供应商选择通过亚马逊云科技 Marketplace(AWS Marketplace)来分发和销售他们的产品。作为一个全球性的数字目录,AWS Marketplace 使客户能够轻松地查找、购买、部署和管理第三方软件和服务。对于软件供应商而言,AWS Marketplace 提供了接触全球客户的机会,同时简化了计费和收款流程。

在 AWS Marketplace 上,Amazon Machine Image (AMI) 是一种常见的产品交付形式。AMI 是一种预配置的虚拟机镜像,包含操作系统和预装的软件,可用于启动 Amazon EC2 实例。本文将深入探讨 AMI 产品在 AWS Marketplace 上的各种定价模式以及系统集成方案,帮助软件供应商更好地理解如何在 AWS Marketplace 上优化其产品策略。

AMI 产品概述

  1. 什么是 AMI 产品?

AMI(Amazon Machine Image)产品是在 AWS Marketplace 上提供的一种软件交付方式,它允许卖家将其软件预装在虚拟机镜像中,买家可以直接在 Amazon EC2 上启动这些镜像。AMI 产品可以是单一 AMI 产品,也可以是包含CloudFormation模板的单一 AMI 产品。

*备注:如果您的解决方案需要从多个不同的源 AMI 部署实例,则必须将所有功能打包到单个 AMI 中。当您的买家部署 AMI 时,无论是在部署说明还是部署模板中,请将实例配置为作为不同的组件运行。

  1. AMI 产品的优势

对于卖家而言,AMI 产品提供了以下优势:

  • 简化部署:客户可以快速启动预配置的实例,无需复杂的安装和配置步骤
  • 灵活的定价模式:支持多种定价策略,包括按小时计费、按年计费、自定义计量等
  • 广泛的客户覆盖:通过 AWS Marketplace 接触全球客户群体
  • 自动化计费:AWS 处理计费和收款,简化财务管理
  • 安全合规:利用 AWS 的安全基础设施和合规认证

对于买家而言,AMI 产品的优势包括:

  • 快速部署:一键启动预配置的软件环境
  • 简化采购:通过现有的 AWS 账单支付软件费用
  • 可靠性:软件运行在 AWS 基础设施上,享受高可用性和可扩展性
  • 集成性:与其他 AWS 服务无缝集成

AMI产品发布流程

  1. 上架前准备清单

  • 产品信息:
    • 详细准确的产品描述
    • 高质量的产品图片和图标
    • 清晰的使用说明和文档
    • 支持联系信息
  • 技术要求:
    • AMI 必须能在所有支持的 AWS 区域正常工作
    • 软件必须能在指定的实例类型上运行
    • 必须支持 AWS Marketplace 的计量和许可机制
  • 合规性要求:
    • 遵守 AWS Marketplace 的条款和条件
    • 符合适用的法律法规
    • 实施适当的数据保护措施
    • 提供明确的隐私政策和服务条款
  1. 选择定价模式

选择合适的定价模式时,请考虑以下因素:

  1. 客户使用模式:客户是持续使用还是间歇性使用?
    • 持续使用:考虑月度固定价格或年度订阅
    • 间歇性使用:考虑按小时计费或自定义计量
  2. 价值衡量标准:产品价值是基于什么?
    • 基于时间:按小时或月度计费
    • 基于资源使用量:自定义计量定价
    • 基于功能:合同定价或BYOL
  3. 目标客户群体:
    • 企业客户:合同定价、BYOL或年度订阅
    • 小型用户:按小时计费或月度固定价格
    • 多样化客户群:混合定价模式
  4. 现有客户基础:
    • 有大量现有许可客户:优先考虑BYOL
    • 新市场拓展:考虑免费模式或按小时计费
  5. 竞争环境:
    • 分析竞争对手的定价策略
    • 考虑如何通过定价创造竞争优势
  6. 运营复杂性:
    • 评估技术能力和资源
    • 自定义计量和合同定价需要更多的技术集成
  1. 发布流程

AMI产品在AWS Marketplace上的发布遵循一个结构化的流程,从准备阶段到最终上线。以下是一个通用的AMI产品发布流程概述:

  1. 准备AMI (Prepare AMI):在AWS卖家账户中创建符合AWS Marketplace要求的亚马逊机器映像,包含产品软件和必要配置。

步骤:选择基础AMI(Amazon Linux 2或Ubuntu等) → 启动EC2实例 → 安装和配置产品软件 → 安装AWS CloudFormation helper脚本和SSM Agent → 实施产品计量机制(如适用) → 移除SSH密钥和授权文件 → 清理历史记录和日志 → 创建AMI → 设置AMI共享权限 → 使用AMI Copy验证跨区域可用性

  1. 扫描AMI (Scan AMI):提交AMI进行自动安全扫描,确保符合AWS安全标准和最佳实践。

步骤:在AWS Marketplace管理控制台选择”AMI扫描” → 输入AMI ID和AWS区域 → 提交扫描请求 → 系统检查常见漏洞和暴露(CVE) → 验证操作系统补丁级别 → 等待扫描结果(通常24小时内) → 解决任何发现的问题 → 必要时重新扫描

  1. 提交元数据 (Submits metadata):根据产品定价模型(按小时、自定义计量单位或预付费)提供详细产品信息。

步骤:在AWS Marketplace管理控制台创建产品 → 选择适当的定价模型(按小时、自定义单位或预付费) → 填写产品名称和详细描述 → 上传产品徽标和截图 → 设置定价信息(小时费率/自定义单位/预付金额) → 定义实例类型支持 → 配置区域可用性 → 提供使用说明和支持信息

  1. 审核 (Review):AWS Marketplace团队审核所有提交的内容,确保符合技术和内容标准。
  2. 受限发布 (Limited Listing):产品进入受限发布状态,仅对卖家账户和指定测试账户可见。
  3. 卖家测试 (Test by Seller):卖家验证产品在Marketplace环境中的完整功能、计费和用户体验。

步骤:访问限制性产品页面 → 测试订阅流程 → 启动产品实例 → 验证软件功能 → 测试特定定价模型(按小时计费/自定义单位计量/预付费功能) → 确认使用报告正确生成 → 向AWS报告任何问题

  1. AWS测试 (Test by AWS Marketplace):AWS团队进行独立测试,验证产品功能、计费集成和用户体验。
  2. 正式上线 (Live Listing):产品获得最终批准后,正式发布到AWS Marketplace公开目录。

AMI 产品的定价模式

AWS Marketplace 为 AMI 产品提供了多种灵活的定价模式,卖家可以根据自己的业务模式选择最适合的定价策略。

以下是完整的定价模式对比表:

定价模式 计费方式 客户价值 适用场景 关键特点
免费模式
(Free)
仅收取 AWS 基础设施费用 无软件费用 • 开源软件
• 入门级产品
• 社区版本
• 扩大用户群体
• 可作为获客策略
• 后续可通过增值服务变现
按小时计费
(Hourly)
按实例运行时间计费 按需付费,灵活性高 • 临时数据处理
• 测试环境
• 使用模式不规律的应用
• 无长期承诺
• 可随时停止计费
• 适合短期或不规律使用
按小时带年度选项
(Hourly with Annual)
提供按小时和年度两种选择 灵活性与折扣兼顾 • 混合使用场景
• 同时服务临时和长期用户
• 长期用户可获折扣
• 临时用户保持灵活性
• 适合多样化客户群体
月度固定价格
(Monthly)
固定月费,不限使用时间 可预测的月度成本 • 全天候运行的应用
• 监控系统
• 数据库服务
• 简化计费
• 不受使用时间波动影响
• 适合持续运行的工作负载
月度带按小时
(Monthly with Hourly)
基本月费+额外使用按小时计费 基础保障+弹性扩展 • 有基准使用量但可能波动的应用 • 基本使用量固定费用
• 峰值使用按需付费
• 平衡成本和灵活性
自带许可
(BYOL)
客户使用已购买的许可证 保护现有投资 • 已有大量现有客户的企业软件 • 简化向云迁移
• 利用现有许可
• 仅支付基础设施费用
自定义计量
(Custom Metering)
基于自定义指标计费 费用与实际价值直接相关 • 数据处理服务
• API服务
• 基于用户的应用
• 按实际使用的资源计费
• 与客户获得的价值挂钩
• 需集成计量服务
合同定价
(Contract)
预付固定期限的许可费用 长期使用权利保障 • 企业级解决方案
• 需要稳定预算的客户
• 可配置合同:客户可定制权利
• 分层合同:预定义功能包
• 通常提供更多企业级支持

典型场景产品定价示例

  1. 企业级业务系统

产品特性:长期稳定运行的企业管理软件环境

推荐定价:分层固定期限合同 + 存储容量扩展计费

适用场景:需要持续可用性保障的ERP/CRM等关键业务系统,适合中大型企业客户

  1. 弹性计算平台

产品特性:预装分析工具的计算密集型环境

推荐定价:管理节点固定期限合同 + 工作节点按小时弹性计费

适用场景:周期性数据处理、临时性批量作业等波动负载场景

  1. 安全运维系统

产品特性:全天候运行的威胁监控防护体系

推荐定价:按受保护节点数阶梯式自定义计价

适用场景:需要实时安全监控的云上业务系统

主要定价模式的实施流程

不同的定价模式有其特定的实施步骤和技术要求。以下是主要定价模式的实施流程概述:

  1. 按小时计费模式实施流程
    • 创建并优化AMI:准备符合AWS Marketplace要求的AMI,确保软件正常运行
    • 创建产品页面:在AWS Marketplace管理门户中创建新产品
    • 选择按小时定价:在定价选项中选择”按小时”模式
    • 设置实例类型和费率:为不同EC2实例类型设置每小时费率
    • 提交产品审核:提交产品以供AWS审核和发布
  1. 自定义计量定价实施流程
    • 创建支持计量的AMI:开发能够跟踪和报告使用量的AMI
    • 集成Marketplace Metering API:在软件中集成AWS Marketplace Metering Service
    • 定义计量维度和价格:设置计量维度(如数据处理量、API调用次数)及其价格
    • 实现使用量报告逻辑:开发定期向AWS报告使用量的机制
    • 提交产品审核:提交产品以供AWS审核和发布
  1. 合同定价实施流程
    • 确定合同类型:选择可配置合同或分层合同模式
    • 定义权利和期限:设置合同包含的权利(如用户数、功能访问)和有效期限
    • 设置价格结构:为不同权利级别和期限设置价格
    • 集成License Manager:实现与AWS License Manager的集成,以验证客户权利
    • 提交产品审核:提交产品以供AWS审核和发布
  1. BYOL模式实施流程
    • 创建并优化AMI:准备符合AWS Marketplace要求的AMI
    • 创建产品页面:在AWS Marketplace管理门户中创建新产品
    • 选择BYOL选项:在定价选项中选择”自带许可”模式
    • 实现许可验证机制:开发验证客户现有许可的机制
    • 提交产品审核:提交产品以供AWS审核和发布

AMI 产品的系统集成

为了充分利用 AWS Marketplace 的功能,卖家需要将其 AMI 产品与各种 AWS 服务进行集成。以下是主要的集成点:

  1. AWS Marketplace Metering Service 集成

对于采用自定义计量定价的产品,需要集成 AWS Marketplace Metering Service 来报告使用量。

集成步骤:

  1. 在 AMI 中安装 AWS SDK
  2. 实现定期收集使用指标的逻辑
  3. 调用 MeterUsage API 向 AWS 报告使用量
  4. 实现错误处理和重试机制

代码示例:

import boto3
import datetime

def report_custom_usage(dimension_name, quantity):
    marketplace_metering = boto3.client('meteringmarketplace')
    
    response = marketplace_metering.meter_usage(
        ProductCode='prod-xxxxxxxxxxxx',  # 您的产品代码
        Timestamp=datetime.datetime.utcnow(),
        UsageDimension=dimension_name,    # 例如 'ProcessedData'
        UsageQuantity=quantity,           # 例如 处理的数据量(GB)
        DryRun=False                      # 设置为 True 进行测试
    )
    
    return response

最佳实践:

  • 实现本地缓存机制,防止网络问题导致计量数据丢失
  • 设置适当的报告频率,避免过于频繁的 API 调用
  • 实现详细的日志记录,便于故障排查
  • 考虑实现使用量预警机制,帮助客户管理成本
  1. AWS License Manager 集成

对于基于许可的产品,集成 AWS License Manager 可以实现许可验证和管理。

集成步骤:

  1. 创建许可模型和权利
  2. 在软件中实现许可检查逻辑
  3. 使用 License Manager API 验证客户许可
  4. 根据许可状态启用或禁用功能

代码示例:

import boto3

def check_license_entitlements():
    license_manager = boto3.client('license-manager')
    
    response = license_manager.check_in_license(
        LicenseConsumptionToken='your-consumption-token',
        Beneficiary='account-id'
    )
    
    # 检查许可权利
    entitlements = response['Entitlements']
    for entitlement in entitlements:
        if entitlement['Name'] == 'UserCount':
            max_users = entitlement['Value']
            # 根据许可限制用户数量
    
    return entitlements
  1. CloudFormation 集成

通过提供 CloudFormation 模板,卖家可以简化客户的部署过程,实现更复杂的多资源部署。

集成步骤:

  1. 创建 CloudFormation 模板,定义所需的 AWS 资源
  2. 包含参数以允许客户自定义部署
  3. 实现初始化脚本以配置软件
  4. 在 AWS Marketplace 产品页面提供模板链接

模板示例:

AWSTemplateFormatVersion: '2010-09-09'
Description: 'Template for deploying Product X'

Parameters:
  InstanceType:
    Type: String
    Default: m5.large
    AllowedValues:
      - m5.large
      - m5.xlarge
      - m5.2xlarge
    Description: EC2 instance type

Resources:
  ProductInstance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: ami-12345678
      InstanceType: !Ref InstanceType
      SecurityGroups:
        - !Ref ProductSecurityGroup
      UserData:
        Fn::Base64: !Sub |
          #!/bin/bash
          # 初始化脚本
          /opt/product/init.sh

  ProductSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Security group for Product X
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 443
          ToPort: 443
          CidrIp: 0.0.0.0/0

Outputs:
  WebsiteURL:
    Description: URL for the product web interface
    Value: !Sub 'https://${ProductInstance.PublicDnsName}'
  1. 系统通知集成

AMI 产品可以集成 AWS Marketplace 的通知系统,接收订阅变更、续订和其他重要事件的通知。

集成步骤:

  1. 创建 SNS 主题接收通知
  2. 配置通知目标(如 Lambda 函数、SQS 队列等)
  3. 实现处理通知的逻辑
  4. 在 AWS Marketplace 管理门户中配置通知设置

通知处理示例:

import json
def lambda_handler(event, context):
    # 解析 SNS 消息
    message = json.loads(event['Records'][0]['Sns']['Message'])
    
    # 处理不同类型的通知
    if message['action'] == 'subscribe-success':
        # 处理新订阅
        customer_id = message['customer-identifier']
        product_code = message['product-code']
        # 激活客户账户
        
    elif message['action'] == 'unsubscribe-pending':
        # 处理即将到期的订阅
        # 发送提醒或准备清理资源
        
    return {
        'statusCode': 200,
        'body': json.dumps('Notification processed successfully')
    }

AMI 产品开发最佳实践

创建高质量的 AMI 是成功的关键,以下是一些最佳实践:

  • 安全性:
    • 使用最新的操作系统补丁
    • 移除不必要的软件包和服务
    • 禁用默认密码和密钥
    • 实施最小权限原则
    • 加密敏感数据
  • 性能优化:
    • 优化操作系统设置
    • 预配置应用程序以获得最佳性能
    • 考虑不同实例类型的性能特性
    • 实施自动扩展机制
  • 用户体验:
    • 提供清晰的初始登录说明
    • 实现自动化配置
    • 提供详细的文档和帮助资源
    • 设计直观的用户界面
  • 可维护性:
    • 实现日志记录和监控
    • 提供自动更新机制
    • 设计模块化架构便于维护
    • 考虑数据备份和恢复机制

结论

AMI 产品在 AWS Marketplace 上提供了灵活的分发和变现途径,通过选择合适的定价模式和实施正确的系统集成,软件供应商可以显著扩大其客户群并简化运营流程。

成功的 AMI 产品策略需要考虑多个因素,包括目标客户需求、产品特性、竞争格局以及技术实现。通过遵循本文介绍的最佳实践和集成方法,软件供应商可以充分利用 AWS Marketplace 的优势,实现业务增长和客户满意度的提升。

随着云市场的不断发展,AMI 产品的定价和集成策略也将继续演进。软件供应商应保持灵活性,根据市场反馈和技术进步不断调整其策略,以保持竞争优势。

参考资源

*前述特定亚马逊云科技生成式人工智能相关的服务目前在亚马逊云科技海外区域可用。亚马逊云科技中国区域相关云服务由西云数据和光环新网运营,具体信息以中国区域官网为准。

本篇作者

刘畅

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