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 memorizzare dati come password, stringhe di database, Amazon Machine Image (AMI) IDs e codici di licenza come valori dei parametri.

Per utilizzare i parametri AWS Lambda delle funzioni senza utilizzare unSDK, 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 API chiamate 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 Lambda Extensions API nella Developer Guide.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, è necessario configurare la funzione Lambda per ricevere aggiornamenti di configurazione mediante l'integrazione con l'azione per. GetParameter API 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 aver passato il valore (). time-to-live TTL È possibile configurare il TTL valore utilizzando la variabile di SSM_PARAMETER_STORE_TTL ambiente, come spiegato più avanti in questo argomento.

Se la cache configurata non TTL è scaduta, viene 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 SDK

L'estensione Lambda AWS Parameters and Secrets funziona indipendentemente da qualsiasi libreria AWS SDK linguistica. An non AWS SDK è necessario per effettuare GET richieste aParameter Store.

Porta Localhost

localhostUtilizzalo nelle tue GET richieste. 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, GET URL potresti 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 TTL

L'estensione non rileva le modifiche al valore del parametro e non esegue un aggiornamento automatico prima della TTL scadenza. 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 più breve. TTL

Richiesta dell'intestazione

Per recuperare i parametri dalla cache delle estensioni, l'intestazione della GET richiesta deve includere un X-Aws-Parameters-Secrets-Token riferimento. 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)
ARMsupporto

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

Per gli elenchi completi delle estensioniARNs, consulta. AWS Parametri e segreti: estensione Lambda ARNs

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 ARN l'opzione)
  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 Scegli un livello, scegli l'ARNopzione Specificare un livello.

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

AWS Command Line Interface

Esegui il comando seguente nell' AWS CLI. Sostituisci ciascuno example resource placeholder 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 TTL valori della cache sono 0 (zero).

No Da 0 (zero) a 1000

1000

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

2773

PARAMETERS_SECRETS_EXTENSION_MAX_CONNECTIONS

Numero massimo di connessioni per i HTTP client utilizzati dall'estensione per effettuare richieste a Parameter Store o Secrets Manager. 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 API le azioni 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. GetParameterAPI

Per richiamare questa azione, effettua una HTTP GET chiamata simile alla seguente. Questo formato di comando consente l'accesso ai parametri del livello di parametri standard.

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

In questo esempio: parameter-name rappresenta il nome completo del parametroMyParameter, ad esempio per un parametro che non si trova in una gerarchia o %2FDev%2FProduction%2FEast%2FProject-ABC%2FMyParameter per un parametro denominato /Dev/Production/East/Project-ABC/MyParameter che fa parte di una gerarchia.

Nota

Quando si utilizzano GET le chiamate, i valori dei parametri devono essere codificati per HTTP preservare i caratteri speciali. Ad esempio, invece di formattare un percorso gerarchico come/a/b/c, codifica caratteri che potrebbero essere interpretati come parte di, ad esempio. URL %2Fa%2Fb%2Fc

version e label sono i selettori disponibili per l'uso con l'azione. GetParameter

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

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

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

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

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

Per effettuare una HTTP GET chiamata a un Secrets Manager segreta utilizzando Parameter Store riferimenti, effettuate una HTTP GET chiamata simile alla seguente.

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

Per effettuare una chiamata utilizzando Amazon Resource Name (ARN) per un parametro, effettua una HTTP GET chiamata 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 SecureString parametro con decrittografia, effettua una HTTP GET chiamata 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 tal caso, viene utilizzata solo la prima di esse inserita dopo il punto interrogativo (?) in. URL

AWS Parametri e segreti: estensione Lambda ARNs

Le tabelle seguenti forniscono l'estensione ARNs per le architetture e le regioni supportate.

Estensione ARNs per le architetture e x86_64x86

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 () UAE 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

Estensione ARNs per ARM64 e architetture Mac 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