Uso dei parametri Parameter Store nelle funzioni AWS Lambda - AWS Systems Manager

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

Uso dei parametri Parameter Store nelle funzioni AWS Lambda

Parameter Store, una funzionalità di AWS Systems Manager, fornisce uno storage sicuro e gerarchico per la gestione dei dati di configurazione e la gestione dei segreti. È possibile archiviare dati, ad esempio le password, le stringhe di database, ID Amazon Machine Image (AMI) e i codici di licenza, come valori dei parametri.

Per utilizzare i parametri AWS Lambda delle funzioni senza utilizzare un SDK, puoi utilizzare l'estensione Lambda AWS Parameters and Secrets. Parameter Store Questa estensione recupera i valori dei parametri e li memorizza nella cache per usarli in futuro. L'utilizzo dell'estensione Lambda può ridurre i costi riducendo il numero di chiamate API a Parameter Store. Può inoltre migliorare la latenza perché il recupero di un parametro memorizzato nella cache è più rapido rispetto al recupero da Parameter Store.

Un'estensione Lambda è un processo complementare che si aggiunge alle funzionalità di una normale funzione Lambda. Un'estensione è come un client che viene eseguito in parallelo a una chiamata Lambda. Questo client parallelo può interfacciarsi con la funzione in qualsiasi momento del suo ciclo di vita. Per ulteriori informazioni sulle estensioni Lambda, consulta API delle estensioni Lambda nella Guida per gli sviluppatori di AWS Lambda .

L'estensione Lambda AWS Parameters and Secrets funziona sia Parameter Store per. AWS Secrets Manager Per informazioni su come utilizzare l'estensione Lambda con i segreti di Secrets Manager, consulta Usare AWS Secrets Manager i segreti nelle AWS Lambda funzioni nella Guida per l'AWS Secrets Manager utente.

Informazioni correlate

Utilizzo dell'estensione Lambda AWS Parameter and Secrets per memorizzare nella cache parametri e segreti (AWS Compute Blog)

Come funziona l'estensione

Per utilizzare i parametri in una funzione Lambda senza l'estensione Lambda, devi configurare la funzione Lambda in modo da ricevere gli aggiornamenti di configurazione mediante l'integrazione con l'operazione API GetParameter per Parameter Store.

Quando si utilizza l'estensione Lambda AWS Parameters and Secrets, l'estensione recupera il valore del parametro Parameter Store e lo archivia nella cache locale. Quindi, il valore memorizzato nella cache viene utilizzato per ulteriori invocazioni fino alla scadenza. I valori memorizzati nella cache scadono dopo il loro time-to-live passaggio (TTL). Puoi configurare il valore TTL utilizzando la variabile d'ambiente SSM_PARAMETER_STORE_TTL, come spiegato più avanti in questo argomento.

Se il TTL della cache configurata non è scaduto, sarà utilizzato il valore del parametro memorizzato nella cache. Se il tempo è scaduto, il valore memorizzato nella cache viene invalidato e il valore del parametro sarà recuperato da Parameter Store.

Inoltre, il sistema rileva i valori dei parametri utilizzati di frequente e li mantiene nella cache mentre cancella quelli scaduti o non utilizzati.

Dettagli di implementazione

Usa i seguenti dettagli per aiutarti a configurare l'estensione Lambda AWS Parameters and Secrets.

Autenticazione

Per autorizzare e autenticare le richieste Parameter Store, l'estensione utilizza le stesse credenziali utilizzate per eseguire la funzione Lambda stessa. Pertanto, il ruolo AWS Identity and Access Management (IAM) utilizzato per eseguire la funzione deve disporre delle seguenti autorizzazioni per interagire con: Parameter Store

  • ssm:GetParameter: obbligatorio per recuperare i parametri da Parameter Store

  • kms:Decrypt: obbligatorio se stai recuperando i parametri SecureString da Parameter Store

Per ulteriori informazioni, consulta Ruolo di esecuzione di AWS Lambda nella Guida per gli sviluppatori di AWS Lambda .

Istanziazione

Lambda crea istanze separate corrispondenti al livello di simultaneità richiesto dalla funzione. Ogni istanza è isolata e mantiene la propria cache locale dei dati di configurazione. Per ulteriori informazioni sulle istanze Lambda e sulla simultaneità, consulta Configurazione della simultaneità riservata nella Guida per gli sviluppatori di AWS Lambda .

Nessuna dipendenza dall'SDK

L'estensione Lambda AWS Parameters and Secrets funziona indipendentemente da qualsiasi libreria di linguaggi AWS SDK. Non è necessario un AWS SDK per effettuare richieste GET a. Parameter Store

Porta Localhost

Utilizza localhost nelle tue richieste GET. L'estensione effettua le richieste alla porta 2773 di localhost. Per utilizzare l'estensione, non è necessario specificare un endpoint esterno o interno. È possibile configurare la porta impostando la variabile di ambiente PARAMETERS_SECRETS_EXTENSION_HTTP_PORT.

Ad esempio, in Python, il tuo URL GET potrebbe avere un aspetto simile al seguente esempio.

parameter_url = ('http://localhost:' + port + '/systemsmanager/parameters/get/?name=' + ssm_parameter_path)
Modifiche al valore di un parametro prima della scadenza del TTL

L'estensione non rileva le modifiche al valore del parametro e non esegue un aggiornamento automatico prima della scadenza del TTL. Se modifichi il valore di un parametro, le operazioni che utilizzano il valore del parametro memorizzato nella cache potrebbero avere esito negativo fino al successivo aggiornamento della cache. Se prevedi modifiche frequenti al valore di un parametro, ti consigliamo di impostare un valore TTL più breve.

Richiesta dell'intestazione

Per recuperare i parametri dalla cache delle estensioni, l'intestazione della richiesta GET deve includere un riferimento X-Aws-Parameters-Secrets-Token. Imposta il token su AWS_SESSION_TOKEN, fornito da Lambda per tutte le funzioni in esecuzione. L'utilizzo di questa intestazione indica che chi effettua la chiamata si trova all'interno dell'ambiente Lambda.

Esempio

L'esempio seguente in Python mostra una richiesta di base per recuperare il valore di un parametro memorizzato nella cache.

import urllib.request import os import json aws_session_token = os.environ.get('AWS_SESSION_TOKEN') def lambda_handler(event, context): # Retrieve /my/parameter from Parameter Store using extension cache req = urllib.request.Request('http://localhost:2773/systemsmanager/parameters/get?name=%2Fmy%2Fparameter') req.add_header('X-Aws-Parameters-Secrets-Token', aws_session_token) config = urllib.request.urlopen(req).read() return json.loads(config)
Supporto ARM

L'estensione non supporta affatto l'architettura ARM in Regioni AWS cui sono supportate x86 le architetture x86_64 and.

Per un elenco completo degli ARN di estensione, consulta AWS Parametri e segreti (Lambda Extension ARN).

Registrazione

Lambda registra le informazioni di esecuzione sull'estensione insieme alla funzione utilizzando Amazon Logs. CloudWatch Per impostazione predefinita, l'estensione registra una quantità minima di informazioni su. CloudWatch Per registrare ulteriori dettagli, imposta la variabile di ambiente PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL su DEBUG.

Aggiunta dell'estensione a una funzione Lambda

Per utilizzare l'estensione Lambda AWS Parameters and Secrets, aggiungi l'estensione alla tua funzione Lambda come livello.

Per aggiungere l'estensione alla funzione,utilizza uno dei metodi descritti di seguito.

AWS Management Console (Opzione Aggiungi livello)
  1. Apri la AWS Lambda console all'indirizzo https://console.aws.amazon.com/lambda/.

  2. Scegliere la funzione. Nell'area Layers (Livelli), scegli Add a layer (Aggiungi un livello).

  3. Nell'area Choose a layer (Scegli un livello), scegli l'opzione AWS layers (Livelli ).

  4. Per AWS layers (Livelli ), scegli AWS-Parameters-and-Secrets-Lambda-Extension, seleziona una versione e infine scegli Add (Aggiungi).

AWS Management Console (Specificare l'opzione ARN)
  1. Apri la AWS Lambda console all'indirizzo https://console.aws.amazon.com/lambda/.

  2. Scegliere la funzione. Nell'area Layers (Livelli), scegli Add a layer (Aggiungi un livello).

  3. Nell'area Choose a layer (Scegli un livello), scegli l'opzione Specify an ARN (Specifica un ARN).

  4. Per Specificare un ARN, inserisci l'estensione ARN per l'architettura Regione AWS e quindi scegli Aggiungi.

AWS Command Line Interface

Esegui il comando seguente nell' AWS CLI. Sostituisci ciascun segnaposto delle risorse di esempio con le tue informazioni.

aws lambda update-function-configuration \ --function-name function-name \ --layers layer-ARN

Informazioni correlate

Uso dei livelli con la funzione Lambda

Configurazione delle estensioni (archivio di file .zip)

AWS Parametri e segreti: variabili di ambiente Lambda Extension

Puoi configurare l'estensione modificando le seguenti variabili di ambiente. Per visualizzare le impostazioni correnti, imposta PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL su DEBUG. Per ulteriori informazioni, consulta Uso delle variabili di AWS Lambda ambiente nella Guida per gli AWS Lambda sviluppatori.

Nota

AWS Lambda registra i dettagli operativi sull'estensione Lambda e sulla funzione Lambda in Amazon Logs. CloudWatch

Variabile di ambiente Informazioni Richiesto Valori validi Valore predefinito

SSM_PARAMETER_STORE_TIMEOUT_MILLIS

Il timeout, in millisecondi, per le richieste a Parameter Store.

Il valore 0 (zero) indica l'assenza di timeout.

No Tutti i numeri interi 0 (zero)

SECRETS_MANAGER_TIMEOUT_MILLIS

Il timeout, in millisecondi, per le richieste a Gestione dei segreti.

Il valore 0 (zero) indica l'assenza di timeout.

No Tutti i numeri interi

0 (zero)

SSM_PARAMETER_STORE_TTL

La durata massima valida, in secondi, di un parametro nella cache prima che venga invalidato. Un valore pari a 0 (zero) indica che la cache deve essere bypassata. Questa variabile viene ignorata se il valore per PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE è 0 (zero).

No Da 0 (zero) a 300 s (cinque minuti) 300 s (cinque minuti)

SECRETS_MANAGER_TTL

La durata massima valida, in secondi, di un parametro nella cache prima che venga invalidato. Un valore pari a 0 (zero) indica che la cache è bypassata. Questa variabile viene ignorata se il valore per PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE è 0 (zero).

No Da 0 (zero) a 300 s (cinque minuti) 300 s (5 minuti)
PARAMETERS_SECRETS_EXTENSION_CACHE_ENABLED

Determina se la cache per l'estensione è abilitata. Valori del valore: TRUE | FALSE

No TRUE | FALSE TRUE
PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE

La dimensione massima della cache in termini di numero di elementi. Un valore pari a 0 (zero) indica che la cache è bypassata. Questa variabile viene ignorata se entrambi i valori TTL della cache sono 0 (zero).

No Da 0 (zero) a 1000

1000

PARAMETERS_SECRETS_EXTENSION_HTTP_PORT La porta per il server HTTP locale. No 1 - 65535

2773

PARAMETERS_SECRETS_EXTENSION_MAX_CONNECTIONS

Numero massimo di connessioni per i client HTTP utilizzati dall'estensione per effettuare richieste a Parameter Store o a Gestione dei segreti. Si tratta di una configurazione per client per il numero di connessioni che sia il client di Secrets Manager che il client Parameter Store effettuano ai servizi di backend.

No Minimo 1; nessun limite massimo.

3

PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL

Il livello di dettaglio riportato nei log per l'estensione.

Consigliamo di utilizzare DEBUG per maggiori dettagli sulla configurazione della cache durante la configurazione e il test dell'estensione.

I log per le operazioni Lambda vengono automaticamente inviati a un gruppo di log Logs CloudWatch associato.

No

DEBUG | WARN | ERROR | NONE | INFO

INFO

Comandi di esempio per l'utilizzo dell'estensione AWS Systems ManagerParameter Store e AWS Secrets Manager

Gli esempi in questa sezione mostrano le azioni API da utilizzare con l' AWS Secrets Manager estensione AWS Systems Manager Parameter Store and.

Comandi di esempio per Parameter Store

L'estensione Lambda utilizza l'accesso in sola lettura all'azione API. GetParameter

Per chiamare questa operazione, effettua una chiamata HTTP GET simile alla seguente.

GET http://localhost:port/systemsmanager/parameters/get?name=parameter-path&version=version&label=label&withDecryption={true|false}

In questo esempio, parameter-path rappresenta il nome completo del parametro. version e label sono i selettori disponibili per l'uso con l'azione. GetParameter Questo formato di comando consente l'accesso ai parametri del livello di parametri standard.

Nota

Quando utilizzi le chiamate GET, i valori dei parametri devono essere codificati in modo che HTTP conservi caratteri speciali. Ad esempio, invece di formattare un percorso gerarchico come /a/b/c, codifica caratteri che potrebbero essere interpretati come parte dell'URL, come %2Fa%2Fb%2Fc.

GET http://localhost:port/systemsmanager/parameters/get/?name=MyParameter&version=5

Per chiamare un parametro in una gerarchia, effettuate una chiamata HTTP GET simile alla seguente.

GET http://localhost:port/systemsmanager/parameters/get?name=%2Fa%2Fb%2F&label=release

Per chiamare un parametro pubblico (globale), effettuate una chiamata HTTP GET simile alla seguente.

GET http://localhost:port/systemsmanager/parameters/get/?name=%2Faws%2Fservice%20list%2F…

Per effettuare una chiamata HTTP GET a un segreto di Gestione dei segreti utilizzando i riferimenti Parameter Store, effettua una chiamata HTTP GET simile alla seguente.

GET http://localhost:port/systemsmanager/parameters/get?name=%2Faws%2Freference%2Fsecretsmanager%2F…

Per effettuare una chiamata utilizzando il nome della risorsa Amazon (ARN) per un parametro, effettua una chiamata HTTP GET simile alla seguente.

GET http://localhost:port/systemsmanager/parameters/get?name=arn:aws:ssm:us-east-1:123456789012:parameter/MyParameter

Per effettuare una chiamata che accede a un parametro SecureString con decrittografia, effettua una chiamata HTTP GET simile alla seguente.

GET http://localhost:port/systemsmanager/parameters/get?name=MyParameter&withDecryption=true

Puoi specificare che i parametri non vengano decrittografati omettendo withDecryption o impostandolo esplicitamente su false. Puoi anche specificare una versione o un'etichetta, ma non entrambe. In questo caso, sarà utilizzato solo la prima di queste inserita dopo il punto interrogativo (?) nell'URL.

AWS Parametri e segreti (Lambda Extension ARN)

Le tabelle seguenti riportano gli ARN delle estensioni per le architetture e le regioni supportate.

ARN di estensione per le architetture x86_64 e x86

Regione ARN

Stati Uniti orientali (Ohio)

arn:aws:lambda:us-east-2:590474943231:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

Stati Uniti orientali (Virginia settentrionale)

arn:aws:lambda:us-east-1:177933569100:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

Stati Uniti occidentali (California settentrionale)

arn:aws:lambda:us-west-1:997803712105:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

Stati Uniti occidentali (Oregon)

arn:aws:lambda:us-west-2:345057560386:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

Africa (Città del Capo)

arn:aws:lambda:af-south-1:317013901791:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

Asia Pacifico (Hong Kong)

arn:aws:lambda:ap-east-1:768336418462:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

Regione Asia Pacifico (Hyderabad)

arn:aws:lambda:ap-south-2:070087711984:layer:AWS-Parameters-and-Secrets-Lambda-Extension:8

Asia Pacifico (Giacarta)

arn:aws:lambda:ap-southeast-3:490737872127:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

Asia Pacifico (Melbourne)

arn:aws:lambda:ap-southeast-4:090732460067:layer:AWS-Parameters-and-Secrets-Lambda-Extension:1

Asia Pacifico (Mumbai)

arn:aws:lambda:ap-south-1:176022468876:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

Asia Pacific (Osaka)

arn:aws:lambda:ap-northeast-3:576959938190:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

Asia Pacific (Seul)

arn:aws:lambda:ap-northeast-2:738900069198:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

Asia Pacifico (Singapore)

arn:aws:lambda:ap-southeast-1:044395824272:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

Asia Pacifico (Sydney)

arn:aws:lambda:ap-southeast-2:665172237481:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

Asia Pacifico (Tokyo)

arn:aws:lambda:ap-northeast-1:133490724326:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

Canada (Centrale)

arn:aws:lambda:ca-central-1:200266452380:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

Canada occidentale (Calgary) arn:aws:lambda:ca-west-1:243964427225:layer:AWS-Parameters-and-Secrets-Lambda-Extension:1
Cina (Pechino)

arn:aws-cn:lambda:cn-north-1:287114880934:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

China (Ningxia)

arn:aws-cn:lambda:cn-northwest-1:287310001119:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

Europa (Francoforte)

arn:aws:lambda:eu-central-1:187925254637:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

Europa (Irlanda)

arn:aws:lambda:eu-west-1:015030872274:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

Europa (Londra)

arn:aws:lambda:eu-west-2:133256977650:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

Europa (Milano)

arn:aws:lambda:eu-south-1:325218067255:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

Europa (Parigi)

arn:aws:lambda:eu-west-3:780235371811:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

Regione Europa (Spagna)

arn:aws:lambda:eu-south-2:524103009944:layer:AWS-Parameters-and-Secrets-Lambda-Extension:8

Europa (Stoccolma)

arn:aws:lambda:eu-north-1:427196147048:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

Israele (Tel Aviv)

arn:aws:lambda:il-central-1:148806536434:layer:AWS-Parameters-and-Secrets-Lambda-Extension:1

Regione Europa (Zurigo)

arn:aws:lambda:eu-central-2:772501565639:layer:AWS-Parameters-and-Secrets-Lambda-Extension:8

Medio Oriente (Bahrein)

arn:aws:lambda:me-south-1:832021897121:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

Medio Oriente (Emirati Arabi Uniti) arn:aws:lambda:me-central-1:858974508948:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

Sud America (San Paolo)

arn:aws:lambda:sa-east-1:933737806257:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

AWS GovCloud (Stati Uniti orientali)

arn:aws-us-gov:lambda:us-gov-east-1:129776340158:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

AWS GovCloud (Stati Uniti occidentali)

arn:aws-us-gov:lambda:us-gov-west-1:127562683043:layer:AWS-Parameters-and-Secrets-Lambda-Extension:11

ARN di estensione per e architetture ARM64Mac with Apple silicon

Regione ARN

Stati Uniti orientali (Ohio)

arn:aws:lambda:us-east-2:590474943231:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:11

Stati Uniti orientali (Virginia settentrionale)

arn:aws:lambda:us-east-1:177933569100:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:11

Regione Stati Uniti occidentali (California settentrionale)

arn:aws:lambda:us-west-1:997803712105:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:8

US West (Oregon)

arn:aws:lambda:us-west-2:345057560386:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:11

Regione Africa (Città del Capo)

arn:aws:lambda:af-south-1:317013901791:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:8

Regione Asia Pacifico (Hong Kong)

arn:aws:lambda:ap-east-1:768336418462:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:8

Regione Asia Pacifico (Giacarta)

arn:aws:lambda:ap-southeast-3:490737872127:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:8

Asia Pacifico (Mumbai)

arn:aws:lambda:ap-south-1:176022468876:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:11

Asia Pacifico (Osaka-Locale)

arn:aws:lambda:ap-northeast-3:576959938190:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:8

Regione Asia Pacifico (Seoul)

arn:aws:lambda:ap-northeast-2:738900069198:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:8

Asia Pacifico (Singapore)

arn:aws:lambda:ap-southeast-1:044395824272:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:11

Asia Pacifico (Sydney)

arn:aws:lambda:ap-southeast-2:665172237481:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:11

Asia Pacifico (Tokyo)

arn:aws:lambda:ap-northeast-1:133490724326:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:11

Regione Canada (Centrale)

arn:aws:lambda:ca-central-1:200266452380:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:8

Europa (Francoforte)

arn:aws:lambda:eu-central-1:187925254637:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:11

Europa (Irlanda)

arn:aws:lambda:eu-west-1:015030872274:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:11

Europa (Londra)

arn:aws:lambda:eu-west-2:133256977650:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:11

Regione Europa (Milano)

arn:aws:lambda:eu-south-1:325218067255:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:8

Regione Europa (Parigi)

arn:aws:lambda:eu-west-3:780235371811:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:8

Regione Europa (Stoccolma)

arn:aws:lambda:eu-north-1:427196147048:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:8

Regione Medio Oriente (Bahrein)

arn:aws:lambda:me-south-1:832021897121:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:8

Regione Sud America (San Paolo)

arn:aws:lambda:sa-east-1:933737806257:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:8