Verwenden Sie AWS Secrets Manager Geheimnisse in AWS Lambda Funktionen - AWS Secrets Manager

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden Sie AWS Secrets Manager Geheimnisse in AWS Lambda Funktionen

Sie können die Lambda-Erweiterung AWS Parameters and Secrets verwenden, um AWS Secrets Manager Geheimnisse in Lambda-Funktionen abzurufen und zwischenzuspeichern, ohne eine zu verwenden. SDK Das Abrufen eines gecacheten Secrets ist schneller als das Abrufen aus Secrets Manager. Da der Aufruf von Secrets Manager mit Kosten verbunden istAPIs, kann die Verwendung eines Caches Ihre Kosten senken. Die Erweiterung kann sowohl Secrets-Manager-Secrets als auch Parameter-Store-Parameter abrufen. Weitere Informationen zum Parameterspeicher finden Sie unter Parameter Store integration with Lambda extensions (Integration des Parameterspeichers mit Lambda-Erweiterungen) im AWS Systems Manager -Benutzerhandbuch.

Eine Lambda-Erweiterung ist ein begleitender Prozess, der die Fähigkeiten einer Lambda-Funktion erweitert. Weitere Informationen finden Sie unter Lambda-Erweiterungen im Lambda-Entwicklerhandbuch. Informationen zur Verwendung der Erweiterung in einem Container-Image finden Sie unter Arbeiten mit Lambda-Ebenen und Erweiterungen in Container-Images. Lambda protokolliert Ausführungsinformationen über die Erweiterung zusammen mit der Funktion mithilfe von Amazon CloudWatch Logs. Standardmäßig protokolliert die Erweiterung eine minimale Menge an CloudWatch Informationen unter. Um weitere Details zu protokollieren, setzen Sie die Umgebungsvariable PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL auf debug.

Um den In-Memory-Cache für Parameter und Geheimnisse bereitzustellen, stellt die Erweiterung der Lambda-Umgebung einen lokalen HTTP Endpunkt, den Localhost-Port 2773, zur Verfügung. Sie können den Port konfigurieren, indem Sie die Umgebungsvariable auf PARAMETERS_SECRETS_EXTENSION_HTTP_PORT setzen.

Lambda instanziiert separate Instances, die der Gleichzeitigkeitsstufe entsprechen, die Ihre Funktion benötigt. Jede Instance ist isoliert und verwaltet ihren eigenen lokalen Cache Ihrer Konfigurationsdaten. Weitere Informationen zu Lambda-Instances und Gleichzeitigkeit finden Sie unter Verwalten der reservierten Lambda-Gleichzeitigkeit im Lambda-Entwicklerhandbuch.

Um die Erweiterung für hinzuzufügenARM, müssen Sie die arm64 Architektur für Ihre Lambda-Funktion verwenden. Weitere Informationen finden Sie unter Lambda-Befehlssatz-Architekturen im Lambda-Entwicklerhandbuch. Die Erweiterung unterstützt ARM die folgenden Regionen: Asien-Pazifik (Mumbai), USA Ost (Ohio), Europa (Irland), Europa (Frankfurt), Europa (Zürich), USA Ost (Nord-Virginia), Europa (London), Europa (Spanien), Asien-Pazifik (Tokio), USA West (Oregon), Asien-Pazifik (Singapur), Asien-Pazifik (Hyderabad) und Asien-Pazifik (Sydney).

Die Erweiterung verwendet einen AWS Client. Informationen zur Konfiguration des AWS Clients finden Sie in der Einstellungsreferenz im AWS SDKund im Tools-Referenzhandbuch. Wenn Ihre Lambda-Funktion in einem ausgeführt wirdVPC, müssen Sie einen VPC Endpunkt erstellen, damit die Erweiterung Secrets Manager aufrufen kann. Weitere Informationen finden Sie unter Einen AWS Secrets Manager VPC Endpunkt verwenden.

Erforderliche Berechtigungen:

  • Die Lambda-Ausführungsrolle muss über die secretsmanager:GetSecretValue Berechtigung für das Geheimnis verfügen.

  • Wenn das Geheimnis mit einem vom Kunden verwalteten Schlüssel anstelle von verschlüsselt wird Von AWS verwalteter Schlüssel aws/secretsmanager, benötigt die Ausführungsrolle auch eine kms:Decrypt Genehmigung für den KMS Schlüssel.

So verwenden Sie die Lambda-Erweiterung AWS Parameters and Secrets
  1. Fügen Sie Ihrer Funktion die AWS Ebene mit dem Namen AWS Parameters and Secrets Lambda Extension hinzu. Anweisungen finden Sie unter Hinzufügen von Ebenen zu Funktionen im Lambda Developer Guide. Wenn Sie den AWS CLI zum Hinzufügen der Ebene verwenden, benötigen Sie die ARN der Erweiterung. Eine Liste der ARNs Lambda Extension finden Sie unter AWS Parameters and Secrets Lambda Extension ARNs im AWS Systems Manager Benutzerhandbuch.

  2. Erteilen Sie der Lambda-Ausführungsrolle Berechtigungen, um auf Secrets zugreifen zu können:

  3. Konfigurieren Sie den Cache mit Lambda-Umgebungsvariablen.

  4. Um Secrets aus dem Erweiterungs-Cache abzurufen, müssen Sie zuerst das X-AWS-Parameters-Secrets-Token zum Anforderungs-Header hinzufügen. Setzen Sie das Token auf AWS_SESSION_TOKEN, das von Lambda für alle laufenden Funktionen bereitgestellt wird. Die Verwendung dieses Headers zeigt an, dass sich der Anrufer in der Lambda-Umgebung befindet.

    Das folgende Python-Beispiel zeigt, wie Sie den Header hinzufügen.

    import os headers = {"X-Aws-Parameters-Secrets-Token": os.environ.get('AWS_SESSION_TOKEN')}
  5. Verwenden Sie eine der folgenden HTTP GET Anfragen, um ein Geheimnis innerhalb der Lambda-Funktion abzurufen:

    • Um ein Geheimnis für abzurufensecretId, verwenden Sie den Namen ARN oder des Geheimnisses.

      GET: /secretsmanager/get?secretId=secretId
    • Um den vorherigen geheimen Wert oder eine bestimmte Version anhand des Staging-Labels abzurufensecretId, verwenden Sie für den ARN oder den Namen des Geheimnisses und für versionStage das Staging-Label.

      GET: /secretsmanager/get?secretId=secretId&versionStage=AWSPREVIOUS
    • Um eine bestimmte geheime Version anhand der ID abzurufensecretId, verwenden Sie für den ARN oder den Namen des Geheimnisses und für versionId die Version die Versions-ID.

      GET: /secretsmanager/get?secretId=secretId&versionId=versionId
    Beispiel Secret abrufen (Python)

    Das folgende Python-Beispiel zeigt, wie Sie ein Secret abrufen und das Ergebnis mit json.loads analysieren.

    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 Parameter und Geheimnisse Umgebungsvariablen der Lambda-Erweiterung

Sie können die Erweiterung mit den folgenden Umgebungsvariablen konfigurieren.

Weitere Informationen zur Verwendung von Umgebungsvariablen finden Sie unter Verwendung von Lambda-Umgebungsvariablen im Lambda-Entwicklerhandbuch.

PARAMETERS_SECRETS_EXTENSION_CACHE_ENABLED

Legen Sie den Wert auf „true“ (wahr) fest, um Parameter und Secrets zwischenzuspeichern. Legen Sie den Wert auf „false“ (falsch) fest, um kein Caching durchzuführen. Der Standardwert ist „true“.

PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE

Die maximale Anzahl von Secrets und Parametern, die zwischengespeichert werden sollen. Muss ein Wert zwischen 0 und 1 000 sein. Ein Wert von 0 bedeutet, dass keine Zwischenspeicherung stattfindet. Diese Variable wird ignoriert, wenn sowohl SSM_PARAMETER_STORE_TTL als auch SECRETS_MANAGER_TTL gleich 0 sind. Der Standardwert ist 1 000.

PARAMETERS_SECRETS_EXTENSION_HTTP_PORT

Der Port für den lokalen HTTP Server. Der Standardwert ist 2 773.

PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL

Die Protokollierungsstufe, die die Erweiterung bereitstellt: debug, info, warn, error, oder none. Setzen Sie dies auf debug, um die Cache-Konfiguration anzuzeigen. Der Standardwert ist info.

PARAMETERS_SECRETS_EXTENSION_MAX_CONNECTIONS

Maximale Anzahl von Verbindungen für HTTP Clients, die die Erweiterung verwendet, um Anfragen an Parameter Store oder Secrets Manager zu stellen. Dies ist eine Konfiguration pro Client. Der Standardwert ist 3.

SECRETS_MANAGER_TIMEOUT_MILLIS

Timeout für Anfragen an Secrets Manager in Millisekunden. Ein Wert von 0 bedeutet, dass es kein Timeout gegeben hat. Standard = 0.

SECRETS_MANAGER_TTL

TTLeines Geheimnisses im Cache in Sekunden. Ein Wert von 0 bedeutet, dass keine Zwischenspeicherung stattfindet. Das Maximum beträgt 300 Sekunden. Diese Variable wird ignoriert, wenn PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE 0 ist. Der Standardwert beträgt 300 Sekunden.

SSM_PARAMETER_STORE_TIMEOUT_MILLIS

Timeout für Anfragen an den Parameterspeicher in Millisekunden. Ein Wert von 0 bedeutet, dass es kein Timeout gegeben hat. Standard = 0.

SSM_PARAMETER_STORE_TTL

TTLeines Parameters im Cache in Sekunden. Ein Wert von 0 bedeutet, dass keine Zwischenspeicherung stattfindet. Das Maximum beträgt 300 Sekunden. Diese Variable wird ignoriert, wenn PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE 0 ist. Der Standardwert beträgt 300 Sekunden.