Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Questa sezione mostra come configurare le variabili di fase per due fasi di implementazione di un'API di esempio utilizzando la console Gateway Amazon API. Per capire come utilizzare le variabili di fase in Gateway API, ti consigliamo di seguire tutte le procedure illustrate in questa sezione.
Prerequisiti
Prima di iniziare, verifica che siano soddisfatti i seguenti requisiti preliminari:
-
Devi disporre di un'API in API Gateway. Segui le istruzioni in Sviluppa REST APIs in API Gateway.
-
Devi avere distribuito l'API almeno una volta. Segui le istruzioni in Implementa REST APIs in API Gateway.
-
Devi aver creato la prima fase per un'API distribuita. Segui le istruzioni in Creazione di una nuova fase.
Invocazione di un endpoint HTTP mediante un'API con una variabile di fase
Questa procedura descrive come creare una variabile di fase per un endpoint HTTP e due fasi per l'API. Inoltre, vengono create le variabili di fase url
, stageName
e function
, che vengono utilizzate nelle procedure seguenti di questa sezione.
Per invocare un endpoint HTTP mediante un'API con una variabile di fase
Accedi alla console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway.
-
Crea un'API, quindi crea un metodo
GET
nella risorsa radice dell'API. Imposta il tipo di integrazione su HTTP e imposta l'URL dell'endpoint suhttp://${stageVariables.url}
. -
Implementa l'API in una nuova fase denominata
beta
. -
Nel riquadro di navigazione scegli Fasi, quindi seleziona la fase beta.
-
Nella scheda Variabili di fase scegli Modifica.
-
Scegli Aggiungi variabile di fase.
-
Per Nome, immetti
url
. In Valore, inseriscihttpbin.org/get
. -
Scegli Aggiungi variabile di fase, quindi effettua le seguenti operazioni:
Per Nome, immetti
stageName
. In Valore, inseriscibeta
. -
Scegli Aggiungi variabile di fase, quindi effettua le seguenti operazioni:
Per Nome, immetti
function
. In Valore, inserisciHelloWorld
. -
Seleziona Salva.
-
Ora crea una seconda fase. Dal riquadro di navigazione Fasi scegli Crea fase. In Stage name (Nome fase) immettere
prod
. Seleziona un'implementazione recente da Implementazione e scegli Crea. -
Come per la fase beta, imposta le stesse tre variabili di fase (url, version e function) su valori diversi (rispettivamente
petstore-demo-endpoint.execute-api.com/petstore/pets
,prod
eHelloEveryone
). -
Nel riquadro di navigazione Stages (Fasi) scegli beta. In Dettagli fase scegli l'icona Copia per copiare l'URL di richiamo dell'API, quindi immetti l'URL di richiamo dell'API in un browser Web. Viene avviata la richiesta
GET
della fase beta nella risorsa radice dell'API.Nota
Il collegamento Invoke URL (URL chiamata) punta alla risorsa radice dell'API nella rispettiva fase beta. L'immissione dell'URL in un browser Web chiama il metodo
GET
della fase beta nella risorsa radice. Se i metodi vengono definiti nelle risorse figlio e non nella risorsa radice stessa, scegliendo l'URL in un browser Web viene restituita la risposta di errore{"message":"Missing Authentication Token"}
. In questo caso, devi aggiungere al collegamento Invoke URL (URL chiamata) il nome di una risorsa figlio specifica. -
La risposta che si ottiene dalla richiesta
GET
della fase beta è mostrata più avanti. Puoi verificare il risultato anche utilizzando un browser per accedere a http://httpbin.org/get. Questo valore è stato assegnato alla variabileurl
nella fase beta. Le due risposte sono identiche. -
Nel riquadro di navigazione Stages (Fasi) scegli la fase prod. In Dettagli fase scegli l'icona Copia per copiare l'URL di richiamo dell'API, quindi immetti l'URL di richiamo dell'API in un browser Web. Viene avviata la richiesta
GET
della fase prod nella risorsa radice dell'API. -
La risposta che si ottiene dalla richiesta
GET
della fase prod è mostrata più avanti. È possibile verificare il risultato utilizzando un browser per accedere a http://.execute-api. petstore-demo-endpoint com/petstore/pets. Questo valore è stato assegnato alla variabileurl
nella fase prod. Le due risposte sono identiche.
Passare i metadati specifici della fase in un backend HTTP
Questa procedura descrive come utilizzare un valore di variabile di fase in un'espressione di parametri di query per passare i metadati specifici delle fasi in un back-end HTTP. Utilizzeremo la variabile di fase stageName
dichiarata nella procedura precedente.
Per passare metadati specifici della fase in un backend HTTP
-
Nel riquadro di navigazione Resource (Risorsa) scegli il metodo GET.
Per aggiungere un parametro della stringa di query all'URL del metodo, seleziona la scheda Richiesta del metodo, quindi nella sezione Impostazioni della richiesta del metodo, scegli Modifica.
Scegli i parametri della stringa di query URL ed effettua le seguenti operazioni:
Scegliere Add query string (Aggiungi stringa di query).
Per Nome, immetti
stageName
.Mantieni Obbligatorio e Caching disattivati.
Seleziona Salva.
-
Scegli la scheda Richiesta di integrazione, quindi seleziona Modifica nella sezione Impostazioni della richiesta di integrazione.
Per URL dell'endpoint aggiungi
?stageName=${stageVariables.stageName}
al valore URL definito in precedenza, in modo che sia l'intero URL dell'endpoint siahttp://${stageVariables.url}?stageName=${stageVariables.stageName}
.-
Scegli Implementa API e seleziona la fase beta.
-
Nel riquadro di navigazione principale scegli Fasi. Nel riquadro di navigazione Stages (Fasi) scegli beta. In Dettagli fase scegli l'icona Copia per copiare l'URL di richiamo dell'API, quindi immetti l'URL di richiamo dell'API in un browser Web.
Nota
Qui usiamo la fase beta perché l'endpoint HTTP (come specificato dalla variabile
url
, "http://httpbin.org/get") accetta le espressioni dei parametri di query e le restituisce come oggettoargs
nella rispettiva risposta. -
Si ottiene la risposta seguente.
beta
, assegnato alla variabile di fasestageName
, viene passata nel back-end come argomentostageName
.
Invocare una funzione Lambda attraverso un'API con una variabile di fase
Questa procedura descrive come utilizzare una variabile di fase per chiamare una funzione Lambda come back-end dell'API. Utilizzerai la variabile di fase function
dichiarata in Invocazione di un endpoint HTTP mediante un'API con una variabile di fase.
Quando imposti una funzione Lambda come valore di una variabile di fase, usa il nome locale della funzione, se possibile includendo l'alias o la specifica della versione, come in HelloWorld
, HelloWorld:1
o HelloWorld:alpha
. Non usare l'ARN della funzione (ad esempi, arn:aws:lambda:us-east-1:123456789012:function:HelloWorld
). La console API Gateway assume il valore della variabile di fase per una funzione Lambda come nome di funzione non qualificato ed espande la variabile di fase specificata in un ARN.
Per invocare la funzione Lambda mediante un'API con una variabile di fase
-
Crea una funzione Lambda denominata
HelloWorld
utilizzando il runtime Node.js predefinito. Il codice deve contenere quanto segue:export const handler = function(event, context, callback) { if (event.stageName) callback(null, 'Hello, World! I\'m calling from the ' + event.stageName + ' stage.'); else callback(null, 'Hello, World! I\'m not sure where I\'m calling from...'); };
Per ulteriori informazioni su come creare una funzione Lambda, consulta Nozioni di base sulla console REST API.
-
Nel riquadro Risorse seleziona Crea risorsa, quindi procedi come segue:
Per Percorso risorsa, seleziona /.
Per Resource Name (Nome risorsa) immetti
lambdav1
.Scegli Crea risorsa.
-
Scegli la risorsa /lambdav1 e poi scegli Crea metodo.
Successivamente, esegui queste operazioni:
Per Tipo di metodo seleziona GET.
Per Tipo di integrazione seleziona Funzione Lambda.
Mantieni l'opzione Integrazione proxy Lambda disattivata.
Per Lambda function (Funzione Lambda), immetti
${stageVariables.function}
.Suggerimento
Quando richiesto con il comando Aggiungi autorizzazione, copia il comando add-permission. Esegui il comando per ciascuna funzione Lambda che sarà assegnata alla variabile di fase
function
. Ad esempio, se il valore di$stageVariables.function
èHelloWorld
, esegui il comando AWS CLI seguente:aws lambda add-permission --function-name arn:aws:lambda:us-east-1:
account-id
:function:HelloWorld --source-arn arn:aws:execute-api:us-east-1:account-id
:api-id
/*/GET/lambdav1 --principal apigateway.amazonaws.com --statement-idstatement-id-guid
--action lambda:InvokeFunctionIn caso contrario, riceverai una risposta
500 Internal Server Error
quando verrà invocato il metodo. Sostituisci${stageVariables.function}
con il nome della funzione Lambda assegnato alla variabile di fase.-
Scegli Crea metodo.
-
Implementa l'API in entrambe le fasi prod e beta.
-
Nel riquadro di navigazione principale scegli Fasi. Nel riquadro di navigazione Stages (Fasi) scegli beta. In Dettagli fase scegli l'icona Copia per copiare l'URL di richiamo dell'API, quindi immetti l'URL di richiamo dell'API in un browser Web. Aggiungi
/lambdav1
all'URL prima di premere invio.Si ottiene la risposta seguente.
"Hello, World! I'm not sure where I'm calling from..."
Passaggio dei metadati specifici delle fasi a una funzione Lambda mediante una variabile di fase
Questa procedura descrive come utilizzare una variabile di fase per passare i metadata di configurazione specifici delle fasi in una funzione Lambda. Crei un metodo POST
e un modello di mappatura di input per generare il payload utilizzando la variabile di fase stageName
dichiarata precedentemente.
Per passare i metadati specifici delle fasi a una funzione Lambda mediante una variabile di fase
-
Scegli la risorsa /lambdav1 e poi scegli Crea metodo.
Successivamente, esegui queste operazioni:
Per Tipo di metodo seleziona POST.
Per Tipo di integrazione seleziona Funzione Lambda.
Mantieni l'opzione Integrazione proxy Lambda disattivata.
Per Lambda function (Funzione Lambda), immetti
${stageVariables.function}
.-
Quando richiesto con il comando Aggiungi autorizzazione, copia il comando add-permission. Esegui il comando per ciascuna funzione Lambda che sarà assegnata alla variabile di fase
function
. Scegli Crea metodo.
-
Scegli la scheda Richiesta di integrazione, quindi seleziona Modifica nella sezione Impostazioni della richiesta di integrazione.
Scegli Modelli di mappatura, quindi seleziona Aggiungi modello di mappatura.
Per Tipo di contenuto inserisci
application/json
.Per Corpo del modello inserisci il seguente modello:
#set($inputRoot = $input.path('$')) { "stageName" : "$stageVariables.stageName" }
Nota
In un modello di mappatura il riferimento a una variabile di fase deve essere racchiuso tra apici (come in
"$stageVariables.stageName"
o"${stageVariables.stageName}"
), mentre altrove non si devono utilizzare gli apici (come in${stageVariables.function}
).Seleziona Salva.
-
Implementa l'API in entrambe le fasi beta e prod.
-
Per utilizzare un client REST API per passare i metadati specifici della fase, procedi come segue:
Nel riquadro di navigazione Stages (Fasi) scegli beta. In Dettagli fase scegli l'icona Copia per copiare l'URL di richiamo dell'API, quindi immetti l'URL di richiamo dell'API nel campo di input di un client REST API. Aggiungi
/lambdav1
prima di inviare la richiesta.Si ottiene la risposta seguente.
"Hello, World! I'm calling from the beta stage."
Nel riquadro di navigazione Fasi scegli prod. In Dettagli fase scegli l'icona Copia per copiare l'URL di richiamo dell'API, quindi immetti l'URL di richiamo dell'API nel campo di input di un client REST API. Aggiungi
/lambdav1
prima di inviare la richiesta.Si ottiene la risposta seguente.
"Hello, World! I'm calling from the prod stage."
-
Per utilizzare la funzionalità Test per trasmettere i metadati specifici della fase, procedi come segue:
Nel riquadro di navigazione Risorse scegli la scheda Test. Potrebbe essere necessario scegliere il pulsante freccia destra per visualizzare la scheda.
Per function immetti
HelloWorld
.Per stageName immetti
beta
.Scegli Test (Esegui test). Non è necessario aggiungere un corpo alla richiesta
POST
.Si ottiene la risposta seguente.
"Hello, World! I'm calling from the beta stage."
Puoi ripetere i passaggi precedenti per testare la fase Prod. Per stageName immetti
Prod
.Si ottiene la risposta seguente.
"Hello, World! I'm calling from the prod stage."