Создание бессерверного веб-приложения с возможностями искусственного интеллекта с помощью AWS Amplify.
Данная статья представляет собой профессиональное руководство по созданию бессерверного веб-приложения с использованием AWS Amplify и возможностей искусственного интеллекта.

Создание бессерверного веб-приложения с возможностями искусственного интеллекта с помощью AWS Amplify.

В этой статье вы узнаете, как создать бессерверное веб-приложение, использующее возможности генеративного искусственного интеллекта, с помощью AWS Amplify и других сервисов AWS. Рассматриваются вопросы безопасности, оптимизации затрат и выбора местоположения центра обработки данных.
0 Акции
0
0
0
0
  1. Общая архитектура
  2. Практические шаги по созданию приложения (пошагово)
    1. 1. Подготовка среды разработки
    2. 2. Добавьте аутентификацию с помощью Cognito.
    3. 3. Создайте бессерверный API (REST или GraphQL).
    4. 4. Написание лямбда-функции, взаимодействующей с моделью генеративного ИИ.
    5. 5. Реализация потоковой передачи/в реальном времени (опционально)
    6. 6. Хостинг фронтенда с использованием Amplify Hosting и CI/CD.
  3. Политики безопасности, управления ключами и управления идентификацией и доступом (IAM).
    1. управление секретами
    2. Примеры политик IAM
    3. Защита от атак и безопасность контента
  4. Выбор местоположения центра обработки данных и сравнение его по задержке и соответствию стандартам.
  5. Модель хостинга — облачные графические процессоры против управляемого API (преимущества и недостатки)
  6. Оптимизация производительности и затрат
    1. Пример настройки обратного прокси Nginx для подключения к Triton на графическом процессоре.
  7. Заключительные советы по безопасности и конфиденциальности
  8. Примеры приложений и сценариев
  9. Практические советы по адаптации в нашей компании (более 85 офисов)
  10. Краткое описание и контрольный список перед запуском
  11. Варианты технической поддержки и консультаций
  12. Часто задаваемые вопросы

 

Общая архитектура

В этом руководстве представлена рекомендуемая архитектура для создания веб-приложения. Бессерверная архитектура который использует возможности *генеративного ИИ*. Цель состоит в том, чтобы объединить AWS Amplify для фронтенда и CI/CD с бессерверными сервисами AWS для бэкенда, чтобы создать масштабируемое, безопасное и поддерживаемое решение.

  • Внешний интерфейс: React или Next.js, размещенные на AWS Amplify Hosting + CDN (CloudFront).
  • Аутентификация: Amazon Cognito (регистрация/вход в систему + федерация).
  • API: API Gateway (REST/HTTP) или AppSync (GraphQL), которые перенаправляют запросы в Lambda.
  • Генеративная логика: Lambda (Node/Python), которая отправляет запрос генеративной модели — модель может быть управляемой (OpenAI/Hugging Face/Bedrock) или размещенной на собственном сервере с графическим процессором (GPU) с использованием Triton/TorchServe.
  • Хранилище: S3 для файлов, DynamoDB или RDS для метаданных/сессий.
  • Безопасность и сети: WAF, Shield Advanced, IAM с минимальными привилегиями, Secrets Manager.
  • CDN и кэширование: CloudFront + Lambda@Edge или кэширование заголовков для снижения задержки и затрат.

 

Практические шаги по созданию приложения (пошагово)

 

1. Подготовка среды разработки

Установите необходимые базовые инструменты: Node.js, npm и AWS Amplify CLI. Затем клонируйте репозиторий проекта и установите зависимости.

curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
npm install -g @aws-amplify/cli
git clone <repo>
cd <repo>
npm install

Настройте AWS CLI и Amplify, а также инициализируйте проект Amplify:

aws configure
amplify configure
amplify init

 

2. Добавьте аутентификацию с помощью Cognito.

С помощью Amplify вы можете быстро добавить аутентификацию. Доступны настройки по умолчанию или ручная настройка. При необходимости используйте федерацию с Google/Facebook, а также включите правила для паролей, многофакторную аутентификацию и подтверждение электронной почты.

amplify add auth
# choose default or manual configuration
amplify push

 

3. Создайте бессерверный API (REST или GraphQL).

Добавьте API с помощью Amplify; вы можете выбрать REST с Lambda или GraphQL с AppSync + DynamoDB.

amplify add api
# choose REST and Lambda function template
amplify push

Или для GraphQL:

amplify add api
# choose GraphQL + DynamoDB
amplify push

 

4. Написание лямбда-функции, взаимодействующей с моделью генеративного ИИ.

Lambda выступает в качестве интерфейса между фронтендом и генеративной моделью. Если вы используете внешний сервис, например OpenAI, храните ключ API в безопасности и отправляйте запрос через Lambda.

const fetch = require('node-fetch');
exports.handler = async (event) => {
  const prompt = JSON.parse(event.body).prompt;
  const apiKey = process.env.OPENAI_API_KEY;
  const res = await fetch('https://api.openai.com/v1/chat/completions', {
    method: 'POST',
    headers: { 'Authorization': `Bearer ${apiKey}`, 'Content-Type': 'application/json' },
    body: JSON.stringify({
      model: 'gpt-4o-mini',
      messages: [{ role: 'user', content: prompt }]
    })
  });
  const data = await res.json();
  return { statusCode: 200, body: JSON.stringify(data) };
};
[p class=”wp-block-paragraph”]Для шифрования ключа используйте AWS Secrets Manager Или используйте переменные среды с шифрованием. Ограничьте роль IAM функции Lambda доступом только для чтения к указанному секрету.

Если вы размещаете модель на своем сервере с графическим процессором, Lambda или бэкэнд-сервис отправят запрос на свою конечную точку:

const res = await fetch('https://gpu.example.com/inference', {
  method: 'POST',
  headers: { 'Authorization': `Bearer ${process.env.MODEL_TOKEN}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({ inputs: prompt })
});

 

5. Реализация потоковой передачи/в реальном времени (опционально)

Для длинных ответов или потоковой передачи токенов используйте WebSocket или Server-Sent Events. В AWS вы можете использовать API Gateway WebSocket или подписки AppSync.

 

6. Хостинг фронтенда с использованием Amplify Hosting и CI/CD.

Amplify Hosting позволяет запускать CI/CD из репозитория Git; каждый push в определенную ветку запускает автоматическую сборку и развертывание.

amplify hosting add
amplify publish

 

Политики безопасности, управления ключами и управления идентификацией и доступом (IAM).

 

управление секретами

От AWS Secrets Manager Используется для хранения ключей и секретов API. Роль IAM для Lambda должна предоставлять только доступ на чтение к указанному секрету.

 

Примеры политик IAM

Пример минимальной политики, позволяющей Lambda считывать определенный секретный ключ:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "secretsmanager:GetSecretValue",
      "Resource": "arn:aws:secretsmanager:region:acct-id:secret:myOpenAIKey"
    }
  ]
}

 

Защита от атак и безопасность контента

Для защиты приложения:

  • Активация AWS WAF Для блокировки вредоносных запросов.
  • Использование AWS Shield (Стандартная настройка по умолчанию, обеспечивающая более высокий уровень защиты, чем Shield Advanced).
  • На уровне API воспользуйтесь возможностями ограничения скорости запросов и тарифными планами в API Gateway.
  • Модерация контента Для получения продуктивных результатов: просматривайте и фильтруйте ответы с помощью моделей модерации (OpenAI/HuggingFace).

 

Выбор местоположения центра обработки данных и сравнение его по задержке и соответствию стандартам.

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

  • us-east-1: Быстрая доставка в Северную Америку и более низкие цены на основные услуги.
  • eu-west-1: Подходит для Европы с более строгими законами о защите персональных данных.
  • ap-southeast-1 / ap-northeast-1: Азиатские регионы для пользователей на этом континенте.

Для распределенных пользователей используйте CDN (CloudFront) и распределите модель по нескольким регионам или используйте вывод данных на периферии сети.

При необходимости Очень низкая задержка Или, если у вас есть полный контроль над данными, вы можете разместить модель на сервере с графическими процессорами компании, расположенном более чем в 85 местах, что обеспечивает преимущества в виде снижения задержки, контроля над данными и аппаратной защиты от DDoS-атак.

 

Модель хостинга — облачные графические процессоры против управляемого API (преимущества и недостатки)

Общее сравнение управляемых и самостоятельно размещаемых сервисов на графических процессорах:

  • Управляемые приложения (OpenAI/Bedrock/Hugging Face):
    • Преимущества: Не требует обслуживания, легко обновляет модели, обеспечивает быстрый доступ.
    • Недостатки: Стоимость за запрос, вопросы конфиденциальности.
  • Самостоятельно размещено на графическом процессоре:
    • Преимущества: Фиксированная стоимость сервера, полный контроль, выделенные настройки, использование наших графических серверов для рендеринга и ИИ.
    • Недостатки: Необходимость управления и мониторинга, масштабируемость при ручном управлении.

Рекомендация: Используйте управляемый сервер для проверки концепции; для больших объемов данных и низкой задержки переходите на сервер с графическими процессорами.

 

Оптимизация производительности и затрат

  • Растяжка: Кэшируйте неконфиденциальные выходные данные в CloudFront или Redis/ElastiCache.
  • Выбор модели: Используйте максимально упрощенную модель, соответствующую реальным потребностям (упрощенную или квантованную).
  • Лямбда-лимит: Для длительных вычислений используйте ECS/EKS или сервер с графическим процессором, поскольку у Lambda есть ограничения по времени/процессору.
  • Мониторинг: CloudWatch для журналов и метрик, X-Ray для трассировки.
  • Экономия средств: Для долговременного выполнения вычислений следует резервировать или использовать зарезервированные экземпляры или выделенные серверы с графическими процессорами.

 

Пример настройки обратного прокси Nginx для подключения к Triton на графическом процессоре.

Если модель работает на сервере с графическим процессором, можно настроить обратный прокси-сервер с помощью Nginx:

server {
    listen 443 ssl;
    server_name ai.example.com;
    location / {
      proxy_pass http://127.0.0.1:8000;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
    }
  }

 

Заключительные советы по безопасности и конфиденциальности

Несколько практических советов по защите данных и соблюдению законодательства:

  • Ведение конфиденциальной документации: Избегайте прямого хранения конфиденциальных запросов или шифруйте их.
  • Сохранение данных: Ознакомьтесь с требованиями GDPR/PDPA; при необходимости укажите конкретные места хранения данных.
  • Ввод/вывод: Используйте валидацию и санитаризацию, чтобы предотвратить мгновенное внедрение вредоносных программ и утечку данных.

 

Примеры приложений и сценариев

  • Создание контента и текстовый редактор с функциями подсказок и суммирования.
  • Интеллектуальный чат-бот, контекст сессии которого хранится в DynamoDB.
  • Интеллектуальный инструмент для разработчиков, предоставляющий функции автозаполнения и подсказки по рефакторингу кода.
  • Инструменты гибридного рендеринга на основе ИИ, использующие сервер с графическим процессором для обработки изображений и видео.

 

Практические советы по адаптации в нашей компании (более 85 офисов)

Практические советы по снижению задержки и оптимизации пользовательского опыта на глобальном уровне:

  • Для пользователей из Европы, Азии или Латинской Америки используйте ближайшие местоположения, чтобы уменьшить задержку p99.
  • Для торговли и игр используйте выделенный VPS для торговли и игр с защитой от DDoS-атак и протоколом BGP Anycast для уменьшения пинга и потери пакетов.
  • Используйте облачные GPU-серверы для обучения и вывода результатов больших моделей, чтобы оптимизировать затраты и задержку.
  • Воспользуйтесь преимуществами сети и CDN для распространения контента и сокращения времени загрузки.

 

Краткое описание и контрольный список перед запуском

  • Хостинг Amplify и система непрерывной интеграции (CI) активны.
  • В Cognito настроена аутентификация, и при необходимости включена многофакторная аутентификация (MFA).
  • Защищенная Lambda-функция с минимальным доступом и настроенным менеджером секретов.
  • К API применяются WAF и ограничение скорости запросов.
  • Для снижения нагрузки и задержки следует включить CDN и кэширование.
  • Выбор подходящего местоположения осуществляется исходя из целевых пользователей и правовых требований.
  • Настроена программа мониторинга и оповещения (CloudWatch + Slack/Email).
  • Перед публичным запуском необходимо провести испытания на нагрузку и проникновение.

 

Варианты технической поддержки и консультаций

Чтобы помочь вам выбрать оптимальное сочетание региона, графического процессора и сети, вы можете использовать тарифные планы хостинга и графические серверы в более чем 85 локациях. Техническая команда может предоставить рекомендации по миграции моделей и настройке CI/CD.

 

Часто задаваемые вопросы

Вам также может понравиться

Обмен сообщениями «точка-точка» с Amazon SQS

Введение. Шаблон обмена сообщениями «точка-точка» — это широко используемая модель коммуникации в современных веб-архитектуре и облачных архитектурах…