Технологии

«Пока грант не активирован, договорная цена не действует»: AWS показала два способа раздать приватные предложения Bedrock по всей организации

AWS описала автоматизацию managed entitlements для Amazon Bedrock: в организации с десятками или сотнями аккаунтов каждый из них должен принять приватное предложение отдельно, а гранты, даже будучи созданными, лежат в состоянии Disabled — и до активации аккаунт платит по публичному прайсу. В посте два пути: разовый скрипт без инфраструктуры и событийный стек на CDK, который слушает события AWS Marketplace, проверяет продавца по allowlist, создаёт распределённый грант и просит его активацию через CreateGrantVersion(Status=ACTIVE). Negotiated pricing применяется только после того, как грант дойдёт до ACTIVE или WORKFLOW_COMPLETED, а первое покрытие видно в Cost Explorer с задержкой в часы или дни.

«Пока грант не активирован, договорная цена не действует»: AWS показала два способа раздать приватные предложения Bedrock по всей организации

В чём проблема: один договор, сотни аккаунтов

Управление доступом к моделям в десятках и сотнях аккаунтов AWS создаёт операционное трение, когда каждый рабочий аккаунт должен сам подписаться и сам принять предложение AWS Marketplace Private Pricing Offers, то есть MPPO.

С managed entitlements подписка делается один раз из центрального аккаунта, а доступ раздаётся по организации — но остаётся вторая половина задачи. В организации со включёнными всеми возможностями гранты уровня организации принимаются автоматически, однако остаются в состоянии Disabled, пока их не активируют. Пока кто-то не активировал грант, договорная цена не действует, и аккаунт продолжает платить по публичному прайсу.

В README референсной реализации у этого есть точное имя — «тихий биллинг-блокер»: даже когда гранты раздаются руками через AWS License Manager, они по умолчанию оказываются в Disabled, и до явной активации счета считаются по публичному прайсу, а не по согласованной ставке.

Проверка консоли вручную работает, но она добавляет работы и легко забывается — а пропущенный грант не проявляет себя ничем, кроме счёта.

Два пути: разовый скрипт или событийная автоматизация

AWS предлагает выбрать между двумя способами. Легковесный скрипт нужен для разового исправления без инфраструктуры — когда полученным лицензиям уже доверяют; CDK-автоматизация нужна для постоянной событийной обработки, которая проверяет продавцов, создаёт и активирует распределённые гранты.

Оба пути описаны в репозитории aws-samples, то есть это не схема на словах, а разворачиваемый код.

Путь 1: dry-run, «--apply» и полное отсутствие allowlist

Первый путь — самостоятельный скрипт: он перечисляет полученные лицензии и печатает план в режиме dry-run, а гранты уровня организации создаёт и активирует только при повторном запуске с флагами --apply --confirm-account-id. Ключевая оговорка сделана авторами прямо: allowlist продавцов у этого скрипта нет, поэтому применять его стоит только там, где все полученные лицензии в management-аккаунте уже проверены и вызывают доверие.

Проверка эффекта тоже предусмотрена: данные биллинга в AWS Cost Explorer отстают, поэтому по нему предлагают сравнивать фактическое начисление за покрытое использование Amazon Bedrock уже после того, как расходы появятся. Полезная деталь для воспроизводимой проверки — адаптировать скрипт bedrock_discount_check.py из примеров под конкретного ISV-партнёра и целевой связанный аккаунт.

Путь 2: EventBridge, Lambda и грант с ограниченной целью

Второй путь — событийный. Правило EventBridge слушает события AWS Marketplace в стандартной шине в регионе us-east-1, совпадает по источнику aws.agreement-marketplace и типу события Purchase Agreement Created - Acceptor, после чего вызывает функцию AWS Lambda.

Функция получает событие соглашения, проверяет allowlist продавцов, находит лицензию, создаёт распределённый грант и запрашивает активацию через CreateGrantVersion(Status=ACTIVE). Результат работы уходит в логи CloudWatch, а сам грант может быть нацелен на организацию, выбранные организационные подразделения или отдельные аккаунты.

Активация может быть отложена: договорная цена применяется только после того, как грант активирован и достиг состояния ACTIVE или WORKFLOW_COMPLETED. Это не мгновенный процесс — по тексту AWS, активация и появление биллинговой видимости могут занимать часы или дни.

Что нужно подготовить перед развёртыванием

Предварительные условия перечислены исчерпывающе: разворачивать нужно из management-аккаунта организации, регион — us-east-1, а на машине нужны Python 3.12+, AWS CLI и AWS CDK v2. Отдельный скрипт bootstrap_prereqs.py умеет включать интеграцию License Manager с организацией, trusted access для License Manager и для управления лицензиями AWS Marketplace и создавать необходимые служебные роли — перед применением авторы советуют просмотреть все пункты со статусами APPLY и MANUAL.

Границы применимости обозначены жёстко: предложение должно быть на модель Bedrock с поддержкой License Manager, а продукты SaaS из этой автоматизации исключены. Ограничение объяснено в README: managed entitlements работает через AWS License Manager, который выдаёт лицензии только для типов AMI, Container, Machine Learning и AWS Data Exchange, и подписки на сторонние модели Bedrock попадают в категорию Machine Learning.

Отдельно упомянуты необязательные фильтры productSkus и productNames в скрипте backfill_grants.py — они нужны, чтобы при обработке существующих лицензий не срабатывало широкое совпадение только по эмитенту.

Allowlist продавцов — это граница безопасности, а не формальность

Самое важное предупреждение в посте звучит так: относитесь к allowlist продавцов как к границе безопасности и сверяйте идентификатор каждого продавца с принятым приватным предложением AWS Marketplace или полученной лицензией, прежде чем заполнять таблицу. Широких и непроверенных записей добавлять не следует: подходящий продавец может запустить создание и активацию грантов на всех настроенных целях.

Эксплуатационная часть тоже описана: после развёртывания и заполнения allowlist стек готов обрабатывать события соглашений, а для проверки сквозного сценария предлагается отдельный скрипт e2e_validate. Тестовый стек, если он разворачивался, авторы советуют удалить, чтобы не платить небольшие, но постоянные сборы за Lambda и Amazon EventBridge.

Что здесь проверено, а что остаётся на стороне AWS

Это технический how-to самого вендора: инструкция, а не отчёт об измерениях. AWS не приводит чисел — ни того, сколько времени занимает активация, ни того, сколько аккаунтов обработал стек; сроки даны качественно («часы или дни»), а оценка эффекта отдана читателю через Cost Explorer.

В посте есть и голос клиента, но один: цитата Маркуса Лау, Head of Platform Engineering в Heidi Health, о том, что приватные цены на AWS Marketplace позволяют точно распределять использование и стоимость по аккаунтам и организационным подразделениям и автоматизировать управление грантами по мере подключения новых моделей — чтобы масштабировать управление затратами без масштабирования ручной работы. Это позиция компании, участвовавшей в пилоте, а не независимая проверка. Мы не разворачивали этот стек и не проверяли его в живом аккаунте: приведённые здесь параметры — утверждения авторов поста и README репозитория, опубликованного в день релиза.

Первоисточники

  1. AWS Machine Learning Blog — «Manage private pricing offers for Amazon Bedrock with managed entitlements» (Daniel Wirjo, Bryn Price, Cai Liu, Daniel Quang, 13 октября 2026)
  2. aws-samples — референсная реализация «sample-bedrock-managed-entitlements» (README репозитория, 13 октября 2026)