View a markdown version of this page

Variabili di ambiente - AWS Lambda

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

Variabili di ambiente

Le variabili di ambiente sono coppie chiave-valore disponibili per il codice dell'applicazione in fase di esecuzione. Utilizzate le variabili di ambiente per la configurazione non sensibile che desiderate modificare senza modificare il codice, ad esempio i flag di funzionalità, i livelli di registro e gli identificatori di risorse come il nome host del database. Per i valori sensibili come le chiavi API e le credenziali del database, non archiviarli nelle variabili di ambiente. Utilizzate invece Secrets Manager o AWS Systems Manager Parameter Store e recuperate i valori in fase di esecuzione.

Le variabili di ambiente vengono impostate al momento della creazione della revisione e sono immutabili dopo la creazione. Per modificare una variabile di ambiente, crea una nuova revisione. Nella nuova revisione, specificate ogni variabile di ambiente e ogni serviceConfig impostazione che desiderate mantenere, non solo i valori che cambiano. Le impostazioni che ometti assumono i loro valori predefiniti e le variabili di ambiente che ometti non vengono impostate.

Lambda imposta la seguente variabile di ambiente specificamente per Web Functions:

  • AWS_LAMBDA_HTTP_ENDPOINT— L'host e la porta su cui il server HTTP deve ascoltare, in host:port formato. Lambda imposta questa variabile e indirizza le richieste a quell'indirizzo. Leggila nel codice dell'applicazione e associa esattamente l'host e la porta. Non è possibile impostare questa variabile nelle variabili di ambiente di una revisione. Associa sempre l'indirizzo in questa variabile, non a una porta localhost codificata. Il runtime attende che il server accetti una connessione a questo indirizzo e l'inizializzazione fallisce se non lo fa mai. Utilizzate un indirizzo di fallback solo per le esecuzioni locali. In una funzione Web, Lambda imposta sempre questa variabile.

Le funzioni Web ricevono anche altre variabili di ambiente di runtime Lambda, come AWS_LAMBDA_FUNCTION_MEMORY_SIZEAWS_LAMBDA_METADATA_API, e. AWS_LAMBDA_METADATA_TOKEN Per l'elenco generale, vediVariabili di ambiente di runtime definite. Se il tuo codice o una libreria legge una variabile da quell'elenco, verifica che Lambda la imposti in una funzione Web prima di fare affidamento su di essa. Le funzioni Web non ricevono tutte le variabili in quell'elenco.

I seguenti nomi di variabili di ambiente sono riservati a Lambda Web Functions e non possono essere impostati. Se ne specifichi una, Lambda rifiuta la richiesta di creazione di una funzione Web o di una revisione:

  • AWS_ACCESS_KEY, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SECRET_KEY, AWS_SECURITY_TOKEN e AWS_SESSION_TOKEN

  • AWS_DEFAULT_REGION e AWS_REGION

  • AWS_LAMBDA_HTTP_ENDPOINT, AWS_LAMBDA_RUNTIME_API, AWS_LAMBDA_INITIALIZATION_TYPE, e AWS_LAMBDA_FUNCTION_MEMORY_SIZE

  • AWS_LAMBDA_METADATA_API e AWS_LAMBDA_METADATA_TOKEN

Alcuni framework leggono invece le proprie variabili di ambiente per l'indirizzo di ascolto. Ad esempio, la modalità Next.js standalone legge e. HOSTNAME PORT Per tali framework, utilizzate un file di index.js immissione che imposta tali variabili AWS_LAMBDA_HTTP_ENDPOINT prima di avviare il server.

Per impostazione predefinita, il runtime viene caricato index.js nella radice del pacchetto di distribuzione come file di ingresso dell'applicazione. Il runtime non legge il punto di ingresso dapackage.json. Se il file di immissione ha un nome o un percorso diverso (ad esempio,dist/index.js), impostate la variabile di AWS_LAMBDA_NODEJS_ENTRYPOINT ambiente sul relativo percorso, relativo alla radice del pacchetto.

L'esempio seguente mostra come leggere la variabile di AWS_LAMBDA_HTTP_ENDPOINT ambiente in un'Node.jsapplicazione:

// Lambda provides the address to bind in AWS_LAMBDA_HTTP_ENDPOINT ("host:port"). // The fallback applies only when running locally. const [host, port] = (process.env.AWS_LAMBDA_HTTP_ENDPOINT || 'localhost:3000').split(':'); app.listen(port, host, () => { console.log(`Server listening on ${host}:${port}`); });

Per impostare variabili di ambiente personalizzate, aggiungete una environmentVariables mappa all'serviceConfigoggetto quando create una revisione, come nell'esempio seguente. Per il comando completo, vedeteCreare una revisione.

{ "executionRoleArn": "arn:aws:iam::111122223333:role/my-web-function-role", "environmentVariables": { "DATABASE_URL": "my-database-endpoint", "LOG_LEVEL": "info", "FEATURE_FLAG_NEW_UI": "true" } }

Se si specifica una chiave gestita dal cliente, Lambda crittografa le variabili di ambiente inattive con quella chiave. Per ulteriori informazioni, consulta Crittografia a riposo per Web Functions.