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 Secrets Manager Manager-Geheimnisse in Lambda-Funktionen
AWS Secrets Manager hilft Ihnen bei der Verwaltung von Anmeldeinformationen, API-Schlüsseln und anderen Geheimnissen, die Ihre Lambda-Funktionen benötigen. Sie haben zwei Hauptansätze für das Abrufen von Geheimnissen in Ihren Lambda-Funktionen, die beide eine bessere Leistung und geringere Kosten bieten als das direkte Abrufen von Geheimnissen mithilfe des SDK: AWS
-
AWS Lambda-Erweiterung für Parameter und Geheimnisse — Eine laufzeitunabhängige Lösung, die eine einfache HTTP-Schnittstelle zum Abrufen von Geheimnissen bietet
-
Powertools for AWS Lambda Parameters Utility — Eine codeintegrierte Lösung, die mehrere Anbieter (Secrets Manager, Parameter Store AppConfig) mit integrierten Transformationen unterstützt
Bei beiden Ansätzen werden lokale Caches mit Geheimnissen verwaltet, sodass Ihre Funktion nicht bei jedem Aufruf den Secrets Manager aufrufen muss. Wenn Ihre Funktion ein Geheimnis anfordert, wird zuerst der Cache überprüft. Wenn das Geheimnis verfügbar und nicht abgelaufen ist, wird es sofort zurückgegeben. Andernfalls wird es aus Secrets Manager abgerufen, zwischengespeichert und zurückgegeben. Dieser Caching-Mechanismus führt zu schnelleren Reaktionszeiten und geringeren Kosten, da API-Aufrufe minimiert werden.
Einen Ansatz wählen
Berücksichtigen Sie diese Faktoren bei der Wahl zwischen der Erweiterung und PowerTools:
- Verwenden Sie die Lambda-Erweiterung AWS parameters and secrets, wenn:
-
Sie möchten eine laufzeitunabhängige Lösung, die mit jeder Lambda-Laufzeit funktioniert
Sie ziehen es vor, Ihrer Funktion keine Codeabhängigkeiten hinzuzufügen
Sie müssen nur Secrets aus Secrets Manager oder Parameter Store abrufen.
- Verwenden Sie Powertools for AWS Lambda Parameters Utility, wenn:
-
Sie möchten ein integriertes Entwicklungserlebnis mit Ihrem Anwendungscode
Sie benötigen Unterstützung für mehrere Anbieter (Secrets Manager, Parameter Store, AppConfig)
Sie möchten integrierte Datentransformationen (JSON-Parsing, Base64-Decodierung)
Sie verwenden Python- TypeScript, Java- oder .NET-Laufzeiten
Wann sollte Secrets Manager mit Lambda verwendet werden
Zu den häufigsten Szenarien für die Verwendung von Secrets Manager mit Lambda gehören:
-
Speichern von Datenbankanmeldedaten, die Ihre Funktion verwendet, um eine Verbindung zu Amazon RDS oder anderen Datenbanken herzustellen
-
Verwaltung von API-Schlüsseln für externe Dienste, die Ihre Funktion aufruft
-
Speichern von Verschlüsselungsschlüsseln oder anderen sensiblen Konfigurationsdaten
-
Automatisches Rotieren der Anmeldeinformationen, ohne dass Sie Ihren Funktionscode aktualisieren müssen
Verwenden der Lambda-Erweiterung AWS Parameter und Geheimnisse
Die Lambda-Erweiterung AWS Parameters and Secrets verwendet eine einfache HTTP-Schnittstelle, die mit jeder Lambda-Laufzeit kompatibel ist. Standardmäßig speichert sie Geheimnisse für 300 Sekunden (5 Minuten) im Cache und kann bis zu 1.000 Geheimnisse speichern. Sie können diese Einstellungen mit Umgebungsvariablen anpassen.
Verwenden Sie Secrets Manager in einer Lambda-Funktion
In diesem Abschnitt wird davon ausgegangen, dass Sie bereits über ein Secrets Manager Manager-Geheimnis verfügen. Informationen zum Erstellen eines Secrets finden Sie unter Create an AWS Secrets Manager Secret.
Wählen Sie Ihre bevorzugte Laufzeit und folgen Sie den Schritten, um eine Funktion zu erstellen, die Geheimnisse aus Secrets Manager abruft. Die Beispielfunktion ruft ein Geheimnis aus Secrets Manager ab und kann für den Zugriff auf Datenbankanmeldedaten, API-Schlüssel oder andere sensible Konfigurationsdaten in Ihren Anwendungen verwendet werden.
Öffnen Sie die Seite Funktionen
der Lambda-Konsole. -
Wählen Sie Funktion erstellen.
-
Wählen Sie Verfassen von Grund auf aus.
-
Geben Sie für Function name (Funktionsname)
secret-retrieval-demoein. -
Wählen Sie Ihre bevorzugte Runtime.
-
Wählen Sie Funktion erstellen.
Um das Bereitstellungspaket hochzuladen
-
Wählen Sie auf der Registerkarte Code der Funktion Upload von und wählen Sie .zip-Datei (für Python und Node.js) oder .jar-Datei (für Java) aus.
-
Laden Sie das zuvor erstellte Bereitstellungspaket hoch.
-
Wählen Sie Speichern.
Um die Lambda-Erweiterung AWS Parameters and Secrets als Ebene hinzuzufügen
-
Scrollen Sie auf der Registerkarte Code der Funktion nach unten zu Ebenen.
-
Wählen Sie Add a layer (Layer hinzufügen) aus.
-
Wählen Sie AWS Ebenen aus.
-
Wählen Sie AWS-Parameters-and-Secrets-Lambda-Extension.
-
Wählen Sie die neueste Version aus.
-
Wählen Sie Hinzufügen aus.
So fügen Sie Ihrer Ausführungsrolle Secrets Manager Manager-Berechtigungen hinzu
-
Wählen Sie die Registerkarte Konfiguration und dann Berechtigungen aus.
-
Wählen Sie unter Rollenname den Link zu Ihrer Ausführungsrolle. Dieser Link öffnet die Rolle in der IAM-Konsole.
-
Wählen Sie Add permissions (Berechtigungen hinzufügen) und dann Create inline policy (Inline-Richtlinie erstellen) aus.
-
Wählen Sie die Registerkarte JSON und fügen Sie die folgende Richtlinie hinzu. Geben Sie zum
ResourceBeispiel den ARN Ihres Geheimnisses ein. -
Wählen Sie Weiter aus.
-
Geben Sie einen Namen für die Richtlinie ein.
-
Wählen Sie Richtlinie erstellen aus.
So testen Sie die -Funktion
-
Kehren Sie zur Lambda-Konsole zurück.
-
Wählen Sie die Registerkarte Test.
-
Wählen Sie Test aus. Sie sollten die folgende Antwort sehen:
Umgebungsvariablen
Die Lambda-Erweiterung AWS Parameters and Secrets verwendet die folgenden Standardeinstellungen. Sie können diese Einstellungen überschreiben, indem Sie die entsprechenden Umgebungsvariablen erstellen. Um die aktuellen Einstellungen für eine Funktion anzuzeigen, setzen Sie PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL aufDEBUG. Die Erweiterung CloudWatch protokolliert ihre Konfigurationsinformationen zu Beginn jedes Funktionsaufrufs in Logs.
| Einstellung | Standardwert | Zulässige Werte | Umgebungsvariable | Details |
|---|---|---|---|---|
| HTTP-Port | 2773 | 1–65 535 | PARAMETERS_SECRETS_EXTENSION_HTTP_PORT | Port für den lokalen HTTP-Server |
| Cache aktiviert | TRUE | TRUE | FALSE | PARAMETERS_SECRETS_EXTENSION_CACHE_ENABLED | Aktiviert oder deaktiviert den Cache |
| Cache-Größe | 1000 | 0 - 1000 | PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE | Auf 0 setzen, um das Caching zu deaktivieren |
| Secrets Manager TTL | 300 Sekunden | 0 - 300 Sekunden | SECRETS_MANAGER_TTL | Time-to-live für zwischengespeicherte Geheimnisse. Auf 0 setzen, um das Caching zu deaktivieren. Diese Variable wird ignoriert, wenn der Wert für PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE 0 ist. |
| Parameter speichern TTL | 300 Sekunden | 0 - 300 Sekunden | SSM_PARAMETER_STORE_TTL | Time-to-live für zwischengespeicherte Parameter. Auf 0 setzen, um das Caching zu deaktivieren. Diese Variable wird ignoriert, wenn der Wert für PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE 0 ist. |
| Protokollebene | INFO | DEBUGGEN | INFO | WARN | ERROR | NONE | PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL | Der Detaillierungsgrad, der in den Protokollen für die Erweiterung angegeben wird |
| Max. Anzahl Verbindungen | 3 | 1 oder höher | PARAMETERS_SECRETS_EXTENSION_MAX_CONNECTIONS | Maximale Anzahl von HTTP-Verbindungen für Anfragen an Parameter Store oder Secrets Manager |
| Secrets Manager Manager-Timeout | 0 (kein Timeout) | Alle ganzen Zahlen | SECRETS_MANAGER_TIMEOUT_MILLIS | Timeout für Anfragen an Secrets Manager (in Millisekunden) |
| Timeout beim Speichern des Parameters | 0 (kein Timeout) | Alle ganzen Zahlen | SSM_PARAMETER_STORE_TIMEOUT_MILLIS | Timeout für Anfragen an den Parameter Store (in Millisekunden) |
Arbeitet mit geheimer Rotation
Wenn Sie Geheimnisse häufig rotieren, kann die standardmäßige Cachedauer von 300 Sekunden dazu führen, dass Ihre Funktion veraltete Geheimnisse verwendet. Sie haben zwei Möglichkeiten, um sicherzustellen, dass Ihre Funktion den neuesten geheimen Wert verwendet:
-
Reduzieren Sie die Cache-TTL, indem Sie die
SECRETS_MANAGER_TTLUmgebungsvariable auf einen niedrigeren Wert (in Sekunden) setzen. Wenn Sie sie beispielsweise auf einstellen, wird60sichergestellt, dass Ihre Funktion niemals ein Geheimnis verwendet, das älter als eine Minute ist. -
Verwenden Sie die Labels
AWSCURRENToderAWSPREVIOUSStaging in Ihrer geheimen Anfrage, um sicherzustellen, dass Sie die gewünschte Version erhalten:secretsmanager/get?secretId=YOUR_SECRET_NAME&versionStage=AWSCURRENT
Wählen Sie den Ansatz, der Ihren Anforderungen an Leistung und Frische am besten gerecht wird. Eine niedrigere TTL bedeutet häufigere Aufrufe von Secrets Manager, stellt jedoch sicher, dass Sie mit den neuesten geheimen Werten arbeiten.
Verwenden Sie das Parameter-Hilfsprogramm von Powertools für AWS Lambda
Das Parameter-Hilfsprogramm von Powertools for AWS Lambda bietet eine einheitliche Oberfläche zum Abrufen von Geheimnissen von mehreren Anbietern, darunter Secrets Manager, Parameterspeicher und. AppConfig Es kümmert sich um Caching und Transformationen und bietet im Vergleich zum Erweiterungsansatz eine stärker integrierte Entwicklungserfahrung.
Vorteile des Parameter-Dienstprogramms
Mehrere Anbieter — Rufen Sie Parameter aus Secrets Manager und Parameter Store ab und AppConfig verwenden Sie dieselbe Schnittstelle
Integrierte Transformationen — Automatisches JSON-Parsing, Base64-Decodierung und andere Datentransformationen
Integriertes Caching — Konfigurierbares Caching mit TTL-Unterstützung zur Reduzierung von API-Aufrufen
Typsicherheit — Starke Tippunterstützung in TypeScript und anderen unterstützten Laufzeiten
Fehlerbehandlung — Integrierte Wiederholungslogik und Fehlerbehandlung
Codebeispiele
Die folgenden Beispiele zeigen, wie Secrets mithilfe des Parameter-Dienstprogramms in verschiedenen Laufzeiten abgerufen werden können:
- Python
-
Anmerkung
Vollständige Beispiele und Anweisungen zur Einrichtung finden Sie in der Dokumentation zum Parameter-Hilfsprogramm
. Abrufen von Geheimnissen aus Secrets Manager mit dem Hilfsprogramm Powertools for AWS Lambda Parameters.
from aws_lambda_powertools import Logger from aws_lambda_powertools.utilities import parameters logger = Logger() def lambda_handler(event, context): try: # Get secret with caching (default TTL: 5 seconds) secret_value = parameters.get_secret("my-secret-name") # Get secret with custom TTL secret_with_ttl = parameters.get_secret("my-secret-name", max_age=300) # Get secret and transform JSON secret_json = parameters.get_secret("my-json-secret", transform="json") logger.info("Successfully retrieved secrets") return { 'statusCode': 200, 'body': 'Successfully retrieved secrets' } except Exception as e: logger.error(f"Error retrieving secret: {str(e)}") return { 'statusCode': 500, 'body': f'Error: {str(e)}' } - TypeScript
-
Anmerkung
Vollständige Beispiele und Anweisungen zur Einrichtung finden Sie in der Dokumentation zum Parameter-Hilfsprogramm.
Abrufen von Geheimnissen aus Secrets Manager mit dem Hilfsprogramm Powertools for AWS Lambda Parameters.
import { Logger } from '@aws-lambda-powertools/logger'; import { getSecret } from '@aws-lambda-powertools/parameters/secrets'; import type { Context } from 'aws-lambda'; const logger = new Logger(); export const handler = async (event: any, context: Context) => { try { // Get secret with caching (default TTL: 5 seconds) const secretValue = await getSecret('my-secret-name'); // Get secret with custom TTL const secretWithTtl = await getSecret('my-secret-name', { maxAge: 300 }); // Get secret and transform JSON const secretJson = await getSecret('my-json-secret', { transform: 'json' }); logger.info('Successfully retrieved secrets'); return { statusCode: 200, body: 'Successfully retrieved secrets' }; } catch (error) { logger.error('Error retrieving secret', { error }); return { statusCode: 500, body: `Error: ${error}` }; } }; - Java
-
Anmerkung
Vollständige Beispiele und Anweisungen zur Einrichtung finden Sie in der Dokumentation zum Parameter-Hilfsprogramm
. Abrufen von Geheimnissen aus Secrets Manager mit dem Hilfsprogramm Powertools for AWS Lambda Parameters.
import software.amazon.lambda.powertools.logging.Logging; import software.amazon.lambda.powertools.parameters.SecretsProvider; import software.amazon.lambda.powertools.parameters.ParamManager; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; public class SecretHandler implements RequestHandler<Object, String> { private final SecretsProvider secretsProvider = ParamManager.getSecretsProvider(); @Logging @Override public String handleRequest(Object input, Context context) { try { // Get secret with caching (default TTL: 5 seconds) String secretValue = secretsProvider.get("my-secret-name"); // Get secret with custom TTL (300 seconds) String secretWithTtl = secretsProvider.withMaxAge(300).get("my-secret-name"); // Get secret and transform JSON MySecret secretJson = secretsProvider.get("my-json-secret", MySecret.class); return "Successfully retrieved secrets"; } catch (Exception e) { return "Error retrieving secret: " + e.getMessage(); } } public static class MySecret { // Define your secret structure here } } - .NET
-
Anmerkung
Vollständige Beispiele und Anweisungen zur Einrichtung finden Sie in der Dokumentation zum Parameter-Hilfsprogramm.
Abrufen von Geheimnissen aus Secrets Manager mit dem Hilfsprogramm Powertools for AWS Lambda Parameters.
using AWS.Lambda.Powertools.Logging; using AWS.Lambda.Powertools.Parameters; using Amazon.Lambda.Core; [assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))] public class Function { private readonly ISecretsProvider _secretsProvider; public Function() { _secretsProvider = ParametersManager.SecretsProvider; } [Logging] public async Task<string> FunctionHandler(object input, ILambdaContext context) { try { // Get secret with caching (default TTL: 5 seconds) var secretValue = await _secretsProvider.GetAsync("my-secret-name"); // Get secret with custom TTL var secretWithTtl = await _secretsProvider.WithMaxAge(TimeSpan.FromMinutes(5)) .GetAsync("my-secret-name"); // Get secret and transform JSON var secretJson = await _secretsProvider.GetAsync<MySecret>("my-json-secret"); return "Successfully retrieved secrets"; } catch (Exception e) { return $"Error retrieving secret: {e.Message}"; } } public class MySecret { // Define your secret structure here } }
Einrichtung und Berechtigungen
Um das Parameter-Hilfsprogramm zu verwenden, müssen Sie:
Installieren Sie Powertools AWS Lambda für Ihre Runtime. Details hierzu finden Sie unter Elektrowerkzeuge für Lambda AWS.
Fügen Sie der Ausführungsrolle Ihrer Funktion die erforderlichen IAM-Berechtigungen hinzu. Weitere Einzelheiten finden Sie unter Verwaltung von Berechtigungen in AWS Lambda.
Konfigurieren Sie alle optionalen Einstellungen über Umgebungsvariablen.
Die erforderlichen IAM-Berechtigungen sind dieselben wie für den Erweiterungsansatz. Das Hilfsprogramm verarbeitet automatisch Caching und API-Aufrufe an Secrets Manager basierend auf Ihrer Konfiguration.