AWS Machine Learning

使用托管权益管理 Amazon Bedrock 的私有定价优惠

AWS介绍两种激活Amazon Bedrock私有定价授权(MPPO)的可复现方案:轻量脚本供一次性激活受信任许可,或用CDK部署事件驱动自动化,经EventBridge接收协议事件、校验卖家允许列表后创建并激活分布式授权,使协商价格跨多账户生效。作者提醒卖家允许列表是安全边界,且计费生效可能滞后数小时或数天。

Sequence diagram showing AWS Marketplace sending a Purchase Agreement Created - Acceptor event to Amazon EventBridge, which invokes an AWS Lambda function. The function verifies the seller, discovers the received license, creates a distributed grant, requests activation with CreateGrantVersion(Status=ACTIVE), and writes the outcome to Amazon CloudWatch Logs.
配图来源 · AWS Machine Learning

当每个工作负载账户都必须单独订阅并接受 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)作为您的审核关卡。

  1. 将示例仓库克隆到本地,并进入项目目录。
    git clone https://github.com/aws-samples/sample-bedrock-managed-entitlements.git
    cd sample-bedrock-managed-entitlements
  2. 以试运行(dry-run)模式运行这个轻量级脚本。
    python3 lightweight/distribute_licenses.py
  3. 请逐一检查所列的每个许可,确认 ISV Partner 发行方和账户范围与您期望的私有报价相符。
  4. 在同一个 AWS Organizations 管理账户中应用已审核的计划。
    python3 lightweight/distribute_licenses.py --apply --confirm-account-id ACCOUNT_ID
  5. 在授权生效后,在依赖私有报价进入生产环境之前,请先验证计费路径。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.

下图展示了该事件驱动的流程。

Sequence diagram showing AWS Marketplace sending a Purchase Agreement Created - Acceptor event to Amazon EventBridge, which invokes an AWS Lambda function. The function verifies the seller, discovers the received license, creates a distributed grant, requests activation with CreateGrantVersion(Status=ACTIVE), and writes the outcome to Amazon CloudWatch Logs.

图 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)产品不属于此自动化的范围。

实施步骤

  1. 在本地克隆示例仓库并进入项目目录。
    git clone https://github.com/aws-samples/sample-bedrock-managed-entitlements.git
    cd sample-bedrock-managed-entitlements
  2. 验证或启用组织前提条件。
    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
  3. 配置部署输入。
    python3 scripts/setup_config.py

    查看 config/sellers.json。配置您的组织 ID、卖家允许列表、通知以及可选的授权目标。默认情况下,授权面向整个组织。使用 grantTargets 将授权范围限定到选定的 OU 或 AWS 账户。

  4. 部署 CDK 堆栈。
    cd cdk
    pip install -r requirements.txt
    cdk bootstrap aws://ACCOUNT_ID/us-east-1
    cdk deploy
  5. 从 config/sellers.json.
    cd ..
    python scripts/seed_sellers.py --config config/sellers.json

    填充 Amazon DynamoDB 卖家允许列表。将卖家允许列表视为安全边界。在填充表之前,请根据您已接受的 AWS Marketplace 私有报价或收到的 License Manager 许可证验证每个卖家账户 ID。不要添加宽泛或未经验证的卖家条目,因为匹配的卖家可能会在您配置的授权目标中触发授权创建和激活。

    完成部署和卖家填充后,该堆栈即可处理符合条件的 AWS Marketplace 协议事件。只有允许列表中经过验证的卖家才会触发授权创建和激活,并且激活可能会延迟到 License Manager 完成授权工作流处理之后。

  6. 验证已部署的自动化。
    python scripts/e2e_validate.py --org-id o-xxxxxxxxxx --seller-account SELLER_ACCOUNT_ID --simulate
  7. 在出现符合条件的 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 管理账户中尝试 代码示例 以自动化模型订阅。

资源


关于作者

原始出处

AWS Machine Learning

内容说明

原始发布及相关权利归来源方。

机器翻译 · 请以原文为准