当每个工作负载账户都必须单独订阅并接受 AWS Marketplace 私有定价协议(MPPOs)时,跨数十或数百个 AWS 账户管理 AI 模型访问会造成运维上的摩擦。 带托管授权的Amazon Bedrock 简化了对第三方AI模型的多账户访问,使您可以从一个中央账户订阅一次,然后在整个组织中分发访问权限。
在本文中,我们向您展示两种在 AWS License Manager 中激活 AWS Marketplace Private Pricing Offer (MPPO) 权益的方法。当您需要对已信任的已接收许可证进行一次性、无需基础设施的修复时,请使用轻量级脚本。当您需要持续的、事件驱动的处理流程(验证卖家、创建并激活分布式授权)时,请使用 CDK 自动化。
为什么要自动化资助激活
借助 AWS Marketplace Private Pricing Offers,你可以为 Amazon Bedrock 上的第三方模型协商自定义费率。在符合条件的私有报价被接受后,AWS Marketplace 会在 AWS License Manager 中创建一个许可证。在启用了所有功能的 AWS Organizations 中,组织级别的授权会被自动接受,但在你激活它们之前将保持 Disabled(禁用)状态。
团队通常通过检查 AWS License Manager 控制台并手动激活授权来应对这一问题。手动检查虽然可行,但会增加工作量且容易被遗漏。在有人激活授权之前,协商好的定价不会生效。当团队采用新模型或续签条款时,同样的问题会再次出现。
解决方案概述
示例代码库提供了两条路径:
- 路径 1 —— 轻量级路径 是一个独立脚本,用于列出已收到的许可证并打印试运行计划。只有当你使用以下命令重新运行它时,它才会创建并激活组织范围的授权:
--apply --confirm-account-id。它没有卖家允许名单,因此仅在你信任管理账户中收到的每个许可证时才使用它。 - 路径 2 – 事件驱动路径 使用 AWS Cloud Development Kit (AWS CDK) 在您的 AWS 管理账户中部署持续自动化。
请选择以下实现路径之一。路径1用于无需CDK的一次性激活。路径2用于持续的事件驱动自动化。
路径 1:轻量级脚本(一次性激活)
当您需要一次性激活而不部署 CDK 时,请使用此路径。该脚本会列出管理账户中收到的每个许可证,因此在应用更改之前,请将试运行(dry run)作为您的审核关卡。
- 将示例仓库克隆到本地,并进入项目目录。
git clone https://github.com/aws-samples/sample-bedrock-managed-entitlements.git cd sample-bedrock-managed-entitlements - 以试运行(dry-run)模式运行这个轻量级脚本。
python3 lightweight/distribute_licenses.py - 请逐一检查所列的每个许可,确认 ISV Partner 发行方和账户范围与您期望的私有报价相符。
- 在同一个 AWS Organizations 管理账户中应用已审核的计划。
python3 lightweight/distribute_licenses.py --apply --confirm-account-id ACCOUNT_ID - 在授权生效后,在依赖私有报价进入生产环境之前,请先验证计费路径。AWS Cost Explorer 中的计费数据可能存在延迟,因此请在费用出现后使用它来比较所涵盖 Amazon Bedrock 用量的实际费用。若要进行可重复的检查,请调整示例 scripts/bedrock_discount_check.py 实用工具以匹配您的 ISV Partner 签发方,并确认预期的折扣路径。
路径 2:CDK 自动化(持续激活)
当您希望自动处理新的私有定价协议时,请使用此路径。该 CDK 堆栈会监听符合条件的 AWS Marketplace 协议事件,检查您的卖家允许列表,创建分布式授权,并在 License Manager 需要更多时间时重试激活。该解决方案包含三个组件:
- Amazon EventBridge 规则:该堆栈在默认事件总线上监听 AWS Marketplace 协议事件,位置在
us-east-1。该规则匹配来源为aws.agreement-marketplace以及详细信息类型Purchase Agreement Created - Acceptor,然后调用 AWS Lambda 函数。 - AWS Lambda 函数:该函数接收 AWS Marketplace 协议事件,验证卖家允许列表,发现许可证,创建分布式授权,并请求激活,使用
CreateGrantVersion(Status=ACTIVE)。该函数将结果记录到 Amazon CloudWatch Logs 以便审计。 - AWS License Manager 权益:该授权面向您的组织、所选的组织单元(OU)或特定账户。协商定价仅在授权被激活并达到
ACTIVE或WORKFLOW_COMPLETED.
下图展示了该事件驱动的流程。
图 1:序列图,显示 AWS Marketplace 向 Amazon EventBridge 发送 Purchase Agreement Created – Acceptor 事件,EventBridge 调用一个 AWS Lambda 函数。该函数验证卖家,发现收到的许可证,创建分布式授权,使用 CreateGrantVersion(Status=ACTIVE) 请求激活,并将结果写入 Amazon CloudWatch Logs。
此方法的主要优势:
- 更快获得协商定价。 协商费率在分布式授权达到
ACTIVE或WORKFLOW_COMPLETED后即生效,无需等待人工控制台检查。 - 跨账户的一致处理。 可以为每个接收第三方模型授权的组织部署相同的 AWS Lambda 函数和 Amazon EventBridge 规则模式,因此激活逻辑不会因运营方不同而变化。
- 内置审计记录。 每次激活尝试或跳过决策都会记录到 CloudWatch Logs,为您提供每个授权何时被激活、延迟或忽略的记录。
前提条件
在部署此路径之前,请确认以下前提条件:
- 在
us-east-1中使用 AWS Organizations 管理账户,并配置好 Python 3.12+、AWS Command Line Interface (AWS CLI) 和 AWS CDK v2。 - 确认 AWS Organizations 已启用所有功能,且私有报价针对的是由 License Manager 支持的 Bedrock 模型。软件即服务(SaaS)产品不属于此自动化的范围。
实施步骤
- 在本地克隆示例仓库并进入项目目录。
git clone https://github.com/aws-samples/sample-bedrock-managed-entitlements.git cd sample-bedrock-managed-entitlements - 验证或启用组织前提条件。
python3 scripts/bootstrap_prereqs.py --check --region us-east-1在做出更改之前,检查所有
APPLY或MANUAL项。引导脚本可以启用 License Manager 组织集成、License Manager 可信访问、AWS Marketplace 许可证管理可信访问以及所需的服务关联角色。python3 scripts/bootstrap_prereqs.py --apply --region us-east-1 --confirm-account-id ACCOUNT_ID - 配置部署输入。
python3 scripts/setup_config.py查看
config/sellers.json。配置您的组织 ID、卖家允许列表、通知以及可选的授权目标。默认情况下,授权面向整个组织。使用grantTargets将授权范围限定到选定的 OU 或 AWS 账户。 - 部署 CDK 堆栈。
cd cdk pip install -r requirements.txt cdk bootstrap aws://ACCOUNT_ID/us-east-1 cdk deploy - 从
config/sellers.json.cd .. python scripts/seed_sellers.py --config config/sellers.json填充 Amazon DynamoDB 卖家允许列表。将卖家允许列表视为安全边界。在填充表之前,请根据您已接受的 AWS Marketplace 私有报价或收到的 License Manager 许可证验证每个卖家账户 ID。不要添加宽泛或未经验证的卖家条目,因为匹配的卖家可能会在您配置的授权目标中触发授权创建和激活。
完成部署和卖家填充后,该堆栈即可处理符合条件的 AWS Marketplace 协议事件。只有允许列表中经过验证的卖家才会触发授权创建和激活,并且激活可能会延迟到 License Manager 完成授权工作流处理之后。
- 验证已部署的自动化。
python scripts/e2e_validate.py --org-id o-xxxxxxxxxx --seller-account SELLER_ACCOUNT_ID --simulate - 在出现符合条件的 AWS Marketplace 协议事件后验证授权激活。
aws logs tail /aws/lambda/mppo-grants-handler --follow --region us-east-1 python scripts/bedrock_discount_check.py --issuer "ISV Partner"激活和账单可见可能需要数小时或数天。在事件驱动的工作流接受并激活授权后,请在 AWS License Manager 中确认授权状态,然后在账单数据出现后,在 AWS Cost Explorer 中验证所涵盖的 Amazon Bedrock 使用量。要进行可重复的检查,请调整示例 scripts/bedrock_discount_check.py 工具,使其与您的 ISV Partner 签发方和目标关联账户相匹配。
清理
如果您部署此堆栈用于测试,请将其移除,以避免持续的少量 Lambda 和 Amazon EventBridge 费用:
cdk destroy
客户之声
“作为每周支持数百万次临床医生咨询的 AI Care Partner,Heidi Health 在真实规模上依赖第三方基础模型。AWS Marketplace 上的私有定价为我们提供了一种经济高效的方式来管理这种增长:我们可以跨 AWS 账户和组织单元细化地归因用量和定价,并在采用新模型时自动执行授权管理。这让我们的平台团队无需增加人工工作即可扩展成本治理。”
— Marcus Lau,Heidi Health 平台工程主管
结论
本文展示了为 Amazon Bedrock 私有定价要约激活托管授权的两种方法。使用轻量级脚本对受信任的接收许可证进行一次性激活,或者当您需要为新 AWS Marketplace 协议进行持续的事件驱动处理时部署 CDK 自动化。这两种方法都减少了人工工作,并帮助协商的定价在分布式授权激活后生效。
要开始使用,请在您的 AWS 管理账户中尝试 代码示例 以自动化模型订阅。
资源
- 示例代码:Amazon Bedrock with managed entitlements(GitHub)
- AWS License Manager User Guide
- AWS License Manager API Reference: CreateGrantVersion
- Amazon EventBridge 用户指南
- AWS CDK 开发人员指南
