Интеграция SageMaker без SigV4: OpenAI-совместимое API | AiManual
AiManual Logo Ai / Manual.
24 Май 2026 Инструмент

OpenAI-совместимое API для Amazon SageMaker: инструкция по интеграции без SigV4

Пошаговая инструкция по настройке SageMaker endpoint для приема запросов в формате OpenAI API. Избавьтесь от SigV4 подписи, используйте bearer token. Примеры дл

Если вы когда-нибудь пытались прикрутить Amazon SageMaker к LangChain или Vercel AI SDK, то знаете эту боль: сигнатуры SigV4, сложные заголовки, постоянные танцы с бубном вокруг аутентификации. А OpenAI — просто кинул API-ключ и погнал. Почему нельзя так же? Можно. И я покажу как.

💡
Идея проста: мы ставим прослойку между вашим клиентом и SageMaker endpoint, которая принимает OpenAI-совместимые запросы, конвертирует их в SageMaker формат и подписывает SigV4. Но есть и более элегантный способ — настроить сам endpoint на приём bearer token.

Почему SigV4 — это головная боль

SigV4 — это стандартный способ аутентификации запросов к AWS API. Он требует вычисления подписи на основе секретного ключа, временных меток, региона и сервиса. Для инференса моделей это превращается в постоянное переписывание клиентов. Любой OpenAI-совместимый инструмент (например, openai-python) просто не умеет подписывать SigV4. Приходится писать обёртки, использовать boto3, мучиться с потоками.

Альтернатива — Amazon Bedrock, но он поддерживает только ограниченный набор моделей. Если вы хотите кастомную модель, обученную на своих данных, или, скажем, открытую LLM вроде Llama 3, — путь один: SageMaker. И вот тут нужен мостик между OpenAI-миром и AWS.

Что предлагает наш подход

Есть два основных пути. Первый — развернуть отдельный proxy-сервер (например, на AWS Lambda + API Gateway), который принимает запросы с bearer token, перепаковывает их и подписывает SigV4. Второй — встроить OpenAI-совместимый слой прямо в контейнер модели на SageMaker, используя такие фреймворки, как AIPerf или vLLM с поддержкой OpenAI API.

В этой инструкции мы сфокусируемся на втором варианте — он проще, быстрее и не требует дополнительной инфраструктуры. Более того, vLLM уже умеет открывать OpenAI-совместимые эндпоинты прямо из коробки. Остаётся только настроить аутентификацию.

Сравнение с альтернативами

Подход Аутентификация Совместимость с OpenAI SDK Кастомные модели Сложность
SageMaker + native OpenAI endpoint (наш метод) Bearer token Полная Да Низкая
SageMaker + API Gateway proxy Bearer token + SigV4 внутри Полная Да Средняя
Amazon Bedrock SigV4 + AWS CLI Частичная (через обёртки) Нет Низкая
Сторонние сервисы (Together AI, Anyscale) API key Полная Ограниченно Низкая

Пошаговая настройка SageMaker endpoint с OpenAI-совместимым API

Мы будем разворачивать модель через SageMaker JumpStart или кастомный контейнер. Для простоты возьмём vLLM, который уже включает в себя OpenAI-сервер.

1 Разверните контейнер с vLLM

Создайте SageMaker endpoint с образом vLLM. В конфигурации укажите переменную VLLM_API_KEY — это и будет ваш bearer token. Пример из ноутбука:

# Задаём API-ключ при деплое
aws sagemaker create-endpoint-config \
  --endpoint-config-name vllm-openai \
  --production-variants '[{"VariantName":"default","ModelName":"vllm-model","InitialInstanceCount":1,"InstanceType":"ml.g5.2xlarge","Environment":{"VLLM_API_KEY":"sk-your-secret-key"}}]'

2 Настройте Inference Component (опционально)

Если вы используете SageMaker Inference Components с rolling updates, просто добавьте ту же переменную окружения. Это удобно для A/B тестов и канареечных деплоев.

3 Тестируем через curl

Теперь любой OpenAI-клиент может обращаться к вашему эндпоинту, указав базовый URL и ключ:

curl https://your-endpoint.sagemaker.aws/v1/chat/completions \
  -H "Authorization: Bearer sk-your-secret-key" \
  -d '{"model":"meta-llama/Meta-Llama-3-8B-Instruct","messages":[{"role":"user","content":"Hello!"}]}'

Интеграция с популярными фреймворками

1. Python OpenAI SDK

Просто поменяйте base_url:

from openai import OpenAI
client = OpenAI(
    base_url="https://your-endpoint.sagemaker.aws/v1",
    api_key="sk-your-secret-key"
)
response = client.chat.completions.create(
    model="meta-llama/Meta-Llama-3-8B-Instruct",
    messages=[{"role":"user","content":"Что такое SageMaker?"}]
)
print(response.choices[0].message.content)

2. LangChain

LangChain поддерживает любые OpenAI-совместимые API через ChatOpenAI:

from langchain.chat_models import ChatOpenAI
llm = ChatOpenAI(
    model="meta-llama/Meta-Llama-3-8B-Instruct",
    openai_api_base="https://your-endpoint.sagemaker.aws/v1",
    openai_api_key="sk-your-secret-key"
)
response = llm.predict("Расскажи про SageMaker")

3. Vercel AI SDK

На фронтенде или в Next.js используем кастомный провайдер:

import { OpenAIStream, StreamingTextResponse } from 'ai';
import OpenAI from 'openai';

const openai = new OpenAI({
  baseURL: process.env.SAGEMAKER_ENDPOINT,
  apiKey: process.env.SAGEMAKER_API_KEY,
});

export async function POST(req) {
  const { messages } = await req.json();
  const response = await openai.chat.completions.create({
    model: 'meta-llama/Meta-Llama-3-8B-Instruct',
    stream: true,
    messages,
  });
  const stream = OpenAIStream(response);
  return new StreamingTextResponse(stream);
}

Безопасность bearer token

Используйте AWS Secrets Manager для хранения токена. Никогда не кладите его прямо в код. Сквозной трекинг через DVC и MLflow тоже может хранить секреты, но лучше довериться нативным инструментам AWS.

Важно: SageMaker endpoint по умолчанию использует VPC и IAM. Если вы открываете доступ через Интернет, обязательно настройте WAF и IP-ограничения. Bearer token — не панацея, а лишь замена SigV4 на клиентской стороне.

Кому подойдёт этот инструмент

  • Разработчикам AI-приложений, которые хотят использовать SageMaker как бэкенд, но не хотят переписывать код под SigV4.
  • Командам, уже использующим LangChain или Vercel AI SDK — интеграция займёт 5 минут.
  • Тем, кто переходит с OpenAI на кастомные модели — API совместим, можно просто сменить base_url и ключ.
  • Всех, кто ценит время и не хочет изобретать велосипед с аутентификацией.

Не советую использовать этот подход, если вам нужна строгая IAM-политика на уровне каждого запроса — тогда лучше оставить SigV4 с временными ключами. Но для 90% сценариев Bearer token — это золотая середина между безопасностью и удобством.

Кстати, GLM-4.7 от Zhipu тоже переходит на OpenAI-совместимый API — тренд очевиден: все хотят единый интерфейс. Amazon SageMaker наконец-то догоняет этот тренд.

Хотите попробовать? Запустите SageMaker endpoint через AWS Free Tier — вам хватит бесплатных часов на тестирование. А полный код настройки я выложил в GitHub (ссылка в описании).

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