API Gateway eseguito localmente con AWS SAM - AWS Serverless Application Model

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à.

API Gateway eseguito localmente con AWS SAM

L'esecuzione locale di Amazon API Gateway può offrire una serie di vantaggi. Ad esempio, l'esecuzione locale di API Gateway consente di testare gli endpoint API localmente prima della distribuzione nel AWS cloud. Se esegui prima il test localmente, spesso puoi ridurre i test e lo sviluppo nel cloud, il che può aiutare a ridurre i costi. Inoltre, l'esecuzione locale semplifica il debug.

Per avviare un'istanza locale di API Gateway da utilizzare per testare la funzionalità di richiesta/risposta HTTP, utilizzate il sam local start-api AWS SAMCLI comando. Questa funzionalità include il ricaricamento a caldo in modo da poter sviluppare e iterare rapidamente le funzioni.

Nota

Il ricaricamento a caldo avviene quando vengono aggiornati solo i file modificati e lo stato dell'applicazione rimane lo stesso. Al contrario, il ricaricamento in tempo reale avviene quando l'intera applicazione viene aggiornata e lo stato dell'applicazione viene perso.

Per istruzioni sull'uso del sam local start-api comando, vedere. Introduzione ai test con sam local start-api

Per impostazione predefinita, AWS SAM utilizza integrazioni AWS Lambda proxy e supporta entrambi HttpApi i tipi di Api risorse. Per ulteriori informazioni sulle integrazioni proxy per i tipi di HttpApi risorse, consulta Working with AWS Lambda proxy integrations for HTTP APIs nella API Gateway Developer Guide. Per ulteriori informazioni sulle integrazioni proxy con i tipi di Api risorse, consulta Understand API Gateway Lambda Proxy Integration nella API Gateway Developer Guide.

Esempio:

$ sam local start-api

AWS SAM trova automaticamente tutte le funzioni all'interno del AWS SAM modello che hanno HttpApi o sono state definite fonti di Api eventi. Quindi, monta la funzione nei percorsi HTTP definiti.

Nell'Apiesempio seguente, la Ratings funzione viene montata ratings.py:handler() su /ratings per GET le richieste:

Ratings: Type: AWS::Serverless::Function Properties: Handler: ratings.handler Runtime: python3.9 Events: Api: Type: Api Properties: Path: /ratings Method: get

Ecco un esempio di Api risposta:

// Example of a Proxy Integration response exports.handler = (event, context, callback) => { callback(null, { statusCode: 200, headers: { "x-custom-header" : "my custom header value" }, body: "hello world" }); }

Se modifichi il codice della funzione, esegui il sam build comando for sam local start-api per rilevare le modifiche.

File di variabili di ambiente

Per dichiarare localmente le variabili di ambiente che sovrascrivono i valori definiti nei modelli, procedi come segue:

  1. Crea un file JSON che contenga le variabili di ambiente da sovrascrivere.

  2. Usa l'--env-varsargomento per sovrascrivere i valori definiti nei tuoi modelli.

Dichiarazione delle variabili di ambiente

Per dichiarare variabili di ambiente che si applicano globalmente a tutte le risorse, specificate un Parameters oggetto come il seguente:

{ "Parameters": { "TABLE_NAME": "localtable", "BUCKET_NAME": "testBucket", "STAGE": "dev" } }

Per dichiarare variabili di ambiente diverse per ogni risorsa, specificate gli oggetti per ogni risorsa come segue:

{ "MyFunction1": { "TABLE_NAME": "localtable", "BUCKET_NAME": "testBucket", }, "MyFunction2": { "TABLE_NAME": "localtable", "STAGE": "dev" } }

Quando si specificano oggetti per ogni risorsa, è possibile utilizzare i seguenti identificatori, elencati in ordine di precedenza dalla più alta alla più bassa:

  1. logical_id

  2. function_id

  3. function_name

  4. Identificatore di percorso completo

È possibile utilizzare entrambi i metodi precedenti per dichiarare le variabili di ambiente insieme in un unico file. In tal caso, le variabili di ambiente fornite per risorse specifiche hanno la precedenza sulle variabili di ambiente globali.

Salva le variabili di ambiente in un file JSON, ad esempio. env.json

Ignorare i valori delle variabili di ambiente

Per sovrascrivere le variabili di ambiente con quelle definite nel tuo file JSON, usa l'--env-varsargomento con i invoke comandi or. start-api Per esempio:

$ sam local start-api --env-vars env.json

Livelli

Se l'applicazione include livelli, per informazioni su come eseguire il debug dei problemi con i layer sull'host locale, consultaAumenta l'efficienza utilizzando i livelli Lambda con AWS SAM.