Usa AWS Secrets Manager i segreti nelle AWS Lambda funzioni - AWS Secrets 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à.

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

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'arm64architettura 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:Decryptautorizzazione per la KMS chiave.

Per utilizzare l'estensione Lambda AWS Parameters and Secrets
  1. 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.

  2. Concedi le autorizzazioni al ruolo di esecuzione di Lambda per poter accedere ai segreti:

  3. Configura la cache con le variabili di ambiente di Lambda.

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

    Il seguente esempio di Python mostra come aggiungere l'intestazione.

    import os headers = {"X-Aws-Parameters-Secrets-Token": os.environ.get('AWS_SESSION_TOKEN')}
  5. Per recuperare un segreto all'interno della funzione Lambda, usa una delle seguenti HTTP GET richieste:

    • Per recuperare un segreto, persecretId, 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, forsecretId, 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 IDsecretId, 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 sia SECRETS_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 o none. Imposta su debug 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.