Интеграция AWS Amplify в мобильное приложение

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Интеграция AWS Amplify в мобильное приложение
Средний
~3-5 дней
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    495

Интеграция AWS Amplify в мобильное приложение

AWS Amplify — набор библиотек и CLI для подключения мобильного приложения к облачным сервисам AWS: аутентификация через Cognito, API через AppSync (GraphQL) или REST Gateway, хранилище через S3, push-уведомления через Pinpoint. Amplify Gen 2 (2024) перешёл на TypeScript-based конфигурацию вместо JSON, что упростило типизацию и CI/CD-интеграцию.

Аутентификация через Cognito + Amplify Auth

Самая частая точка входа — Auth. Настройка занимает 20 минут, но скрывает нюансы.

React Native:

import { Amplify } from 'aws-amplify';
import { signIn, signUp, confirmSignUp, fetchAuthSession } from 'aws-amplify/auth';
import outputs from './amplify_outputs.json';

Amplify.configure(outputs);

// Вход
const { isSignedIn } = await signIn({ username: email, password });

// JWT токен для API-запросов
const session = await fetchAuthSession();
const token = session.tokens?.idToken?.toString();

Amplify UI Components (@aws-amplify/ui-react-native) даёт готовый Authenticator-компонент — LoginForm + SignUp + MFA за одну строку. Выглядит по-дефолтному, но кастомизируется через components prop.

Flutter:

await Amplify.addPlugins([AmplifyAuthCognito()]);
await Amplify.configure(amplifyconfig);

final result = await Amplify.Auth.signIn(
  username: email,
  password: password,
);

AppSync GraphQL: где легко стать не там

AppSync — управляемый GraphQL с подпиской на изменения через WebSocket. Amplify генерирует типизированный клиент из схемы:

import { generateClient } from 'aws-amplify/data';
import type { Schema } from './amplify/data/resource';

const client = generateClient<Schema>();

// Запрос с реальным временем
const sub = client.models.Post.observeQuery().subscribe({
  next: ({ items }) => setPosts(items),
});

Проблема N+1 в AppSync. Если resolver не настроен с batch resolver или DynamoDB Single Table Design, каждый элемент списка делает отдельный запрос к базе. На 50 постах — 51 запрос. Решение: BatchInvoke в AppSync resolver или переход на Pipeline resolvers.

Offline-режим. Amplify DataStore синхронизирует данные с AppSync и хранит локально в SQLite. При потере соединения мутации попадают в очередь и отправляются при восстановлении. Настройка требует @model директив в GraphQL схеме и DataStore.configure(). Конфликты разрешаются через ConflictResolutionStrategy (Auto Merge, Optimistic Concurrency, Custom Lambda).

S3: загрузка файлов

import { uploadData, getUrl } from 'aws-amplify/storage';

const result = await uploadData({
  key: `avatars/${userId}.jpg`,
  data: fileBlob,
  options: {
    accessLevel: 'protected',
    contentType: 'image/jpeg',
    onProgress: ({ loaded, total }) => setProgress(loaded / total),
  },
}).result;

const { url } = await getUrl({ key: result.key, options: { accessLevel: 'protected' } });

accessLevel: 'protected' — файл доступен только владельцу (через Cognito Identity ID в пути). 'public' — всем. 'private' — только владельцу без публичного URL. Неправильный accessLevel — частая причина 403 при попытке получить чужой файл.

Типичные грабли при интеграции

Размер бандла React Native. aws-amplify с полной конфигурацией добавляет ~500KB к JS-бандлу. Используем модульные импорты: import { signIn } from 'aws-amplify/auth' вместо import Amplify from 'aws-amplify'.

CORS при REST API. Amplify CLI создаёт API Gateway с CORS, но если добавлять ресурсы вручную — CORS нужно настраивать отдельно для каждого метода + preflight OPTIONS.

Refresh tokens на iOS. Amplify хранит токены в Keychain. При обновлении через TestFlight без удаления приложения старые токены остаются. signOut({ global: true }) инвалидирует все сессии на бэкенде.

Что входит в интеграцию

Настройка Amplify CLI / Gen 2 конфигурации. Подключение Auth (Cognito) с нужными флоу (email/Google/Apple Sign In). Настройка API (AppSync или REST). Offline-режим через DataStore (если требуется). Storage для файлов. Настройка Amplify в CI/CD.

Сроки

Базовая интеграция Auth + API: 3–4 дня. Полная интеграция с DataStore + Storage + Push: 1–2 недели. Стоимость — после анализа требований и выбора сервисов.