AWS AppSync
AWS AppSync
Zarzadzany serwis GraphQL i Pub/Sub API w chmurze AWS. Real-time subscriptions, automatyczny offline sync i integracja z DynamoDB, Lambda i innymi zrodlami danych.
AWS AppSync to w pelni zarzadzany serwis do tworzenia GraphQL i Pub/Sub API. Pozwala budowac aplikacje z danymi w czasie rzeczywistym dzieki subscriptions (WebSocket) oraz obsluguje tryb offline z automatyczna synchronizacja konfliktow.
AppSync laczy sie z wieloma zrodlami danych: DynamoDB, Lambda, RDS, HTTP endpoints i OpenSearch. Resolvers mozna pisac w VTL (Velocity Template Language) lub JavaScript. Serwis oferuje tez merged APIs do laczenia wielu API GraphQL w jedno oraz pipeline resolvers do zlozonej logiki biznesowej.
AppSync obsluguje do 240 000 jednoczesnych polaczen WebSocket na jedno API. W polaczeniu z DynamoDB jako data source, mozesz zbudowac czat dla setek tysiecy uzytkownikow bez zarzadzania zadna infrastruktura serwerowa - wszystko jest w pelni serverless!
Uzywaj JavaScript resolvers zamiast VTL - sa latwiejsze do debugowania i testowania. Mozesz uruchamiac testy jednostkowe lokalnie komenda aws appsync evaluate-code. Pipeline resolvers pozwalaja dzielic logike na male, reuzywalne kroki zamiast jednego duzego resolvera.
AWS AppSync to w pelni zarzadzany serwis GraphQL API, ktory automatycznie laczy dane z DynamoDB, Lambda, RDS, OpenSearch i HTTP endpoints. Obsluguje real-time subscriptions przez WebSocket i synchronizacje offline w aplikacjach mobilnych.
Definicja schematu GraphQL
Tworzysz schemat GraphQL definiujacy typy danych, zapytania (Query), mutacje (Mutation) i subskrypcje (Subscription). AppSync wspiera pelna specyfikacje GraphQL z dodatkowymi dyrektywami AWS (@auth, @model). Schemat jest centralnym kontraktem miedzy frontendem a backendem.
Konfiguracja zrodel danych (Data Sources)
Data Sources to backendy, z ktorych AppSync pobiera dane: DynamoDB (najczesciej), Lambda (custom logic), RDS Aurora Serverless (SQL), OpenSearch (wyszukiwanie), HTTP endpoints (zewnetrzne API). Mozesz laczyc wiele zrodel w jednym API. Kazde zrodlo ma osobna konfiguracje IAM.
Pisanie resolverow (VTL lub JavaScript)
Resolvery mapuja operacje GraphQL na zrodla danych. Pipeline resolvers pozwalaja laczyc wiele operacji w sekwencji. Od 2023 AppSync wspiera resolvery w JavaScript (APPSYNC_JS runtime) zamiast VTL - sa latwiejsze do pisania i testowania. Unit resolvers obsluguja proste CRUD, pipeline - zlozona logike.
Konfiguracja autoryzacji
AppSync obsluguje 5 trybow autoryzacji: API Key (prototypowanie), Cognito User Pools (uzytkowicy), IAM (serwisy AWS), OpenID Connect (zewnetrzne IdP), Lambda Authorizer (custom logic). Mozesz laczyc wiele trybow w jednym API i kontrolowac dostep na poziomie pola w schemacie.
Real-time subscriptions
Subskrypcje GraphQL dzialaja przez WebSocket (protokol MQTT over WSS). Klient subskrybuje mutacje i automatycznie otrzymuje aktualizacje. AppSync obsluguje filtry subskrypcji - klient dostaje tylko dane, ktore go dotycza. Skaluje sie automatycznie do milionow polaczen WebSocket.
Caching i optymalizacja
AppSync oferuje server-side caching (w pamieci lub ElastiCache) na poziomie calego API lub poszczegolnych resolverow. TTL konfigurujesz per resolver. Dodatkowo AppSync wspiera request batching i automatic query deduplication. Dla duzych API uzyj merged APIs do polaczenia wielu schematow.
Praktyczne wskazowki z budowania API GraphQL na AppSync - od modelowania danych po optymalizacje wydajnosci.
JavaScript resolvers zamiast VTL
Od 2023 AppSync wspiera resolvery w JavaScript (APPSYNC_JS runtime). Rezygnuj z VTL - JavaScript jest latwiejszy do pisania, testowania (lokalne unit testy) i debugowania. Ograniczenie: APPSYNC_JS nie obsluguje pelnego Node.js, tylko podzbiur ES2021 bez async/await. Do zlozonej logiki uzyj pipeline z Lambda data source.
PoczatkujacyWzorzec single-table design z DynamoDB
AppSync z DynamoDB dziala najlepiej z single-table design. Uzywaj composite keys (PK: USER#123, SK: ORDER#456) do modelowania relacji. Pipeline resolvers pozwalaja wykonac BatchGetItem do pobrania powiazanych encji w jednym zapytaniu GraphQL. Unikaj N+1 queries przez batching resolverow.
ZaawansowanyOffline i conflict resolution
AppSync SDK (Amplify DataStore) obsluguje synchronizacje offline z automatic conflict resolution. Strategie: Optimistic Concurrency (wersjonowanie), Auto Merge (polaczenie zmian), Lambda (custom merge logic). Dla aplikacji mobilnych to kluczowa funkcja - uzytkownik moze pracowac bez internetu, a dane zsynchronizuja sie po polaczeniu.
ZaawansowanyMonitorowanie i debugowanie
Wlacz CloudWatch Logs na poziomie ALL dla developmentu (kazdy request/response) i ERROR dla produkcji. Metryki 4XXError i 5XXError sygnalizuja problemy z resolverami. Uzyj X-Ray tracing do identyfikacji wolnych resolverow. W konsoli AppSync jest wbudowany query editor do testowania operacji.
PoczatkujacyMerged APIs dla mikroserwisow
Merged API pozwala polaczyd wiele niezaleznych API AppSync w jeden endpoint. Kazdy team moze rozwijac swoj schemat niezaleznie, a merged API eksponuje polaczony graf. To odpowiednik Apollo Federation w ekosystemie AWS. Rozwiazuje problem koordynacji schematow w duzych organizacjach.
ZaawansowanyScreenshoty z AWS Console
Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z AWS AppSync bezposrednio w konsoli AWS.
Do czego sluzy AWS AppSync?
Aplikacje real-time
Buduj czaty, dashboardy na zywo, wspolne edytory dokumentow. GraphQL subscriptions dostarczaja dane do klientow w milisekundach przez WebSocket.
Aplikacje mobilne z trybem offline
Twoja aplikacja dziala bez internetu. AppSync automatycznie synchronizuje dane gdy polaczenie wroci, z wbudowana detekcja i rozwiazywaniem konfliktow.
Agregacja danych z wielu zrodel
Polacz dane z DynamoDB, RDS, REST API i Lambda w jednym zapytaniu GraphQL. Klient dostaje dokladnie te dane, ktore potrzebuje.
Mikroserwisy z merged APIs
Kazdy zespol buduje wlasne API GraphQL. AppSync laczy je w jedno merged API z jednym endpointem dla klientow frontendowych.
Co musisz wiedziec?
Schema GraphQL
Definicja typow, zapytan (Query), mutacji (Mutation) i subskrypcji (Subscription). AppSync generuje resolvers i data sources na podstawie schematu.
Resolver
Funkcja mapujaca zapytanie GraphQL na operacje na zrodle danych. Moze byc napisany w VTL (Velocity Template Language) lub JavaScript. Pipeline resolvers lacza wiele krokow.
Data Source
Zrodlo danych polaczone z AppSync: DynamoDB, Lambda, RDS (Aurora), HTTP endpoint, OpenSearch lub None (lokalne operacje). Kazdy resolver jest powiazany z data source.
Subscriptions
Mechanizm real-time oparty na WebSocket. Klienci subskrybuja zmiany danych i otrzymuja aktualizacje automatycznie gdy nastapi mutacja spelniajaca warunki filtra.
Conflict Detection
Wbudowany mechanizm wykrywania i rozwiazywania konfliktow dla trybu offline. Strategie: Optimistic Concurrency, Auto Merge i Custom Lambda.
Merged APIs
Funkcja pozwalajaca polaczyc wiele niezaleznych API AppSync w jedno API z jednym endpointem. Idealne dla architektury mikroserwisowej.
Architektura: Real-time API z AppSync
Architektura aplikacji z API GraphQL na AppSync, laczcym dane z wielu zrodel z real-time subscriptions i synchronizacja offline.
Ile kosztuje AWS AppSync?
Zapytania i mutacje
Platisz za kazde zapytanie Query i Mutation do API. Cena za milion zapytan.
$4.00 za milion zapytan/mutacji. Free Tier: 250 tys./mies.
Real-time Updates
Platisz za minuty polaczenia WebSocket i za kazda aktualizacje real-time dostarczona do klientow.
$0.08/mln minut polaczenia, $2.00/mln aktualizacji.
Caching
Opcjonalny cache zmniejsza opoznienia i koszty. Platisz za godziny pracy instancji cache.
small: ~$0.035/godz. (~$25/mies.)
Free Tier
12 miesiecy darmowego uzytkowania z hojnymi limitami na zapytania i real-time.
250 tys. zapytan, 600 tys. minut polaczenia/mies.
Przyklady AWS CLI
Utworz API AppSync
Tworzy nowe API GraphQL z autoryzacja Cognito
aws appsync create-graphql-api \
--name moje-api \
--authentication-type AMAZON_COGNITO_USER_POOLS \
--user-pool-config userPoolId=eu-west-1_abc123,defaultAction=ALLOW,awsRegion=eu-west-1
Wyswietl schemat API
Pobiera aktualny schemat GraphQL z API
aws appsync get-introspection-schema \
--api-id abcdef123456 \
--format SDL \
schema.graphql
Lista data sources
Wyswietla wszystkie zrodla danych polaczone z API
aws appsync list-data-sources \
--api-id abcdef123456 \
--query "dataSources[].{Name:name,Type:type}" \
--output table
Uruchom zapytanie GraphQL
Testuje zapytanie GraphQL bezposrednio z CLI
aws appsync evaluate-code \
--runtime name=APPSYNC_JS,runtimeVersion=1.0.0 \
--function "export function request(ctx) { return {}; }" \
--context "{}"
Quiz: AWS AppSync
Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz — feedback pojawi sie od razu.
1. Czym sa subscriptions w AppSync?
2. W jakich jezykach mozna pisac resolvers w AppSync?
3. Co to sa merged APIs?
4. Ktore data sources obsluguje AppSync?
Czesto uzywane razem z AWS AppSync
Chcesz poznac AWS AppSync w praktyce?
Darmowy kurs "AWS od podstaw" pokazuje jak uzywac AWS AppSync krok po kroku. Teoria + praktyka od zera.