Lavorare con Amazon API Gateway
La funzione AWS Lambda può essere richiamata su HTTPSurl. Può essere fatto su GET, POST, PUT. Quando viene richiamato l'URL HTTPS, la funzione AWS Lambda può essere attivata e i dati vengono passati a HTTPS utilizzandoget/post può essere reso disponibile all'interno di AWS Lambda per essere utilizzato per l'inserimento in DynamoDB o per inviare posta ecc.
Questo capitolo discute in dettaglio sui vari processi coinvolti nel lavoro con AWS lambda e API Gateway.
Processi coinvolti
Di seguito sono riportati i processi coinvolti nell'utilizzo di AWS lambda e API Gateway:
- Crea ruolo IAM per l'autorizzazione
- Crea la funzione lambda AWS
- Crea API Gateway
- Collega la funzione lambda al gateway API
- Passaggio di dati al gateway API
Di seguito viene fornito un diagramma di base che spiega il funzionamento del gateway API e di AWS Lambda:
Questi processi sono spiegati in dettaglio più avanti in questo capitolo con le relative schermate.
Crea ruolo IAM per l'autorizzazione
Dai servizi Amazon come mostrato di seguito, seleziona IAM per creare ruoli da utilizzare dalla funzione Lambda.
Vai a IAM e seleziona Roles dalla sezione del lato sinistro come mostrato di seguito -
Clic Create role per la funzione Lambda.
Seleziona Lambda e fai clic Permissionsin fondo. Seleziona l'autorizzazione richiesta per API Gateway e Lambda.
Cerca il gateway API nella ricerca e ti elencherà tutte le autorizzazioni correlate. Qui abbiamo scelto l'accesso completo al gateway API come mostrato di seguito -
Ora, cerca il gateway API e ti elencherà tutte le autorizzazioni correlate. Qui abbiamo scelto l'accesso completo al gateway API come mostrato di seguito -
Devi ripetere la stessa procedura anche per le politiche.
Dopo aver scelto le politiche necessarie, fare clic su Reviewper il passaggio successivo. Inserisci il nome del ruolo secondo la tua scelta come mostrato di seguito -
Visualizza le politiche associate al ruolo. ClicCreate role e abbiamo finito con la creazione del ruolo e possiamo procedere con la funzione lambda.
Crea funzione AWS Lambda
Vai ai servizi AWS e fai clic sul servizio lambda per creare una funzione per connetterlo con il gateway API.
La schermata dell'interfaccia utente per la funzione Lambda è mostrata di seguito. ClicCreate function per procedere con la creazione della funzione Lambda.
Inserisci il nome della funzione e scegli il ruolo esistente che abbiamo creato sopra.
Lampeggia un messaggio che la funzione con il nome lambdawithapigateway viene creato con successo.
Nota che qui useremo nodejsruntime per scrivere il codice. Il codice AWS conhelloworld il messaggio è come mostrato di seguito -
Il codice AWS Lambda è presente in index.jsfile. La funzione chiamata handler ha i parametri cioèevents, context e callback.
La funzione di callback ha fondamentalmente l'errore e il messaggio di successo. Nota che qui non abbiamo alcun codice relativo all'errore, quindi viene passato null e il messaggio di successo èHelloWorld from lambda.
Infine, salva le modifiche aggiunte e procediamo ad aggiungere la funzione Lambda al gateway API.
Crea API Gateway
Accedi al tuo account AWS e apri API Gateway come mostrato di seguito:
Fai clic su Gateway API e ti porterà alla schermata in cui è possibile creare un nuovo gateway API.
Clic Create API e aggiungi i dettagli come mostrato di seguito -
Clicca il Create APIpulsante sul lato destro dello schermo. Questo mostrerà l'API appena creata sul lato sinistro dello schermo.
Clicca il Actions menu a discesa per creare una nuova risorsa per l'API.
Ora, crea una nuova risorsa come mostrato di seguito -
Inserisci il Resource Namecome mostrato di seguito. Vedrai il nome della risorsa inserito nell'url creato alla fine. ClicCreate Resource e lo vedrai sullo schermo come segue:
Inserisci GET/POSTmetodi alla risorsa creata come mostrato di seguito. Seleziona il metodo daActions cadere in picchiata.
Clicca il GET metodo per aggiungere il metodo all'API.
Il passo successivo è l'integrazione che lo integrerà con la funzione Lambda. Ora aggiungi la funzione Lambda come mostrato di seguito -
Collega la funzione Lambda a API Gateway
Seleziona la funzione lambda creata in precedenza.
Salva le modifiche e puoi vedere una finestra di dialogo che richiede l'autorizzazione come mostrato di seguito -
Clic OKper il permesso. Questi sono i dettagli di esecuzione tra la richiesta HTTP del gateway API e la funzione Lambda -
Ora, implementiamo le modifiche al gateway API. A tal fine, dobbiamo selezionare il fileDeploy API a partire dal Actions menu a discesa come mostrato di seguito -
Selezionare Deploy API. Chiederà lo stato di distribuzione. SelezionareNew Stage dal menu a discesa Fase di distribuzione e aggiungi il nome della fase come Production.
Clic Deploy e ti reindirizzerà all'URL come mostrato di seguito -
Seleziona il GETmetodo dal lato sinistro per ottenere l'URL. Apri l'URL in una nuova scheda per vedere il messaggio dalla funzione Lambda.
Questo è un esempio di base di utilizzo di AWS Lambda e AWS API Gateway. Nell'esempio sopra, abbiamo codificato il messaggio nella funzione Lambda.
Ora, prendiamo i dettagli del messaggio dal gateway API. Nel caso in cui la chiamata HTTPS debba essere chiamata da un dominio diverso, ad esempio una chiamata AJAX all'API, è necessario abilitare CORS per il gateway API creato.
Seleziona la risorsa creata per l'API e fai clic su Actions menu a discesa -
Adesso, Enable CORS si aprirà la seguente schermata -
È possibile utilizzare alcuni metodi per ABILITARE CORS. Access-Control-Allow-Origin è contrassegnato come *, il che significa che consentirà di ottenere contenuti dal gateway API da qualsiasi dominio.
Puoi anche specificare il nome di dominio che desideri utilizzare con l'API. ClicEnable CORS and replace existing CORS headers e visualizzerà il messaggio di conferma come mostrato di seguito -
Clic Yes, replace existing valuespulsante per abilitarlo. IlEnable CORS lo schermo appare come mostrato di seguito -
Passaggio di dati a API Gateway
Apri l'API creata in API Gateway displayhelloworld come mostrato di seguito -
Clic Integration Request per inviare i dati come mostrato di seguito -
Scegliere Body Mapping Templates e aggiungi il file Content-Type per questo esempio come application/json. Fare clic sul tipo di contenuto aggiunto aggiungere i dettagli come segue:
Ora aggiungi il modello in formato JSON come mostrato di seguito -
Tieni presente che abbiamo preso il messaggio come parametro per ottenere dati da API Gateway e condividerli con AWS Lambda. La sintassi per ottenere i dettagli è quella mostrata sopra.
Ora, distribuisci l'API per rendere disponibili le modifiche sull'URL di API Gateway. Per questo, dobbiamo modificare la funzione Lambda per visualizzare i dati in base all'URL del gateway API. Il codice per la funzione Lambda è fornito di seguito. Notare che stiamo prendendo il messaggio dall'evento e passando alla richiamata.
exports.handler = (event, context, callback) => {
let message = event.message;
callback(null, message);
};
Ora salva le modifiche in Lambda e premi l'URL per vedere le modifiche. Osserva lo screenshot riportato di seguito -
Fare clic sull'URL come mostrato di seguito -
https://rw2ek1xung.execute-api.us-east-
1.amazonaws.com/prod/hello?message=hello%20from%20api%20gateway
Osserva che qui stiamo passando il messaggio come stringa di query all'URL GET. Quindi puoi osservare l'output come mostrato di seguito -
Legge i dettagli inviati al messaggio dall'URL e li visualizza nel browser.