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

Puoi 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é è previsto un costo per chiamare le API di Secrets Manager, 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 endpoint HTTP 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 per ARM, devi usare l'architettura arm64 per la funzione Lambda. er ulteriori informazioni, consulta Architetture del set di istruzioni Lambda nella Guida per gli sviluppatori di Lambda. L'estensione supporta ARM 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) e Asia Pacifico (Sydney).

L'estensione utilizza un AWS client. Per informazioni sulla configurazione del AWS client, consulta il riferimento alle impostazioni nella Guida di riferimento dell'AWS SDK e degli strumenti. Se la tua funzione Lambda viene eseguita in un VPC, devi creare un endpoint VPC in modo che l'estensione possa effettuare chiamate a Secrets Manager. Per ulteriori informazioni, consulta Utilizzo di un endpoint VPC AWS Secrets Manager.

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

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 si utilizza il AWS CLI per aggiungere il layer, è necessario l'ARN dell'estensione. Per un elenco di tutti gli ARN, consulta AWS Parameters and Secrets Lambda Extension ARNs (ARN estensione Parameters and Secrets di Lambda) nella Guida per l'utente di AWS Systems Manager .

  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, utilizza una delle seguenti richieste HTTP GET:

    • Per recuperare un segreto, per secretId utilizza l'ARN o il nome del segreto.

      GET: /secretsmanager/get?secretId=secretId
    • Per recuperare il valore del segreto precedente o una versione specifica tramite etichetta temporanea, per secretId usa l'ARN o il nome del segreto, mentre per versionStage usa l'etichetta temporanea.

      GET: /secretsmanager/get?secretId=secretId&versionStage=AWSPREVIOUS
    • Per recuperare una versione segreta specifica in base all'ID, per secretId usa l'ARN o il nome del segreto, mentre per versionId 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 server HTTP 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 i client HTTP utilizzati dall'estensione per effettuare richieste ad Archivio dei parametri o Gestione dei segreti. 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

TTL di 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_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

TTL di 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_CACHE_SIZE è 0. Il valore predefinito è 300 secondi.