* Scris de Josh Kahn, Senior AWS Solutions Architect cu sediul in Chicago, IL.
AWS AppSync este un serviciu GraphQL gestionat care permite dezvoltatorilor sa construiasca cu usurinta aplicatii mobile si web bazate pe date. Folosind un backend fara server, puteti crea un API GraphQL conectand AWS AppSync la diverse surse de date – inclusiv Amazon DynamoDB, AWS Lambda si Amazon Elasticsearch Service. AWS AppSync a adaugat suport pentru sursele de date HTTP in mai 2018, ceea ce face mai usoara adaugarea API-urilor vechi la punctele dvs. de baza GraphQL.
AWS AppSync a fost extins acum pentru a suporta apelarea serviciilor AWS prin surse de date HTTP. Pentru ca AWS sa identifice si sa autorizeze cererile HTTP, acestea trebuie sa fie semnate cu procesul de semnatura Versiunea 4. In caz contrar, aceste cereri sunt respinse. AWS AppSync poate calcula acum semnatura in numele dvs., pe baza rolului IAM furnizat ca parte a configuratiei sursei de date HTTP.
Aceasta inseamna ca puteti apela o gama larga de servicii AWS fara a fi nevoie sa scrieti o functie intermediara Lambda. De exemplu, puteti incepe executarea unei masini de stare AWS Step Functions, puteti prelua un secret din AWS Secrets Manager sau puteti lista API-urile GraphQL disponibile din AWS AppSync insusi dintr-un rezolvator AWS AppSync.
Implementarea unei interogari de lunga durata pe AWS AppSync
Pentru a demonstra utilitatea acestei noi caracteristici, sa construim un API GraphQL cu o interogare de lunga durata. AWS AppSync limiteaza executarea interogarilor GraphQL la maximum 30 de secunde. Cu toate acestea, s-ar putea sa avem o interogare (de exemplu, o cautare) care uneori dureaza pana la un minut. Folosim AWS Step Functions pentru a coordona interogarea de lunga durata pe mai multi pasi, dar puteti opta pentru implementare si in alte moduri. Folosim abonamentele AWS AppSync pentru a actualiza asincron clientul la finalizarea interogarii.
Creati o sursa de date HTTP
Pentru a incepe executarea masinii de stare de cautare de la AWS AppSync, incepem prin definirea unei noi surse de date HTTP. Trebuie sa oferim doua componente suplimentare pentru a invoca un serviciu AWS:
- Un rol IAM care poate fi asumat de AWS AppSync cu permisiunea de a apela stari: StartExecution pentru masina noastra de stare Step Functions
- Configuratia de semnare
AWS AppSync ofera in prezent asistenta pentru adaugarea acestor componente utilizand AWS CLI, SDK-uri si AWS CloudFormation.
In primul rand, cream un nou rol IAM cu urmatoarea politica (asigurati-va ca notati rolul Amazon Resource Name (ARN)):
Si relatia de incredere:
Apoi, cream sursa de date HTTP pentru AWS AppSync. Pentru aceasta, creati urmatorul fisier de configurare numit http.json .
Apoi, utilizati AWS CLI pentru a crea sursa de date:
Alternativ, puteti crea aceeasi sursa de date utilizand AWS CloudFormation:
Cu sursa noastra de date HTTP definita si configurata pentru a semna solicitari la functiile pasului, putem construi API-ul nostru GraphQL.
Construirea unui API GraphQL
Pentru a activa interogarea pe termen lung, trimitem solicitarea de cautare si returnam imediat starea cautarii ( PENDENT ), precum si un identificator unic pentru interogare. Clientul nostru trebuie sa se aboneze la actualizari pentru acea interogare. Schema GraphQL este dupa cum urmeaza:
Apoi, definiti rezolvatorul pentru interogarea de cautare in AWS Management Console, AWS CLI, SDK sau AWS CloudFormation. Selectati sursa de date HTTP care a fost creata anterior si configurati sablonul de mapare a cererii dupa cum urmeaza:
fontanero cachondo videos porno corridas
porno agresivo sex porne
follando española videosdeincesto
ver peliculas porno italianas madura española con joven
zoofila porno agresivo
follando con mirones hentai scat
supertetas colegialas cachondas
hentai scat penes de abuelos
defloin.com creampie abuelas
jovenes españolas follando española folla
superculos escuchar relatos porno
abuela enculada corrida boca
follando abuelas corridas internas peludas
maduritas corriendose como folla mi vecina
trio amateur español pornotrans
concursos nudistas sexo con viejas
mi vecina desnuda videos porno casero españa
videos porno online miakalifa
porno viejas alemanas porno gay chino
correte dentro porno viola a su madre
autoId ())) {“version”: “2018-05-29”, “method”: “POST”, “resourcePath”: ” / “,” params “: {” headers “: {” content-type “:” application / x-amz-json-1.0 “,” x-amz-target “:” AWSStepFunctions.StartExecution “},” body “: {“stateMachineArn”: “arn: aws: states: <REGION>: <ACCOUNT_ID>: stateMachine: aws-appsync-long-query”, “input”: “{\” name \ “: \” $ ctx.stash. executId \ “}”}}}
Exista cateva elemente de mentionat in aceasta mapare:
- Folosim functia AWS AppSync $ util.autoId () pentru a genera un identificator unic pentru interogarea de cautare. Aceasta valoare este stocata in stocul contextual si este returnata ulterior clientului. Aceasta valoare este, de asemenea, transmisa ca parametru de intrare la masina noastra de stare.
- De x-AMZ-tinta Specifica informatiile din antet serviciul AWS si actiunea asociata de a invoca.
- Datele de intrare JSON, cum ar fi intrarea in masina noastra de stare, trebuie sa fie evadate dublu.
Maparea raspunsului pentru acest rezolvator returneaza imediat identificatorul interogarii si o stare PENDENTA:
La executarea interogarii de cautare, AWS AppSync incepe acum executarea masinii de stare dorite a functiilor de pas, trecand identificatorul de executie ca parametru. Ultimul pas al masinii de stare este un pas de activitate care invoca o functie Lambda. Aceasta functie declanseaza o mutatie AppSync. Acest lucru face ca rezultatele sa fie publicate catre client printr-un abonament.
Implementarea interogarii de lunga durata si returnarea unui rezultat
Cu interogarea noastra AWS AppSync care incepe acum executarea masinii de stare Step Functions, putem implementa interogarea si putem returna un raspuns clientului. In scopul demonstratiei, masina noastra de stat este destul de simpla. Se asteapta un minut si apoi invoca sarcina „Returnare rezultate”, asa cum se arata in urmatoarea diagrama.
Puteti actualiza cu usurinta aceasta definitie simpla a masinii de stare pentru a suporta interogari mai complexe sau mai multe pasi, atat timp cat definitia returneaza rezultate printr-o mutatie AWS AppSync pe parcurs.
In general, un client GraphQL executa o mutatie a datelor care provoaca o modificare a sursei de date, care apoi declanseaza o notificare a abonatilor cu privire la schimbarea acestora. In acest caz, definim o functie Lambda care apeleaza mutatia pentru a declansa o notificare a rezultatelor.
In loc sa includem o biblioteca GraphQL, folosim un HTTP POST simplu catre punctul final AWS AppSync, trecand o sarcina utila adecvata pentru o mutatie. In timp ce esantionul nostru utilizeaza un tip de autorizare AWS AppSync API_KEY, recomandam AWS_IAM intr-un scenariu de productie si ar trebui sa semnam si solicitarea. Folosind runtime-ul nodejs8.10 , functia noastra simpla de rezultat returnat este implementata dupa cum urmeaza:
AWS AppSync trimite o notificare clientului abonat pentru acest rezultat particular al interogarii. Clientul se poate actualiza corespunzator.
Implementarea clientului
Folosind AWS Amplify, putem implementa un client simplu pentru a demonstra procesul de trimitere a interogarii si apoi abonare pentru rezultate folosind identificatorul returnat.
Puteti gasi un exemplu de lucru al acestui proiect pe GitHub.
Invocarea serviciilor AWS direct din AWS AppSync poate simplifica o serie de cazuri de utilizare, cum ar fi implementarea unei interogari de lunga durata sau activarea utilizarii AWS AppSync ca fatada GraphQL pentru alte servicii. Pentru mai multe detalii, consultati Ghidul dezvoltatorului AWS AppSync. Suntem dornici sa vedem cum profitati de aceasta noua capacitate. Va rugam sa ne contactati pe forumul AWS AppSync cu orice feedback.








