Abrufen von Konfigurationsdaten mithilfe der AWS AppConfig Agent Lambda-Erweiterung - AWS AppConfig

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.

Abrufen von Konfigurationsdaten mithilfe der AWS AppConfig Agent Lambda-Erweiterung

Eine AWS Lambda Erweiterung ist ein Begleitprozess, der die Funktionen einer Lambda-Funktion erweitert. Eine Erweiterung kann vor dem Aufruf einer Funktion beginnen, parallel zu einer Funktion ausgeführt werden und nach der Verarbeitung eines Funktionsaufrufs weiterlaufen. Im Wesentlichen ist eine Lambda-Erweiterung 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.

Wenn Sie AWS AppConfig Feature-Flags oder andere dynamische Konfigurationsdaten in einer Lambda-Funktion verwenden, empfehlen wir Ihnen, die AWS AppConfig Agent Lambda-Erweiterung als Ebene zu Ihrer Lambda-Funktion hinzuzufügen. Dadurch wird das Aufrufen von Feature-Flags einfacher, und die Erweiterung selbst enthält bewährte Methoden, die die Verwendung vereinfachen und AWS AppConfig gleichzeitig die Kosten senken. Geringere Kosten ergeben sich aus weniger API-Aufrufen des AWS AppConfig Dienstes und kürzeren Verarbeitungszeiten für Lambda-Funktionen. Weitere Informationen zu Lambda-Erweiterungen finden Sie unter Lambda-Erweiterungen im AWS Lambda Developer Guide.

Anmerkung

AWS AppConfig Die Preisgestaltung basiert auf der Häufigkeit, mit der eine Konfiguration aufgerufen und empfangen wird. Ihre Kosten steigen, wenn Ihr Lambda mehrere Kaltstarts durchführt und häufig neue Konfigurationsdaten abruft.

Dieses Thema enthält Informationen zur AWS AppConfig Agent-Lambda-Erweiterung und das Verfahren zur Konfiguration der Erweiterung für die Verwendung mit Ihrer Lambda-Funktion.

Funktionsweise

Wenn Sie AWS AppConfig Konfigurationen für eine Lambda-Funktion ohne Lambda-Erweiterungen verwalten, müssen Sie Ihre Lambda-Funktion so konfigurieren, dass sie Konfigurationsupdates erhält, indem Sie sie in die StartConfigurationSessionund GetLatestConfigurationAPI-Aktionen integrieren.

Die Integration der AWS AppConfig Agent Lambda-Erweiterung in Ihre Lambda-Funktion vereinfacht diesen Prozess. Die Erweiterung kümmert sich darum, den AWS AppConfig Dienst aufzurufen, einen lokalen Cache mit abgerufenen Daten zu verwalten, die für die nächsten Serviceabrufe benötigten Konfigurationstoken zu verfolgen und regelmäßig im Hintergrund nach Konfigurationsupdates zu suchen. Das folgende Diagramm zeigt, wie es funktioniert.

Ein Diagramm der Funktionsweise der AWS AppConfig Agent Lambda-Erweiterung
  1. Sie konfigurieren die AWS AppConfig Agent Lambda-Erweiterung als Ebene Ihrer Lambda-Funktion.

  2. Um auf ihre Konfigurationsdaten zuzugreifen, ruft Ihre Funktion die AWS AppConfig Erweiterung an einem HTTP-Endpunkt auf, auf dem sie ausgeführt wird. localhost:2772

  3. Die Erweiterung verwaltet einen lokalen Cache mit den Konfigurationsdaten. Wenn sich die Daten nicht im Cache befinden, ruft die Erweiterung auf, AWS AppConfig um die Konfigurationsdaten abzurufen.

  4. Nach dem Empfang der Konfiguration vom Dienst speichert die Erweiterung sie im lokalen Cache und übergibt sie an die Lambda-Funktion.

  5. AWS AppConfig Die Agent Lambda-Erweiterung sucht regelmäßig im Hintergrund nach Aktualisierungen Ihrer Konfigurationsdaten. Jedes Mal, wenn Ihre Lambda-Funktion aufgerufen wird, überprüft die Erweiterung die Zeit, die seit dem Abrufen einer Konfiguration vergangen ist. Wenn die verstrichene Zeit länger als das konfigurierte Abfrageintervall ist, ruft die Erweiterung auf, AWS AppConfig um nach neu bereitgestellten Daten zu suchen, aktualisiert den lokalen Cache, falls eine Änderung vorgenommen wurde, und setzt die verstrichene Zeit zurück.

Anmerkung
  • 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-Instanzen und Parallelität finden Sie unter Parallelität für eine Lambda-Funktion verwalten.

  • Wie lange es dauert, bis eine Konfigurationsänderung in einer Lambda-Funktion angezeigt wird, nachdem Sie eine aktualisierte Konfiguration von bereitgestellt haben, hängt von der Bereitstellungsstrategie ab AWS AppConfig, die Sie für die Bereitstellung verwendet haben, und dem Abfrageintervall, das Sie für die Erweiterung konfiguriert haben.

Bevor Sie beginnen

Gehen Sie wie folgt vor, bevor Sie die AWS AppConfig Agent Lambda-Erweiterung aktivieren:

  • Organisieren Sie die Konfigurationen in Ihrer Lambda-Funktion so, dass Sie sie externalisieren können. AWS AppConfig

  • Erstellen Sie AWS AppConfig Artefakte und Konfigurationsdaten, einschließlich Feature-Flags oder Freiform-Konfigurationsdaten. Weitere Informationen finden Sie unter Erstellen von Feature-Flags und Freiform-Konfigurationsdaten in AWS AppConfig.

  • Fügen Sie der AWS Identity and Access Management (IAM appconfig:StartConfigurationSession -appconfig:GetLatestConfiguration) Richtlinie, die von der Lambda-Funktionsausführungsrolle verwendet wird, und hinzu. Weitere Informationen finden Sie unter AWS Lambda -Ausführungsrolle im AWS Lambda -Entwicklerhandbuch. Weitere Informationen zu AWS AppConfig Berechtigungen finden Sie unter Aktionen, Ressourcen und Bedingungsschlüssel für AWS AppConfig in der Service Authorization Reference.

Hinzufügen der AWS AppConfig Agent Lambda-Erweiterung

Um die AWS AppConfig Agent Lambda-Erweiterung verwenden zu können, müssen Sie die Erweiterung zu Ihrem Lambda hinzufügen. Dies kann geschehen, indem Sie die AWS AppConfig Agent Lambda-Erweiterung als Ebene zu Ihrer Lambda-Funktion hinzufügen oder indem Sie die Erweiterung für eine Lambda-Funktion als Container-Image aktivieren.

Anmerkung

Die AWS AppConfig Erweiterung ist laufzeitunabhängig und unterstützt alle Laufzeiten.

Hinzufügen der AWS AppConfig Agent Lambda-Erweiterung mithilfe einer Ebene und eines ARN

Um die AWS AppConfig Agent Lambda-Erweiterung zu verwenden, fügen Sie die Erweiterung als Ebene zu Ihrer Lambda-Funktion hinzu. Informationen zum Hinzufügen einer Ebene zu Ihrer Funktion finden Sie unter Konfiguration von Erweiterungen im AWS Lambda Entwicklerhandbuch. Der Name der Erweiterung in der AWS Lambda Konsole lautet AWS- AppConfig -Extension. Beachten Sie auch, dass Sie beim Hinzufügen der Erweiterung als Ebene zu Ihrem Lambda einen Amazon-Ressourcennamen (ARN) angeben müssen. Wählen Sie einen ARN aus einer der folgenden Listen aus, der der Plattform entspricht und AWS-Region auf der Sie das Lambda erstellt haben.

Wenn Sie die Erweiterung testen möchten, bevor Sie sie zu Ihrer Funktion hinzufügen, können Sie anhand des folgenden Codebeispiels überprüfen, ob sie funktioniert.

import urllib.request def lambda_handler(event, context): url = f'http://localhost:2772/applications/application_name/environments/environment_name/configurations/configuration_name' config = urllib.request.urlopen(url).read() return config

Um es zu testen, erstellen Sie eine neue Lambda-Funktion für Python, fügen Sie die Erweiterung hinzu und führen Sie dann die Lambda-Funktion aus. Nachdem Sie die Lambda-Funktion ausgeführt haben, gibt die AWS AppConfig Lambda-Funktion die Konfiguration zurück, die Sie für den Pfad http://localhost:2772 angegeben haben. Informationen zum Erstellen einer Lambda-Funktion finden Sie unter Erstellen einer Lambda-Funktion mit der Konsole im AWS Lambda Entwicklerhandbuch.

Informationen zum Hinzufügen der AWS AppConfig Agent Lambda-Erweiterung als Container-Image finden Sie unterVerwenden eines Container-Images zum Hinzufügen der AWS AppConfig Agent Lambda-Erweiterung.

Konfiguration der AWS AppConfig Agent-Lambda-Erweiterung

Sie können die Erweiterung konfigurieren, indem Sie die folgenden AWS Lambda Umgebungsvariablen ändern. Weitere Informationen finden Sie unter Verwenden von AWS Lambda Umgebungsvariablen im AWS Lambda Entwicklerhandbuch.

Konfigurationsdaten werden vorab abgerufen

Die Umgebungsvariable AWS_APPCONFIG_EXTENSION_PREFETCH_LIST kann die Startzeit Ihrer Funktion verbessern. Wenn die AWS AppConfig Agent Lambda-Erweiterung initialisiert ist, ruft sie die angegebene Konfiguration ab, AWS AppConfig bevor Lambda beginnt, Ihre Funktion zu initialisieren und Ihren Handler aufzurufen. In einigen Fällen sind die Konfigurationsdaten bereits im lokalen Cache verfügbar, bevor Ihre Funktion sie anfordert.

Um die Prefetch-Fähigkeit zu verwenden, setzen Sie den Wert der Umgebungsvariablen auf den Pfad, der Ihren Konfigurationsdaten entspricht. Wenn Ihre Konfiguration beispielsweise einem Anwendungs-, Umgebungs- und Konfigurationsprofil mit den Namen „my_application“, „my_environment“ und „my_configuration_data“ entspricht, wäre der Pfad. /applications/my_application/environments/my_environment/configurations/my_configuration_data Sie können mehrere Konfigurationselemente angeben, indem Sie sie als kommagetrennte Liste auflisten (wenn Sie einen Ressourcennamen haben, der ein Komma enthält, verwenden Sie den ID-Wert der Ressource anstelle ihres Namens).

Zugreifen auf Konfigurationsdaten von einem anderen Konto aus

Die AWS AppConfig Agent Lambda-Erweiterung kann Konfigurationsdaten von einem anderen Konto abrufen, indem sie eine IAM-Rolle angibt, die Berechtigungen für die Daten gewährt. Gehen Sie folgendermaßen vor, um dies einzurichten:

  1. Erstellen Sie in dem AWS AppConfig Konto, in dem die Konfigurationsdaten verwaltet werden, eine Rolle mit einer Vertrauensrichtlinie, die dem Konto, auf dem die Lambda-Funktion ausgeführt wird, Zugriff auf die appconfig:GetLatestConfiguration Aktionen appconfig:StartConfigurationSession und gewährt, zusammen mit den teilweisen oder vollständigen ARNs, die den AWS AppConfig Konfigurationsressourcen entsprechen.

  2. Fügen Sie in dem Konto, auf dem die Lambda-Funktion ausgeführt wird, der Lambda-Funktion die AWS_APPCONFIG_EXTENSION_ROLE_ARN Umgebungsvariable mit dem ARN der in Schritt 1 erstellten Rolle hinzu.

  3. (Optional) Bei Bedarf kann mithilfe der AWS_APPCONFIG_EXTENSION_ROLE_EXTERNAL_ID Umgebungsvariablen eine externe ID angegeben werden. In ähnlicher Weise kann ein Sitzungsname mithilfe der AWS_APPCONFIG_EXTENSION_ROLE_SESSION_NAME Umgebungsvariablen konfiguriert werden.

Anmerkung

Notieren Sie die folgenden Informationen:

  • Die AWS AppConfig Agent Lambda-Erweiterung kann nur Daten von einem Konto abrufen. Wenn Sie eine IAM-Rolle angeben, kann die Erweiterung keine Konfigurationsdaten von dem Konto abrufen, in dem die Lambda-Funktion ausgeführt wird.

  • AWS Lambda protokolliert Informationen über die AWS AppConfig Agent Lambda-Erweiterung und die Lambda-Funktion mithilfe von Amazon CloudWatch Logs.

Umgebungsvariable Details Standardwert

AWS_APPCONFIG_EXTENSION_HTTP_PORT

Diese Umgebungsvariable gibt den Port an, auf dem der lokale HTTP-Server läuft, der die Erweiterung hostet.

2772

AWS_APPCONFIG_EXTENSION_LOG_LEVEL

Diese Umgebungsvariable gibt an, welche AWS AppConfig erweiterungsspezifischen Protokolle für eine Funktion an Amazon CloudWatch Logs gesendet werden. Gültige Werte ohne Berücksichtigung der Groß- und Kleinschreibung sind:debug,,info, warn und. error none Debug enthält detaillierte Informationen, einschließlich Zeitinformationen, über die Erweiterung.

info

AWS_APPCONFIG_EXTENSION_MAX_CONNECTIONS

Diese Umgebungsvariable konfiguriert die maximale Anzahl von Verbindungen, die die Erweiterung zum Abrufen von Konfigurationen verwendet. AWS AppConfig

3

AWS_APPCONFIG_EXTENSION_POLL_INTERVAL_SECONDS

Diese Umgebungsvariable steuert, wie oft die Erweiterung innerhalb von Sekunden AWS AppConfig nach einer aktualisierten Konfiguration fragt.

45

AWS_APPCONFIG_EXTENSION_POLL_TIMEOUT_MILLIS

Diese Umgebungsvariable steuert, wie lange (in Millisekunden) die Erweiterung maximal auf eine Antwort wartet, AWS AppConfig wenn sie Daten im Cache aktualisiert. Wenn innerhalb der angegebenen Zeit AWS AppConfig nicht reagiert wird, überspringt die Erweiterung dieses Abfrageintervall und gibt die zuvor aktualisierten zwischengespeicherten Daten zurück.

3000

AWS_APPCONFIG_EXTENSION_PREFETCH_LIST

Diese Umgebungsvariable gibt die Konfigurationsdaten an, die die Erweiterung abruft, bevor die Funktion initialisiert und der Handler ausgeführt wird. Sie kann die Kaltstartzeit der Funktion erheblich reduzieren.

None
AWS_APPCONFIG_EXTENSION_PROXY_HEADERS Diese Umgebungsvariable spezifiziert Header, die der Proxy benötigt, auf den in der AWS_APPCONFIG_EXTENSION_PROXY_URL Umgebungsvariablen verwiesen wird. Der Wert ist eine durch Kommas getrennte Liste von Headern. Jeder Header verwendet die folgende Form:
"header: value"
None
AWS_APPCONFIG_EXTENSION_PROXY_URL Diese Umgebungsvariable gibt die Proxy-URL an, die für Verbindungen von der AWS AppConfig Erweiterung zu verwendet AWS-Services werden soll. HTTPSund HTTP URLs werden unterstützt. None
AWS_APPCONFIG_EXTENSION_ROLE_ARN Diese Umgebungsvariable gibt den ARN der IAM-Rolle an, der einer Rolle entspricht, die von der AWS AppConfig Erweiterung zum Abrufen der Konfiguration übernommen werden sollte. None
AWS_APPCONFIG_EXTENSION_ROLE_EXTERNAL_ID Diese Umgebungsvariable gibt die externe ID an, die in Verbindung mit der angenommenen Rolle ARN verwendet werden soll. None
AWS_APPCONFIG_EXTENSION_ROLE_SESSION_NAME Diese Umgebungsvariable gibt den Sitzungsnamen an, der den Anmeldeinformationen für die angenommene IAM-Rolle zugeordnet werden soll. None
AWS_APPCONFIG_EXTENSION_SERVICE_REGION Diese Umgebungsvariable gibt eine alternative Region an, die die Erweiterung verwenden soll, um den AWS AppConfig Dienst aufzurufen. Wenn sie nicht definiert ist, verwendet die Erweiterung den Endpunkt in der aktuellen Region. None

AWS_APPCONFIG_EXTENSION_MANIFEST

Diese Umgebungsvariable konfiguriert den AWS AppConfig Agenten so, dass er zusätzliche konfigurationsspezifische Funktionen wie das Abrufen mehrerer Konten und das Speichern der Konfiguration auf der Festplatte nutzt. Sie können einen der folgenden Werte eingeben:

  • "app:env:manifest-config"

  • "file:/fully/qualified/path/to/manifest.json"

Weitere Informationen zu diesen Funktionen finden Sie unter Zusätzliche Abruffunktionen.

true

AWS_APPCONFIG_EXTENSION_WAIT_ON_MANIFEST

Diese Umgebungsvariable konfiguriert den AWS AppConfig Agenten so, dass er wartet, bis das Manifest verarbeitet ist, bevor der Start abgeschlossen wird.

true

Ein oder mehrere Flags aus einer Feature-Flag-Konfiguration abrufen

Für Feature-Flag-Konfigurationen (TypkonfigurationenAWS.AppConfig.FeatureFlags) können Sie mit der Lambda-Erweiterung ein einzelnes Flag oder eine Teilmenge von Flags in einer Konfiguration abrufen. Das Abrufen von ein oder zwei Flags ist nützlich, wenn Ihr Lambda nur einige Flags aus dem Konfigurationsprofil verwenden muss. Die folgenden Beispiele verwenden Python.

Anmerkung

Die Möglichkeit, ein einzelnes Feature-Flag oder eine Teilmenge von Flags in einer Konfiguration aufzurufen, ist nur in der AWS AppConfig Agent Lambda-Erweiterung Version 2.0.45 und höher verfügbar.

Sie können AWS AppConfig Konfigurationsdaten von einem lokalen HTTP-Endpunkt abrufen. Verwenden Sie den ?flag=flag_name Abfrageparameter für ein AWS AppConfig Konfigurationsprofil, um auf ein bestimmtes Flag oder eine Liste von Flags zuzugreifen.

Um auf ein einzelnes Flag und seine Attribute zuzugreifen

import urllib.request def lambda_handler(event, context): url = f'http://localhost:2772/applications/application_name/environments/environment_name/configurations/configuration_name?flag=flag_name' config = urllib.request.urlopen(url).read() return config

Um auf mehrere Flags und ihre Attribute zuzugreifen

import urllib.request def lambda_handler(event, context): url = f'http://localhost:2772/applications/application_name/environments/environment_name/configurations/configuration_name?flag=flag_name_one&flag=flag_name_two' config = urllib.request.urlopen(url).read() return config

AWS AppConfig Agent-Lambda-Erweiterungsprotokolle anzeigen

Sie können die Protokolldaten für die AWS AppConfig Agent Lambda-Erweiterung in den AWS Lambda Protokollen anzeigen. Protokolleinträgen wird das Präfix vorangestellt. appconfig agent Ein Beispiel:

[appconfig agent] 2024/05/07 04:19:01 ERROR retrieve failure for 'SourceEventConfig:SourceEventConfigEnvironment:SourceEventConfigProfile': StartConfigurationSession: api error AccessDenied: User: arn:aws:sts::0123456789:assumed-role/us-east-1-LambdaRole/extension1 is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::0123456789:role/test1 (retry in 60s)