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à.
Usa AWS Secrets Manager i segreti nelle AWS Lambda funzioni
È possibile utilizzare l'estensione Lambda AWS Parameters and Secrets per recuperare e memorizzare AWS Secrets Manager nella cache i segreti nelle funzioni Lambda senza utilizzare un. SDK Il recupero di un segreto memorizzato nella cache è più veloce rispetto al recupero da Secrets Manager. Poiché la chiamata a Secrets Manager comporta un costoAPIs, l'utilizzo di una cache può ridurre i costi. L'estensione può recuperare sia i segreti di Gestione dei segreti che i parametri di Archivio dei parametri Per informazioni su Archivio parametri, consulta Integrazione di Parameter Store con le estensioni Lambda nella Guida per l'utente AWS Systems Manager .
Un'estensione Lambda è un processo complementare che si aggiunge alle funzionalità di una funzione Lambda. Per ulteriori informazioni, consulta Estensioni di Lambda nella Guida per gli sviluppatori di Lambda. Per informazioni sull'utilizzo dell'estensione in un'immagine di container, consulta Operazioni con i livelli e le estensioni Lambda nelle immagini di container PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL
su debug
.
Per fornire la cache in memoria per parametri e segreti, l'estensione espone un HTTP endpoint locale, la porta localhost 2773, all'ambiente Lambda. È possibile configurare la porta impostando la variabile di ambiente PARAMETERS_SECRETS_EXTENSION_HTTP_PORT
.
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 concorrenza, consulta Gestione della simultaneità per una funzione Lambda nella Guida per gli sviluppatori di Lambda.
Per aggiungere l'estensione perARM, devi usare l'arm64
architettura della tua funzione Lambda. er ulteriori informazioni, consulta Architetture del set di istruzioni Lambda nella Guida per gli sviluppatori di Lambda. L'estensione è ARM supportata nelle seguenti regioni: Asia Pacifico (Mumbai), Stati Uniti orientali (Ohio), Europa (Irlanda), Europa (Francoforte), Europa (Zurigo), Stati Uniti orientali (Virginia settentrionale), Europa (Londra), Europa (Spagna), Asia Pacifico (Tokyo), Stati Uniti occidentali (Oregon), Asia Pacifico (Singapore), Asia Pacifico (Hyderabad) e Asia Pacifico (Sydney).
L'estensione utilizza un AWS client. Per informazioni sulla configurazione del AWS client, consultate il riferimento alle impostazioni nella Guida di riferimento AWS SDK e agli strumenti. Se la tua funzione Lambda viene eseguita in aVPC, devi creare un VPC endpoint in modo che l'estensione possa effettuare chiamate a Secrets Manager. Per ulteriori informazioni, consulta Utilizzo di un AWS Secrets Manager VPC endpoint.
Autorizzazioni richieste:
Il ruolo di esecuzione Lambda deve disporre
secretsmanager:GetSecretValue
dell'autorizzazione al segreto.Se il segreto è crittografato con una chiave gestita dal cliente anziché con Chiave gestita da AWS
aws/secretsmanager
, anche il ruolo di esecuzione necessita dell'kms:Decrypt
autorizzazione per la KMS chiave.
Per utilizzare l'estensione Lambda AWS Parameters and Secrets
-
Aggiungi il AWS layer denominato AWS Parameters and Secrets Lambda Extension alla tua funzione. Per istruzioni, consulta Aggiungere livelli alle funzioni nella Lambda Developer Guide. Se usi il AWS CLI per aggiungere il layer, hai bisogno ARN dell'estensione. Per un elenco diARNs, consulta AWS Parameters and Secrets Lambda Extension ARNs nella Guida per l'AWS Systems Manager utente.
-
Concedi le autorizzazioni al ruolo di esecuzione di Lambda per poter accedere ai segreti:
-
Autorizzazione
secretsmanager:GetSecretValue
per il segreto. Per informazioni, consulta Esempio: Autorizzazione per recuperare valori segreti individuali. -
(Facoltativo) Se il segreto è crittografato con una chiave gestita dal cliente anziché con Chiave gestita da AWS
aws/secretsmanager
, anche il ruolo di esecuzione necessita dell'kms:Decrypt
autorizzazione per la KMS chiave. -
Puoi utilizzare Attribute Based Access Control (ABAC) con il ruolo Lambda per consentire un accesso più granulare ai segreti nell'account. Per ulteriori informazioni, consulta Controlla l'accesso ai segreti utilizzando il controllo degli accessi basato sugli attributi () ABAC .
-
-
Configura la cache con le variabili di ambiente di Lambda.
-
Per recuperare i segreti dalla cache delle estensioni, innanzitutto è necessario aggiungere il parametro
X-AWS-Parameters-Secrets-Token
all'intestazione della richiesta. Imposta il token suAWS_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.Il seguente esempio di Python mostra come aggiungere l'intestazione.
import os headers = {"X-Aws-Parameters-Secrets-Token": os.environ.get('AWS_SESSION_TOKEN')}
-
Per recuperare un segreto all'interno della funzione Lambda, usa una delle seguenti HTTP GET richieste:
-
Per recuperare un segreto, per
secretId
, usa il nome ARN o del segreto.GET: /secretsmanager/get?secretId=
secretId
-
Per recuperare il valore segreto precedente o una versione specifica tramite l'etichetta temporanea, for
secretId
, usa il nome ARN o del segreto e forversionStage
, usa l'etichetta temporanea.GET: /secretsmanager/get?secretId=
secretId
&versionStage=AWSPREVIOUS
Per recuperare una versione segreta specifica tramite ID
secretId
, usa il nome ARN o del segreto e forversionId
, usa l'ID della versione.GET: /secretsmanager/get?secretId=
secretId
&versionId=versionId
Esempio Recupero di un segreto (Python)
Il seguente esempio di Python mostra come recuperare un segreto e analizzare il risultato usando
json.loads
. secrets_extension_endpoint = "http://localhost:" + \ secrets_extension_http_port + \ "/secretsmanager/get?secretId=" + \
<secret_name>
r = requests.get(secrets_extension_endpoint, headers=headers) secret = json.loads(r.text)["SecretString"] # load the Secrets Manager response into a Python dictionary, access the secret -
AWS Parametri e segreti: variabili di ambiente Lambda Extension
Puoi configurare l'estensione con le seguenti variabili di ambiente.
Per ulteriori informazioni sull'utilizzo delle variabili di ambiente, consulta Utilizzo delle variabili di ambiente di Lambda nella Guida per gli sviluppatori di Lambda.
PARAMETERS_SECRETS_EXTENSION_CACHE_ENABLED
-
Imposta su "true" per memorizzare nella cache parametri e segreti. Imposta su "false" per non memorizzare nella cache questi elementi. Il valore predefinito è true.
PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE
Il numero massimo di segreti e parametri da memorizzare nella cache. Il valore deve essere compreso tra 0 e 1000. Il valore 0 indica l'assenza di caching. Questa variabile viene ignorata se sia
SSM_PARAMETER_STORE_TTL
siaSECRETS_MANAGER_TTL
sono impostati su 0. Il valore predefinito è 1000.PARAMETERS_SECRETS_EXTENSION_HTTP_PORT
La porta per il HTTP server locale. Il valore predefinito è 2773.
PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL
-
Il livello di registrazione fornito dall'estensione:
debug
,info
,warn
,error
onone
. Imposta sudebug
per visualizzare la configurazione della cache. Il valore predefinito èinfo
. PARAMETERS_SECRETS_EXTENSION_MAX_CONNECTIONS
-
Numero massimo di connessioni per HTTP i client che l'estensione utilizza per effettuare richieste a Parameter Store o Secrets Manager. Questa è una configurazione specifica per client. Il valore predefinito è 3.
SECRETS_MANAGER_TIMEOUT_MILLIS
-
Timeout per le richieste a Gestione dei segreti in millisecondi. Il valore 0 indica l'assenza di timeout. Il valore predefinito è 0.
SECRETS_MANAGER_TTL
-
TTLdi un segreto nella cache in secondi. Il valore 0 indica l'assenza di caching. Il massimo è 300 secondi. Questa variabile viene ignorata se
PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE
è 0. Il valore predefinito è 300 secondi. SSM_PARAMETER_STORE_TIMEOUT_MILLIS
Timeout per le richieste ad Archivio dei parametri in millisecondi. Il valore 0 indica l'assenza di timeout. Il valore predefinito è 0.
SSM_PARAMETER_STORE_TTL
TTLdi un parametro nella cache in secondi. Il valore 0 indica l'assenza di caching. Il massimo è 300 secondi. Questa variabile viene ignorata se
PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE
è 0. Il valore predefinito è 300 secondi.