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-ImagesPARAMETERS_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 einekms:Decrypt
Genehmigung für den KMS Schlüssel.
So verwenden Sie die Lambda-Erweiterung AWS Parameters and Secrets
-
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.
-
Erteilen Sie der Lambda-Ausführungsrolle Berechtigungen, um auf Secrets zugreifen zu können:
-
secretsmanager:GetSecretValue
-Berechtigung für das Secret. Siehe Beispiel: Berechtigung zum Abrufen von einzelnen Secret-Werten. -
(Optional) Wenn das Geheimnis mit einem vom Kunden verwalteten Schlüssel statt mit dem verschlüsselt wird Von AWS verwalteter Schlüssel
aws/secretsmanager
, benötigt die Ausführungsrolle auch diekms:Decrypt
Erlaubnis für den KMS Schlüssel. -
Sie können die attributebasierte Zugriffskontrolle (ABAC) mit der Lambda-Rolle verwenden, um einen detaillierteren Zugriff auf Geheimnisse im Konto zu ermöglichen. Weitere Informationen finden Sie unter Steuern Sie den Zugriff auf Geheimnisse mithilfe der attributbasierten Zugriffskontrolle () ABAC .
-
-
Konfigurieren Sie den Cache mit Lambda-Umgebungsvariablen.
-
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 aufAWS_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')}
-
Verwenden Sie eine der folgenden HTTP GET Anfragen, um ein Geheimnis innerhalb der Lambda-Funktion abzurufen:
-
Um ein Geheimnis für abzurufen
secretId
, 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 abzurufen
secretId
, verwenden Sie für den ARN oder den Namen des Geheimnisses und fürversionStage
das Staging-Label.GET: /secretsmanager/get?secretId=
secretId
&versionStage=AWSPREVIOUS
Um eine bestimmte geheime Version anhand der ID abzurufen
secretId
, verwenden Sie für den ARN oder den Namen des Geheimnisses und fürversionId
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 auchSECRETS_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
, odernone
. Setzen Sie dies aufdebug
, um die Cache-Konfiguration anzuzeigen. Der Standardwert istinfo
. 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.