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 ein SDK zu verwenden. Das Abrufen eines gecacheten Secrets ist schneller als das Abrufen aus Secrets Manager. Da für den Aufruf von Secrets-Manager-Manager-APIs Kosten anfallen, 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 Secrets 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 ARM hinzuzufügen, 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 in den 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 SDK- und Tools-Referenzhandbuch. Wenn Ihre Lambda-Funktion in einer VPC ausgeführt wird, müssen Sie einen VPC-Endpunkt erstellen, damit die Erweiterung Secrets Manager aufrufen kann. Weitere Informationen finden Sie unter Verwenden eines AWS Secrets Manager-VPC-Endpunkts.

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 die kms:Decrypt Erlaubnis 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 AWS Parameters and Secrets Lambda Extension hinzu. Anweisungen finden Sie unter Hinzufügen von Ebenen zu Funktionen im Lambda Developer Guide.

  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-Anforderungen wie folgt, um ein Secret innerhalb der Lambda-Funktion abzurufen:

    • Um ein Secret abzurufen, verwenden Sie für secretId den ARN oder den Namen des Secrets.

      GET: /secretsmanager/get?secretId=secretId
    • Um den vorherigen Secret-Wert oder eine bestimmte Version über die Staging-Bezeichnung, verwenden Sie für secretId den ARN oder den Namen des Secrets und für versionStage die Staging-Bezeichnung.

      GET: /secretsmanager/get?secretId=secretId&versionStage=AWSPREVIOUS
    • Um eine bestimmte Secret-Version anhand der ID abzurufen, verwenden Sie für secretId den ARN oder den Namen des Secrets und für versionId 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 Anforderungen 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

TTL eines Secrets 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_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

TTL eines 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_CACHE_SIZE 0 ist. Der Standardwert beträgt 300 Sekunden.