Tutorial: creazione di una REST API con un'integrazione AWS
Gli argomenti Tutorial: creazione di una REST API con un'integrazione proxy Lambda e Tutorial: creazione di una REST API con un'integrazione non proxy Lambda descrivono entrambi come creare un'API di API Gateway per esporre la funzione Lambda integrata. Inoltre, puoi creare un'API di API Gateway per esporre altri servizi AWS, ad esempio Amazon SNS, Amazon S3, Amazon Kinesis e AWS Lambda. Questo è possibile grazie all'integrazione di AWS. L'integrazione Lambda o l'integrazione proxy Lambda è un caso speciale, in cui la chiamata della funzione Lambda viene esposta tramite l'API di API Gateway.
Tutti i servizi AWS supportano API dedicate per esporre le rispettive funzionalità. Tuttavia, è probabile che i protocolli applicativi o le interfacce di programmazione differiscano da servizio a servizio. Un'API di API Gateway con l'integrazione AWS offre il vantaggio di un protocollo applicativo coerente, che permette al client di accedere a diversi servizi AWS.
In questa procedura guidata creeremo un'API per esporre Amazon SNS. Per ulteriori esempi di integrazione di un'API con altri servizi AWS, consulta Tutorial e workshop di Amazon API Gateway.
Diversamente dall'integrazione proxy Lambda, non esiste un'integrazione proxy corrispondente per altri servizi AWS. Di conseguenza, un metodo API è integrato con un'unica operazione di AWS. Per ottenere maggiore flessibilità, analogamente all'integrazione proxy, puoi configurare l'integrazione proxy Lambda. La funzione Lambda analizza ed elabora quindi le richieste per altre operazioni AWS.
API Gateway non esegue un nuovo tentativo quando si verifica il timeout dell'endpoint. La chiamata API deve implementare una logica di ripetizione per gestire i timeout degli endpoint.
Questa procedura dettagliata si basa sulle istruzioni e sui concetti riportati in Tutorial: creazione di una REST API con un'integrazione non proxy Lambda. Se la procedura dettagliata non è ancora stata completata, è consigliabile eseguirla ora prima di proseguire.
Argomenti
Prerequisiti
Prima di iniziare questa procedura guidata, esegui queste operazioni:
-
Completa le fasi descritte in Configurazione per l'utilizzo di Gateway API.
-
Crea una nuova API denominata
MyDemoAPI. Per ulteriori informazioni, consulta Tutorial: creazione di una REST API con un'integrazione non proxy HTTP. -
Distribuisci l'API almeno una volta in una fase denominata
. Per ulteriori informazioni, consulta la pagina relativa alla distribuzione dell'API in Scelta di un tutorial per l'integrazione AWS Lambda.test -
Completa le altre fasi descritte in Scelta di un tutorial per l'integrazione AWS Lambda.
-
Crea almeno un argomento in Amazon Simple Notification Service (Amazon SNS). Puoi utilizzare l'API implementata per ottenere un elenco di argomenti in Amazon SNS associati al tuo account AWS. Per informazioni su come creare un argomento in Amazon SNS, consulta Creazione di un argomento. Non devi copiare l'ARN dell'argomento citato nella fase 5.
Fase 1: creazione del ruolo di esecuzione del proxy dei servizi AWS
Per permettere all'API di richiamare le operazioni Amazon SNS necessarie, devi aver collegato le policy IAM appropriate a un ruolo IAM. In questo passaggio si crea un nuovo ruolo IAM.
Per creare il ruolo di esecuzione del proxy dei servizi AWS
Accedi a AWS Management Console e apri la console IAM all'indirizzo https://console.aws.amazon.com/iam/
. -
Scegliere Roles (Ruoli).
-
Scegli Crea ruolo.
-
Scegli Servizio AWS in Seleziona il tipo di entità attendibile, quindi seleziona Gateway API e scegli Consente a Gateway API di inviare i log a File di log CloudWatch.
-
Scegli Successivo e di nuovo Successivo.
-
In Role name (Nome ruolo) immettere
APIGatewaySNSProxyPolicye quindi selezionare Create role (Crea ruolo). -
Nell'elenco Roles (Ruoli) scegliere il ruolo appena creato. Potrebbe essere necessario scorrere o utilizzare la barra di ricerca per trovare il ruolo.
-
Per il ruolo selezionato, seleziona la scheda Aggiungi autorizzazioni.
-
Dall'elenco a discesa scegli Collega policy.
-
Nella barra di ricerca inserisci
AmazonSNSReadOnlyAccesse scegli Aggiungi autorizzazioni.Nota
Per semplicità, questo tutorial utilizza una policy gestita. Come best practice, dovresti creare la tua policy IAM per concedere le autorizzazioni minime richieste.
-
Annota l'ARN del ruolo appena creato, lo utilizzerai in seguito.
Fase 2: creazione della risorsa
In questa fase creerai una risorsa che permette al proxy dei servizi AWS di interagire con il servizio AWS.
Per creare la risorsa
Accedere alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway
. -
Scegliere l'API.
-
Seleziona la risorsa root /, rappresentata da una singola barra (/), quindi scegli Crea risorsa.
Mantieni l'opzione Risorsa proxy disattivata.
Mantieni Percorso risorsa impostato su
/.Per Resource Name (Nome risorsa) immetti
mydemoawsproxy.Mantieni CORS (Cross Origin Resource Sharing) disattivato.
Scegli Crea risorsa.
Fase 3: creazione del metodo GET
In questa fase creerai un metodo GET che permette al proxy dei servizi AWS di interagire con il servizio AWS.
Per creare il metodo GET
-
Seleziona la risorsa /mydemoawsproxy, quindi scegli Crea metodo.
Per Tipo di metodo seleziona GET.
Per Tipo di integrazione seleziona Servizio AWS.
Per Regione AWS seleziona la Regione AWS in cui hai creato l'argomento Amazon SNS.
Per Servizio AWS seleziona Amazon SNS.
Lascia vuoto Sottodominio AWS.
Per Metodo HTTP seleziona GET.
Per Tipo di operazione scegli Usa nome operazione.
Per Nome azione immetti
ListTopics.Per Ruolo di esecuzione immetti l'ARN del ruolo per
APIGatewaySNSProxyPolicy.Scegli Crea metodo.
Fase 4: specifica delle impostazioni del metodo e test del metodo
A questo punto puoi testare il metodo GET per verificare che sia stato configurato correttamente per elencare gli argomenti Amazon SNS.
Test del metodo GET
Seleziona la scheda Test. Potrebbe essere necessario scegliere il pulsante freccia destra per visualizzare la scheda.
Scegli Test (Esegui test).
Il risultato mostra una risposta simile a quella riportata di seguito:
{ "ListTopicsResponse": { "ListTopicsResult": { "NextToken": null, "Topics": [ { "TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-1" }, { "TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-2" }, ... { "TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-N" } ] }, "ResponseMetadata": { "RequestId": "abc1de23-45fa-6789-b0c1-d2e345fa6b78" } } }
Fase 5: distribuzione dell'API
In questa fase, viene distribuita l'API per poterla chiamare esternamente alla console API Gateway.
Per distribuire l'API
Seleziona Deploy API (Distribuisci API).
In Fase, seleziona Nuova fase.
In Stage name (Nome fase) immettere
test.(Facoltativo) In Description (Descrizione), immettere una descrizione.
Seleziona Deploy (Implementa).
Fase 6: test dell'API
In questa fase si esce dalla console API Gateway e si utilizza il proxy dei servizi AWS per interagire con il servizio Amazon SNS.
-
Nel pannello di navigazione principale scegli Fase.
-
In Dettagli fase, scegli l'icona Copia per copiare l'URL di richiamo dell'API.
L'URL dovrebbe essere simile a questo:
https://my-api-id.execute-api.region-id.amazonaws.com/test -
Immetti l'URL nella barra degli indirizzi di una nuova scheda del browser.
-
Aggiungi
/mydemoawsproxyin modo che l'URL sia simile al seguente:https://my-api-id.execute-api.region-id.amazonaws.com/test/mydemoawsproxyAccedi all'URL. Verranno visualizzate informazioni simili alle seguenti:
{"ListTopicsResponse":{"ListTopicsResult":{"NextToken": null,"Topics":[{"TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-1"},{"TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-2"},...{"TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-N}]},"ResponseMetadata":{"RequestId":"abc1de23-45fa-6789-b0c1-d2e345fa6b78}}}
Fase 7: pulizia
Puoi eliminare le risorse IAM richieste dal proxy dei servizi AWS.
avvertimento
Se elimini una risorsa IAM usata dal proxy dei servizi AWS, il proxy dei servizi AWS e qualsiasi API basata su di esso non funzioneranno più. L'eliminazione di una risorsa IAM non può essere annullata. Per usare di nuovo la risorsa IAM, è necessario ricrearla.
Per eliminare le risorse IAM associate
Aprire la console IAM all'indirizzo https://console.aws.amazon.com/iam/
. -
Nell'area Details (Dettagli) scegliere Roles (Ruoli).
-
Selezionare APIGatewayAWSProxyExecRole e quindi scegliere Role Actions (Operazioni ruolo), Delete Role (Elimina ruolo). Quando viene richiesto, scegliere Yes, Delete (Sì, elimina).
-
Nell'area Details (Dettagli) scegliere Policies (Policy).
-
Selezionare APIGatewayAWSProxyExecPolicy, quindi scegliere Policy Actions (Operazioni policy), Delete (Elimina). Quando viene richiesto, scegliere Delete (Elimina).
Hai completato questa procedura guidata. Per una presentazione più completa della creazione di un'API come proxy dei servizi AWS, consulta Tutorial: creazione di una REST API come un proxy Amazon S3, Tutorial: creazione di una REST API di calcolo con due integrazioni del servizio AWS e un'integrazione non proxy Lambda o Tutorial: creazione di un'API REST come un proxy Amazon Kinesis.