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.
Die Verwendung von Parameter Store Parameter in AWS Lambda Funktionen
Parameter Store, eine Funktion von AWS Systems Manager, bietet sicheren, hierarchischen Speicher für die Verwaltung von Konfigurationsdaten und Geheimnissen. Sie können Daten wie Passwörter, Datenbankzeichenfolgen speichern, Amazon Machine Image (AMI) IDs und Lizenzcodes als Parameterwerte.
Um Parameter von zu verwenden Parameter Store In AWS Lambda Funktionen ohne Verwendung von können Sie die Lambda-Erweiterung AWS Parameters and Secrets verwenden. SDK Diese Erweiterung ruft Parameterwerte ab und speichert sie zur späteren Verwendung. Durch die Verwendung der Lambda-Erweiterung können Sie Ihre Kosten senken, indem Sie die Anzahl der API Anrufe bei reduzieren Parameter Store. Die Verwendung der Erweiterung kann auch die Latenz verbessern, da das Abrufen eines zwischengespeicherten Parameters schneller ist als das Abrufen von Parameter Store.
Eine Lambda-Erweiterung ist ein begleitender Prozess, der die Fähigkeiten einer Lambda-Funktion erweitert. Eine Erweiterung ist wie ein Client, der parallel zu einem Lambda-Aufruf ausgeführt wird. Dieser parallele Client kann jederzeit während seines Lebenszyklus mit Ihrer Funktion verbunden werden. Weitere Informationen zu Lambda-Erweiterungen finden Sie unter Lambda-Erweiterungen API im AWS Lambda Entwicklerhandbuch.
Die Lambda-Erweiterung AWS Parameters and Secrets funktioniert für beide Parameter Store und. AWS Secrets Manager Informationen zur Verwendung der Lambda-Erweiterung mit Geheimnissen aus Secrets Manager finden Sie unter Verwenden von AWS Secrets Manager Geheimnissen in AWS Lambda Funktionen im AWS Secrets Manager Benutzerhandbuch.
Verwandte Informationen
Verwenden der Lambda-Erweiterung AWS Parameter and Secrets zum Zwischenspeichern von Parametern und Geheimnissen
So funktioniert die Erweiterung
Um Parameter in einer Lambda-Funktion ohne die Lambda-Erweiterung zu verwenden, müssen Sie Ihre Lambda-Funktion so konfigurieren, dass sie Konfigurationsupdates erhält, indem Sie sie in die Aktion für integrieren GetParameter
API Parameter Store.
Wenn Sie die Lambda-Erweiterung AWS Parameters and Secrets verwenden, ruft die Erweiterung den Parameterwert von Parameter Store und speichert ihn im lokalen Cache. Dann wird der zwischengespeicherte Wert für weitere Aufrufe verwendet, bis er abläuft. Zwischengespeicherte Werte laufen ab, nachdem sie ihren Wert time-to-live (TTL) überschritten haben. Sie können den TTL Wert mithilfe der SSM_PARAMETER_STORE_TTL
Umgebungsvariablen konfigurieren, wie später in diesem Thema erklärt wird.
Wenn der konfigurierte Cache nicht TTL abgelaufen ist, wird der zwischengespeicherte Parameterwert verwendet. Wenn die Zeit abgelaufen ist, wird der zwischengespeicherte Wert ungültig gemacht und der Parameterwert wird von abgerufen Parameter Store.
Außerdem erkennt das System Parameterwerte, die häufig verwendet werden, und behält sie im Cache bei, während abgelaufene oder nicht verwendete Werte gelöscht werden.
Implementierungsinformationen
Verwenden Sie die folgenden Details, um Ihnen bei der Konfiguration der Lambda-Erweiterung AWS Parameters and Secrets zu helfen.
- Authentifizierung
-
Um zu autorisieren und zu authentifizieren Parameter Store Bei Anfragen verwendet die Erweiterung dieselben Anmeldeinformationen wie die, die für die Ausführung der Lambda-Funktion selbst verwendet wurden. Daher muss die Rolle AWS Identity and Access Management (IAM), mit der die Funktion ausgeführt wird, über die folgenden Berechtigungen verfügen, um mit ihnen interagieren zu können Parameter Store:
-
ssm:GetParameter
— Erforderlich, um Parameter abzurufen von Parameter Store -
kms:Decrypt
— Erforderlich, wenn SieSecureString
Parameter abrufen von Parameter Store
Weitere Informationen finden Sie unter AWS Lambda -Ausführungsrolle im AWS Lambda -Entwicklerhandbuch.
-
- Instanziierung
-
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 über Lambda-Instances und Gleichzeitigkeit finden Sie unter Konfigurieren der reservierten Währung im AWS Lambda -Entwicklerhandbuch.
- Keine Abhängigkeit SDK
-
Die Lambda-Erweiterung AWS Parameters and Secrets funktioniert unabhängig von jeder AWS SDK Sprachbibliothek. An AWS SDK ist nicht erforderlich, um GET Anfragen zu stellen Parameter Store.
- Localhost port
-
Verwenden Sie es
localhost
in Ihren GET Anfragen. Die Erweiterung stellt Anfragen an localhost Port 2773. Sie müssen keinen externen oder internen Endpunkt angeben, um die Erweiterung zu verwenden. Sie können den Port konfigurieren, indem Sie die Umgebungsvariable aufPARAMETERS_SECRETS_EXTENSION_HTTP_PORT
setzen.In Python GET URL könnten Sie beispielsweise in etwa wie das folgende Beispiel aussehen.
parameter_url = ('http://localhost:' + port + '/systemsmanager/parameters/get/?name=' + ssm_parameter_path)
- Änderungen an einem Parameterwert vor TTL Ablauf
-
Die Erweiterung erkennt keine Änderungen am Parameterwert und führt keine automatische Aktualisierung durch, bevor der Wert TTL abläuft. Wenn Sie einen Parameterwert ändern, schlagen Vorgänge, die den zwischengespeicherten Parameterwert verwenden, möglicherweise fehl, bis der Cache das nächste Mal aktualisiert wird. Wenn Sie mit häufigen Änderungen an einem Parameterwert rechnen, empfehlen wir, einen kürzeren TTL Wert festzulegen.
- Anfordern eines Headers
-
Um Parameter aus dem Erweiterungs-Cache abzurufen, muss der Header Ihrer GET Anfrage eine
X-Aws-Parameters-Secrets-Token
Referenz enthalten. 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. - Beispiel
-
Das folgende Beispiel in Python demonstriert eine einfache Anfrage zum Abrufen des Wertes eines zwischengespeicherten Parameters.
import urllib.request import os import json aws_session_token = os.environ.get('AWS_SESSION_TOKEN') def lambda_handler(event, context): # Retrieve /my/parameter from Parameter Store using extension cache req = urllib.request.Request('http://localhost:2773/systemsmanager/parameters/get?name=%2Fmy%2Fparameter') req.add_header('X-Aws-Parameters-Secrets-Token', aws_session_token) config = urllib.request.urlopen(req).read() return json.loads(config)
- ARMUnterstützung
-
Die Erweiterung unterstützt die ARM Architektur trotzdem nicht AWS-Regionen , wo x86_64 and x86 Architekturen werden unterstützt.
Vollständige Listen der Erweiterungen finden Sie ARNs unterAWS Lambda-Erweiterung für Parameter und Geheimnisse ARNs.
- Protokollierung
-
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
aufDEBUG
.
Hinzufügen der Erweiterung zu einer Lambda-Funktion
Um die Lambda-Erweiterung AWS Parameters and Secrets zu verwenden, fügen Sie die Erweiterung Ihrer Lambda-Funktion als Ebene hinzu.
Verwenden Sie eine der folgenden Methoden, um die Erweiterung zu Ihrer Funktion hinzuzufügen.
- AWS Management Console (Option „Ebene hinzufügen“)
-
Öffnen Sie die AWS Lambda Konsole unter https://console.aws.amazon.com/lambda/
. -
Wählen Sie Ihre Funktion. Wählen Sie im Bereich Layers (Ebenen) die Option Add a layer (Ebene hinzufügen) aus.
-
Wählen Sie im Bereich Eine Ebene auswählen die Option AWS -Ebenen aus.
-
Wählen Sie für AWS -Ebenen AWS-Parameter und Secrets-Lambda-Erweiterung aus, wählen Sie eine Version und wählen Sie anschließend Hinzufügen aus.
- AWS Management Console (ARNOption angeben)
-
Öffnen Sie die AWS Lambda Konsole unter https://console.aws.amazon.com/lambda/
. -
Wählen Sie Ihre Funktion. Wählen Sie im Bereich Layers (Ebenen) die Option Add a layer (Ebene hinzufügen) aus.
-
Wählen Sie im Bereich Ebene auswählen die ARNOption Spezifizieren aus.
-
Geben Sie unter Spezifizieren Sie die Erweiterung ARN für Ihre AWS-Region und Architektur ein, und wählen Sie dann Hinzufügen aus. ARN
- AWS Command Line Interface
-
Führen Sie in der AWS CLI den folgenden aus. Ersetzen Sie jede
example resource placeholder
mit Ihren eigenen Informationen.aws lambda update-function-configuration \ --function-name
function-name
\ --layerslayer-ARN
Ähnliche Informationen
Verwenden von Ebenen mit Ihrer Lambda-Funktion
Konfigurieren von Erweiterungen (ZIP-Dateiarchiv)
AWS Parameter und Geheimnisse Umgebungsvariablen der Lambda-Erweiterung
Sie können die Erweiterung konfigurieren, indem Sie die folgenden Umgebungsvariablen ändern. Um die aktuellen Einstellungen zu sehen, setzen Sie PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL
auf DEBUG
. Weitere Informationen finden Sie unter Verwenden von AWS Lambda Umgebungsvariablen im AWS Lambda Entwicklerhandbuch.
Anmerkung
AWS Lambda zeichnet Betriebsdetails zur Lambda-Erweiterung und Lambda-Funktion in Amazon CloudWatch Logs auf.
Umgebungsvariable | Details | Erforderlich | Zulässige Werte | Standardwert |
---|---|---|---|---|
|
Timeout in Millisekunden für Anfragen an Parameter Store.
Ein Wert von 0 (null) gibt an, dass kein Timeout vorliegt. |
Nein | Alle ganzen Zahlen | 0 (Null) |
|
Timeout in Millisekunden für Anfragen an Secrets Manager.
Ein Wert von 0 (null) gibt an, dass kein Timeout vorliegt. |
Nein | Alle ganzen Zahlen |
0 (Null) |
|
Maximal gültige Lebensdauer eines Parameters im Cache in Sekunden, bevor er ungültig wird. Ein Wert von 0 (Null) gibt an, dass der Cache umgangen werden soll. Diese Variable wird ignoriert, wenn der Wert für |
Nein | 0 (Null) bis 300 Sek. (Fünf Minuten) | 300 Sek. (Fünf Minuten) |
|
Maximal gültige Lebensdauer eines Secrets im Cache in Sekunden, bevor es ungültig wird. Ein Wert von 0 (Null) gibt an, dass der Cache umgangen wurde. Diese Variable wird ignoriert, wenn der Wert für |
Nein | 0 (Null) bis 300 Sek. (Fünf Minuten) | 300 Sek. (5 Minuten) |
PARAMETERS_SECRETS_EXTENSION_CACHE_ENABLED |
Bestimmt, ob der Cache für die Erweiterung aktiviert ist. Gültige Werte: |
Nein | TRUE | FALSE | TRUE |
PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE |
Die maximale Größe des Caches in Bezug auf die Anzahl der Elemente. Ein Wert von 0 (Null) gibt an, dass der Cache umgangen wurde. Diese Variable wird ignoriert, wenn beide TTL Cache-Werte 0 (Null) sind. |
Nein | 0 (Null) bis 1 000 |
1000 |
PARAMETERS_SECRETS_EXTENSION_HTTP_PORT |
Der Port für den lokalen HTTP Server. | Nein | 1 — 65535 |
2773 |
PARAMETERS_SECRETS_EXTENSION_MAX_CONNECTIONS |
Maximale Anzahl von Verbindungen für die HTTP Clients, an die die Erweiterung Anfragen sendet Parameter Store oder Secrets Manager. Dies ist eine Konfiguration pro Client für die Anzahl der Verbindungen, die sowohl der Secrets Manager Manager-Client als auch Parameter Store Der Client stellt zu den Backend-Diensten her. |
Nein | Mindestens 1; Keine Höchstgrenze. |
3 |
PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL |
Der Detaillierungsgrad, der in Protokollen für die Erweiterung gemeldet wird. Wir empfehlen die Verwendung von Protokolle für Lambda-Operationen werden automatisch an eine zugehörige CloudWatch Logs-Protokollgruppe übertragen. |
Nein |
|
INFO |
Beispielbefehle für die Verwendung von AWS Systems Manager Parameter Store und AWS Secrets Manager Erweiterung
Die Beispiele in diesem Abschnitt zeigen API Aktionen zur Verwendung mit AWS Systems Manager Parameter Store und AWS Secrets Manager Erweiterung.
Beispielbefehle für Parameter Store
Die Lambda-Erweiterung verwendet schreibgeschützten Zugriff auf die Aktion. GetParameterAPI
Um diese Aktion aufzurufen, führen Sie einen HTTP GET Aufruf ähnlich dem folgenden aus. Dieses Befehlsformat bietet Zugriff auf Parameter in der Standardparameterebene.
GET http://localhost:
port
/systemsmanager/parameters/get?name=parameter-name
&version=version
&label=label
&withDecryption={true|false}
In diesem Beispiel: parameter-name
steht für den vollständigen Parameternamen, z. B. für einen ParameterMyParameter
, der sich nicht in einer Hierarchie befindet, oder %2FDev%2FProduction%2FEast%2FProject-ABC%2FMyParameter
für einen Parameter mit dem Namen/Dev/Production/East/Project-ABC/MyParameter
, der Teil einer Hierarchie ist.
Anmerkung
Bei der Verwendung von GET Aufrufen müssen die Parameterwerte codiert werdenHTTP, um Sonderzeichen beizubehalten. Anstatt beispielsweise einen hierarchischen Pfad wie zu formatieren, kodieren Sie Zeichen/a/b/c
, die als Teil von interpretiert werden könntenURL, wie z. B. %2Fa%2Fb%2Fc
version
and label
sind die Selektoren für die Verwendung mit der Aktion verfügbar. GetParameter
GET http://localhost:
port
/systemsmanager/parameters/get/?name=MyParameter&version=5
Um einen Parameter in einer Hierarchie aufzurufen, führen Sie einen HTTP GET Aufruf ähnlich dem folgenden aus.
GET http://localhost:
port
/systemsmanager/parameters/get?name=%2Fa%2Fb%2F&label=release
Um einen öffentlichen (globalen) Parameter aufzurufen, führen Sie einen HTTP GET Aufruf ähnlich dem folgenden durch.
GET http://localhost:
port
/systemsmanager/parameters/get/?name=%2Faws%2Fservice%20list%2F…
Um einen Secrets Manager Manager-Secret HTTP GET aufzurufen, verwenden Sie Parameter Store Verweise, führen Sie einen ähnlichen HTTP GET Anruf wie den folgenden durch.
GET http://localhost:
port
/systemsmanager/parameters/get?name=%2Faws%2Freference%2Fsecretsmanager%2F…
Um einen Aufruf mit dem Amazon-Ressourcennamen (ARN) für einen Parameter zu tätigen, führen Sie einen HTTP GET Aufruf ähnlich dem folgenden durch.
GET http://localhost:
port
/systemsmanager/parameters/get?name=arn:aws:ssm:us-east-1:123456789012:parameter/MyParameter
Um einen Aufruf zu tätigen, der auf einen SecureString
Parameter mit Entschlüsselung zugreift, führen Sie einen HTTP GET Aufruf ähnlich dem folgenden aus.
GET http://localhost:
port
/systemsmanager/parameters/get?name=MyParameter&withDecryption=true
Sie können angeben, dass Parameter nicht entschlüsselt werden, indem Sie withDecryption
weglassen oder explizit auf false
setzen. Sie können auch entweder eine Version oder ein Label angeben, aber nicht beides. Wenn Sie dies tun, wird nur das erste davon verwendet, das in der hinter dem Fragezeichen (?
) URL steht.
AWS Lambda-Erweiterung für Parameter und Geheimnisse ARNs
Die folgenden Tabellen enthalten Erweiterungen ARNs für unterstützte Architekturen und Regionen.
Themen
Erweiterung ARNs für x86_64 and x86 Architekturen
Letzte Aktualisierung: 19. September 2024
Region | ARN |
---|---|
USA Ost (Ohio) |
|
USA Ost (Nord-Virginia) |
|
USA West (Nordkalifornien) |
|
USA West (Oregon) |
|
Africa (Cape Town) |
|
Asia Pacific (Hongkong) |
|
Region Asien-Pazifik (Hyderabad) |
|
Asien-Pazifik (Jakarta) |
|
Asien-Pazifik (Melbourne) |
|
Asien-Pazifik (Malaysia) |
arn:aws:lambda:ap-southeast-5:090732460067:layer:AWS-Parameters-and-Secrets-Lambda-Extension:1 |
Asien-Pazifik (Mumbai) |
|
Asia Pacific (Osaka) |
|
Asia Pacific (Seoul) |
|
Asien-Pazifik (Singapur) |
|
Asien-Pazifik (Sydney) |
|
Asien-Pazifik (Tokio) |
|
Canada (Central) |
|
Kanada West (Calgary) | arn:aws:lambda:ca-west-1:243964427225:layer:AWS-Parameters-and-Secrets-Lambda-Extension:2 |
China (Peking) |
|
China (Ningxia) |
|
Europe (Frankfurt) |
|
Europa (Irland) |
|
Europa (London) |
|
Europa (Milan) |
|
Europa (Paris) |
|
Region Europa (Spanien) |
|
Europa (Stockholm) |
|
Israel (Tel Aviv) |
|
Region Europa (Zürich) |
|
Naher Osten (Bahrain) |
|
Naher Osten (UAE) | arn:aws:lambda:me-central-1:858974508948:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12 |
Südamerika (São Paulo) |
|
AWS GovCloud (US-Ost) |
|
AWS GovCloud (US-West) |
|
Erweiterung ARNs für ARM64 and Mac with Apple silicon Architekturen
Letzte Aktualisierung: 19. September 2024
Region | ARN |
---|---|
USA Ost (Ohio) |
|
USA Ost (Nord-Virginia) |
|
Region US West (N. California) |
|
USA West (Oregon) |
|
Region Afrika (Kapstadt) |
|
Region Asien-Pazifik (Hongkong) |
|
Region Asien-Pazifik (Hyderabad) |
|
Region Asien-Pazifik (Jakarta) |
|
Asien-Pazifik (Melbourne) |
|
Asien-Pazifik (Malaysia) |
arn:aws:lambda:ap-southeast-5:090732460067:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:1 |
Asien-Pazifik (Mumbai) |
|
Asien-Pazifik (Osaka) |
|
Region Asien-Pazifik (Seoul) |
|
Asien-Pazifik (Singapur) |
|
Asien-Pazifik (Sydney) |
|
Asien-Pazifik (Tokio) |
|
Region Kanada (Zentral) |
|
Kanada West (Calgary) | arn:aws:lambda:ca-west-1:243964427225:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:1 |
China (Peking) |
|
China (Ningxia) |
|
Europe (Frankfurt) |
|
Europa (Irland) |
|
Europe (London) |
|
Region Europa (Mailand) |
|
Region Europa (Paris) |
|
Region Europa (Spanien) |
|
Region Europa (Stockholm) |
|
Israel (Tel Aviv) |
|
Region Europa (Zürich) |
|
Region Naher Osten (Bahrain) |
|
Naher Osten (UAE) | arn:aws:lambda:me-central-1:858974508948:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm:1 |
Region Südamerika (São Paulo) |
|
AWS GovCloud (US-Ost) |
|
AWS GovCloud (US-West) |
|