Перейти к содержанию
Публикация AiManual

Как запустить GPT-6 Sol, Luna и Astra на Amazon Bedrock: глобальный кросс-региональный инференс

OpenAI GPT-6 Sol, Luna и Astra стали доступны в Amazon Bedrock через глобальные кросс-региональные профили. Разбираем вызовы через Converse API и OpenAI-совмест

Коротко

Что будет в материале

  1. 01

    Что такое глобальный кросс-региональный инференс и зачем он нужен

  2. 02

    Пошаговый запуск: от выбора региона до первого запроса

  3. 03

    Настройка IAM и SCP: почему обычные политики блокируют вызовы

  4. 04

    Квоты и биллинг: как не выйти за лимиты

Модели OpenAI GPT-6 Sol, GPT-6 Luna и GPT-6 Astra открылись в Amazon Bedrock через глобальные кросс-региональные профили инференса. Запуск сводится к трём действиям: выбрать исходный регион из пяти азиатско-тихоокеанских, подставить в поле model идентификатор профиля вида global.openai.gpt-6-sol и отправить запрос на эндпоинт bedrock-runtime через Converse API либо OpenAI-совместимый клиент.

Код занимает десяток строк. Возня начинается с прав и квот. При глобальном инференсе условие aws:RequestedRegion принимает значение unspecified, поэтому региональные allowlist-политики и SCP рубят вызовы с AccessDenied. Со стороны лимитов сюрприз тоже есть: выходные токены расходуют квоту в 10 раз быстрее входных.

Ниже разобраны обе ловушки плюс мониторинг. Оговорка на входе: часть эксплуатационных деталей, а именно точные формулировки условий IAM, значения квот и условия хранения данных, в исходном анонсе AWS не раскрыта. Такие места помечены как требующие сверки с документацией, а не поданы как факт.

Что такое глобальный кросс-региональный инференс и зачем он нужен

Глобальный кросс-региональный инференс маршрутизирует запросы по поддерживаемым коммерческим регионам AWS, где развёрнута модель, и даёт доступ к их совокупной мощности. В анонсе AWS механику описывают так: вы передаёте идентификатор профиля глобального кросс-регионального инференса вместо идентификатора модели.

Исходный регион (source Region) - это регион, откуда уходит вызов API. Целевой регион для обработки Amazon Bedrock подбирает сам, вручную его указывать не нужно.

Чем глобальный инференс отличается от регионального

При региональном инференсе модель развёрнута в конкретном регионе, и вызов уходит именно туда. Глобальный профиль снимает привязку к одной географии: запрос из Сингапура может обработаться в другом коммерческом регионе AWS.

Три практических следствия. Биллинг, отслеживание квот, AWS CloudTrail и Amazon CloudWatch остаются в исходном регионе, то есть счёт и логи не переезжают вслед за обработкой. Дашборды и алерты, настроенные на ваш регион, продолжают работать. Ручной выбор целевого региона не нужен, а значит не придётся переписывать код под конкретную географию.

Обратная сторона: политики, которые разрешают вызовы только по списку регионов, начинают блокировать глобальные профили. Разбор запуска GPT-5.6 из Sydney и Melbourne показывает, как отделить регион запроса от глобального инференса и не сломать существующие ограничения при миграции.

Какие модели OpenAI доступны и из каких регионов

Через глобальный инференс открыты три модели. GPT-6 Sol и GPT-6 Luna доступны из всех пяти регионов: Сингапур, Джакарта, Малайзия, Таиланд и Тайбэй. GPT-6 Astra доступна только из Азиатско-Тихоокеанского региона (Сингапур).

ПрофильМодельИсходные регионыНазначение
global.openai.gpt-6-solGPT-6 SolСингапур, Джакарта, Малайзия, Таиланд, ТайбэйСложные задачи рассуждения и программирования, включая работу, растянутую на неделю
global.openai.gpt-6-lunaGPT-6 LunaСингапур, Джакарта, Малайзия, Таиланд, ТайбэйСфокусированные повторяемые операции при большом объёме
global.openai.gpt-6-astraGPT-6 AstraСингапур (ap-southeast-1)Сложные рассуждения, программирование, длинные документы

Коды регионов: ap-southeast-1 (Сингапур), ap-southeast-3 (Джакарта), ap-southeast-5 (Малайзия), ap-southeast-7 (Таиланд), ap-east-2 (Тайбэй). Все три модели вызываются на эндпоинте bedrock-runtime.

По назначению модели разведены чётко. Sol тянет сложные рассуждения и программирование: крупный рефакторинг, разбор архитектуры, многошаговые пайплайны. Luna рассчитана на сфокусированные повторяемые задачи при высоком объёме, где важнее задержка и цена вызова. Astra берёт сложные рассуждения, программирование и длинные документы. Корпоративные сценарии Astra разобраны отдельно в материале про GPT-6 Astra, AI-агентов и локальные модели.

Общее у всех трёх: приём текста и изображений, клиентское использование инструментов и кэширование промптов. Уровни reasoning effort различаются. Sol и Luna принимают none, low, medium, high, xhigh и max. Astra принимает те же уровни, кроме none.

Пошаговый запуск: от выбора региона до первого запроса

  1. Выберите исходный регион: Сингапур, Джакарта, Малайзия, Таиланд или Тайбэй. Для Astra остаётся только Сингапур.
  2. Проверьте, что нужная модель открыта в вашем аккаунте именно в этом регионе.
  3. Настройте IAM-политику с учётом aws:RequestedRegion=unspecified, детали в разделе ниже.
  4. Отправьте запрос на bedrock-runtime, указав в поле model идентификатор профиля, например global.openai.gpt-6-sol.
  5. Альтернативный путь: тот же профиль вызывается через OpenAI-совместимый эндпоинт или Codex CLI.

Вызов через Converse API

Пример на Python и boto3. Клиент создаётся в исходном регионе, в поле modelId идёт идентификатор профиля, а не модели.

import boto3

client = boto3.client("bedrock-runtime", region_name="ap-southeast-1")

response = client.converse(
    modelId="global.openai.gpt-6-sol",
    messages=[
        {
            "role": "user",
            "content": [{"text": "Разбери стектрейс и предложи патч"}],
        }
    ],
    inferenceConfig={"maxTokens": 2048},
    additionalModelRequestFields={"reasoning_effort": "high"},
)

print(response["output"]["message"]["content"][0]["text"])

Поле reasoning_effort в additionalModelRequestFields задаёт уровень усилий рассуждения. Точное имя ключа и допустимые значения сверяйте с документацией по модели: Sol и Luna принимают none, low, medium, high, xhigh, max, Astra те же уровни без none. Ответ придёт из целевого региона, а метрики и логи останутся в исходном.

Другие примеры работы с Converse API, включая разбор content blocks и вызов инструментов, собраны в руководстве по интеграции Claude Opus 5 на Amazon Bedrock. Механика вызова та же, меняются идентификатор модели и набор поддерживаемых возможностей.

Использование OpenAI-совместимых API и Codex CLI

Для OpenAI-совместимого доступа ключ и точка входа берутся из вашего окружения AWS: аутентификация идёт через IAM, а не через статический ключ OpenAI. Базовый путь эндпоинта уточняйте в документации Bedrock, ниже показана структура запроса.

from openai import OpenAI

client = OpenAI(
    base_url="https://<bedrock-openai-endpoint>/openai/v1",  # путь взять из документации Bedrock
    api_key="<credentials из настроенного AWS-профиля>",
)

completion = client.chat.completions.create(
    model="global.openai.gpt-6-luna",
    messages=[{"role": "user", "content": "Суммаризируй лог инцидента"}],
)

print(completion.choices[0].message.content)

Codex CLI настраивается похожим образом: в конфигурации клиента указываются провайдер, базовый URL и модель в виде идентификатора профиля. Набор поддерживаемых возможностей у OpenAI-совместимого слоя может отличаться от самого OpenAI API, поэтому редкие параметры проверяйте на тестовом аккаунте, а не ожидайте полной совместимости. Пошаговый разбор более раннего семейства с примерами кода и сравнением затрат есть в гайде по запуску GPT-5.6 Sol, Terra и Luna на Amazon Bedrock.

Настройка IAM и SCP: почему обычные политики блокируют вызовы

При вызове глобального профиля регион запроса не задаётся явно, и в условии aws:RequestedRegion оказывается значение unspecified. Политика, которая разрешает bedrock:InvokeModel только для конкретных регионов, такой вызов отклонит. Анонс AWS описывает доступ и маршрутизацию, но готовых шаблонов политик и точных формулировок условий в нём нет. Шаблоны ниже - рабочие заготовки, которые нужно адаптировать под свой аккаунт и прогнать в песочнице.

Пример IAM-политики для глобального инференса

Разрешение выдаётся на ресурс профиля инференса, а не на модель, и дополняется условием по aws:RequestedRegion.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "InvokeGlobalGpt6",
      "Effect": "Allow",
      "Action": [
        "bedrock:InvokeModel",
        "bedrock:InvokeModelWithResponseStream"
      ],
      "Resource": "arn:aws:bedrock:*:*:inference-profile/global.openai.gpt-6-*",
      "Condition": {
        "StringEquals": {
          "aws:RequestedRegion": "unspecified"
        }
      }
    }
  ]
}

Политика крепится к роли, из-под которой уходят вызовы. Две детали стоит проверить: точный формат ARN профиля инференса в вашем регионе и необходимость отдельного разрешения на доступ к базовой модели. Второе действие, bedrock:InvokeModelWithResponseStream, нужно только для потоковых вызовов, без него потоковые клиенты получат отказ.

Особенности SCP и aws:RequestedRegion=unspecified

SCP работает уровнем выше IAM и способен перекрыть любое разрешение. Типовая защита вида "запретить всё вне списка домашних регионов" ломает глобальный инференс, потому что для него региона в условии нет. Исправление: добавить unspecified в список допустимых значений или исключить глобальные профили из запрещающего условия.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyBedrockOutsideHomeRegions",
      "Effect": "Deny",
      "Action": "bedrock:*",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:RequestedRegion": [
            "ap-southeast-1",
            "ap-southeast-3",
            "ap-southeast-5",
            "ap-southeast-7",
            "ap-east-2",
            "unspecified"
          ]
        }
      }
    }
  ]
}

Правьте SCP только после теста в отдельном аккаунте или подразделении: ошибка в условии Deny моментально отрезает Bedrock у всей организации. AccessDenied при корректной IAM-политике почти всегда означает, что сработал именно SCP.

Квоты и биллинг: как не выйти за лимиты

Квоты измеряются в токенах в минуту (tokens per minute, TPM) и отслеживаются в исходном регионе, как и биллинг. Счёт и лимиты остаются там, откуда ушёл вызов, даже если обработал его другой регион.

Ключевая особенность: выходные токены расходуют квоту с 10-кратным коэффициентом, то есть один сгенерированный токен списывает десять токенов лимита. При лимите 100 000 TPM это не больше 10 000 выходных токенов в минуту, если ничего не оставлять на вход. Входные токены в таком расчёте идут по номиналу, хотя точные правила стоит подтвердить в Service Quotas для Amazon Bedrock: детали квот в анонсе AWS не раскрыты.

Как выходные токены влияют на квоту

Разрыв между ожиданием и реальностью здесь большой. Пайплайн, который генерирует по 1 000 токенов на запрос, съедает 10 000 TPM. Десять параллельных таких запросов выбирают 100 000 TPM, то есть весь лимит из примера. Astra добавляет риск: длинные ответы по документам быстро упираются в потолок.

Что помогает на практике:

  • maxTokens задаёт жёсткий потолок генерации и не даёт модели разговориться.
  • Понижение reasoning effort уменьшает объём служебных токенов на задачах, где глубокое рассуждение не нужно.
  • Кэширование промптов переиспользует общие инструкции и описания инструментов между запросами, снижая долю входных токенов.
  • Разделение ролей по моделям: Luna на маршрутизацию и извлечение данных, Sol на сложные случаи, Astra на длинные документы.

Лимиты и контроль расходов полезно закладывать в слой агентов, а не в приложение. Обзор обновлений Bedrock и AgentCore за август 2026 разбирает временные политики, лимиты запросов и контроль расходов, которые снимают часть этой работы с кода.

Мониторинг и наблюдаемость: CloudWatch и CloudTrail

CloudWatch и CloudTrail остаются в исходном регионе, поэтому наблюдаемость не разваливается при кросс-региональной обработке. Настраивать дашборды на целевой регион не нужно: ваших метрик там не будет.

Ключевые метрики CloudWatch для Bedrock

Минимальный набор для контроля: Invocations (число вызовов), InvocationLatency (задержка), InputTokenCount и OutputTokenCount (объём токенов), а также счётчики ошибок. Точные имена метрик и доступные измерения сверяйте в консоли CloudWatch для Bedrock: набор зависит от модели и версии сервиса.

  • Алерт на OutputTokenCount помогает поймать приближение к квоте до того, как посыпятся отказы.
  • Алерт на рост ошибок вызовов отделяет проблемы прав от проблем лимитов.
  • Дашборд по Invocations и InvocationLatency показывает, как распределение нагрузки совпадает с ожиданиями по задержке.

Аудит через CloudTrail

CloudTrail пишет события вызовов, включая bedrock:InvokeModel, с указанием исходного региона, идентификатора профиля и того, кто сделал вызов. По этим событиям видно, кто и когда дёргал модели, и это удобная база для фильтров по конкретным профилям.

Ограничение, которое всплывает не сразу: событие фиксируется в исходном регионе, а целевой регион обработки в логе может не отражаться. Если для расследования важно знать, где именно обрабатывался запрос, на одну запись CloudTrail рассчитывать не стоит.

Безопасность, хранение данных и обнаружение злоупотреблений

Глобальный кросс-региональный инференс означает, что запрос может обрабатываться в другом коммерческом регионе AWS, а не только в том, откуда вы его отправили. Для большинства рабочих нагрузок это техническая деталь, для регулируемых отраслей - пункт, который нужно оценивать отдельно.

Честная оговорка: исходный анонс AWS описывает доступность моделей и маршрутизацию, но не раскрывает условий хранения данных, сроков и деталей автоматического обнаружения злоупотреблений. Утверждать, что именно происходит с вашими данными, опираясь на этот материал, нельзя. Перед продом поднимите документы AWS по защите данных для Bedrock и уточните три вопроса: как обрабатываются данные при кросс-региональной передаче, какие действуют сроки хранения и как AWS уведомляет о подозрительной активности.

Что известно точно из описания механики: биллинг, отслеживание квот, CloudTrail и CloudWatch остаются в исходном регионе. Это упрощает аудит, но не заменяет оценку соответствия для regulated-сценариев.

Типичные ошибки и как их избежать

  1. Региональная allowlist-политика без учёта unspecified. Вызовы глобальных профилей возвращают AccessDenied. Решение: отдельная политика с условием StringEquals aws:RequestedRegion=unspecified.
  2. SCP, который запрещает всё вне списка регионов. Ошибка проявляется как внезапный отказ на рабочих аккаунтах. Решение: добавить unspecified в список допустимых значений или исключить глобальные профили из Deny, изменения сначала прогнать в песочнице.
  3. Недооценка расхода квоты. Выходные токены списывают лимит с 10-кратным коэффициентом, и пайплайн упирается в потолок при штатной нагрузке. Решение: считать TPM по выходным токенам, а не по общему объёму, и ограничивать maxTokens.
  4. Отсутствие мониторинга. Квота заканчивается без предупреждения, ошибки всплывают у пользователей. Решение: алерт на OutputTokenCount и на рост числа отказов.
  5. Вызов Astra из региона, отличного от Сингапура. Профиль global.openai.gpt-6-astra доступен только из ap-southeast-1. Решение: маршрутизировать такие вызовы из Сингапура или брать Sol вместо Astra.

Проверьте эти пять пунктов до продакшн-нагрузки: отправьте по одному тестовому вызову global.openai.gpt-6-luna и global.openai.gpt-6-sol из своего аккаунта, посмотрите, что попало в CloudWatch и CloudTrail, и только после этого переводите трафик. Если AccessDenied всё равно прилетает при корректной IAM-политике, ищите причину в SCP и в условии по aws:RequestedRegion.

Подписаться на канал