Verwenden des Lambda-Metadaten-Endpunkts - AWS Lambda

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 des Lambda-Metadaten-Endpunkts

Mit dem Lambda-Metadaten-Endpunkt können Ihre Funktionen ermitteln, in welcher Availability Zone (AZ) sie ausgeführt werden. Auf diese Weise können Sie die Latenz optimieren, indem Sie zu denselben AZ-Ressourcen wie Amazon ElastiCache - und Amazon RDS-Endpunkten weiterleiten und AZ-fähige Resilienzmuster implementieren.

Der Endpunkt gibt Metadaten in einem einfachen JSON-Format über eine Localhost-HTTP-API innerhalb der Ausführungsumgebung zurück und ist sowohl für Laufzeiten als auch für Erweiterungen zugänglich.

Erste Schritte

Powertools for AWS Lambda bietet ein Hilfsprogramm für den Zugriff auf den Lambda-Metadaten-Endpunkt in Python TypeScript, Java und .NET. Das Hilfsprogramm speichert die Antwort nach dem ersten Aufruf im Cache und verarbeitet SnapStart die Cache-Invalidierung automatisch.

Verwenden Sie das Metadaten-Hilfsprogramm Powertools for AWS Lambda oder rufen Sie den Metadaten-Endpunkt direkt auf

Python

Installieren Sie das Powertools-Paket:

pip install "aws-lambda-powertools"

Verwenden Sie das Metadaten-Hilfsprogramm in Ihrem Handler:

Beispiel Abrufen der AZ-ID mit Powertools (Python)
from aws_lambda_powertools.utilities.lambda_metadata import get_lambda_metadata def handler(event, context): metadata = get_lambda_metadata() az_id = metadata.availability_zone_id # e.g., "use1-az1" return {"az_id": az_id}
TypeScript

Installieren Sie das Powertools-Paket:

npm install @aws-lambda-powertools/commons

Verwenden Sie das Metadaten-Hilfsprogramm in Ihrem Handler:

Beispiel Abrufen der AZ-ID mit Powertools () TypeScript
import { getMetadata } from '@aws-lambda-powertools/commons/utils/metadata'; const metadata = await getMetadata(); export const handler = async () => { const { AvailabilityZoneID: azId } = metadata; return azId; };
Java

Fügen Sie die Powertools-Abhängigkeit zu Ihrem hinzu: pom.xml

<dependencies> <dependency> <groupId>software.amazon.lambda</groupId> <artifactId>powertools-lambda-metadata</artifactId> <version>2.10.0</version> </dependency> </dependencies>

Verwenden Sie den Metadaten-Client in Ihrem Handler:

Beispiel Abrufen der AZ-ID mit Powertools (Java)
import software.amazon.lambda.powertools.metadata.LambdaMetadata; import software.amazon.lambda.powertools.metadata.LambdaMetadataClient; public class App implements RequestHandler<Object, String> { @Override public String handleRequest(Object input, Context context) { LambdaMetadata metadata = LambdaMetadataClient.get(); String azId = metadata.getAvailabilityZoneId(); // e.g., "use1-az1" return "{\"azId\": \"" + azId + "\"}"; } }
.NET

Installieren Sie das Powertools-Paket:

dotnet add package AWS.Lambda.Powertools.Metadata

Verwenden Sie die Metadatenklasse in Ihrem Handler:

Beispiel Abrufen der AZ-ID mit Powertools (.NET)
using AWS.Lambda.Powertools.Metadata; public class Function { public string Handler(object input, ILambdaContext context) { var azId = LambdaMetadata.AvailabilityZoneId; return $"Running in AZ: {azId}"; } }
All Runtimes

Alle Lambda-Laufzeiten unterstützen den Metadaten-Endpunkt, einschließlich benutzerdefinierter Laufzeiten und Container-Images. Verwenden Sie das folgende Beispiel, um mithilfe der Umgebungsvariablen, die Lambda automatisch in der Ausführungsumgebung festlegt, direkt von Ihrer Funktion aus auf die Metadaten-API zuzugreifen.

Beispiel Direkter Zugriff auf den Metadaten-Endpunkt
# Variables are automatically set by Lambda METADATA_ENDPOINT="http://${AWS_LAMBDA_METADATA_API}/2026-01-15/metadata/execution-environment" # Make the request RESPONSE=$(curl -s -H "Authorization: Bearer ${AWS_LAMBDA_METADATA_TOKEN}" "$METADATA_ENDPOINT") # Parse the AZ ID AZ_ID=$(echo "$RESPONSE" | jq -r '.AvailabilityZoneID') echo "Function is running in AZ ID: $AZ_ID"

Die Availability Zone verstehen IDs

AZ IDs (zum Beispieluse1-az1) bezieht sich immer auf denselben physischen Standort für alle AWS Konten, während AZ-Namen (z. B.us-east-1a) in bestimmten Regionen möglicherweise unterschiedlichen physischen Infrastrukturen in jedem AWS Konto zugeordnet werden. Weitere Informationen finden Sie unter AZ IDs für kontoübergreifende Konsistenz.

Konvertierung der AZ-ID in den AZ-Namen:

Verwenden Sie die Amazon EC2 DescribeAvailabilityZonesEC2-API, um eine AZ-ID in einen AZ-Namen zu konvertieren. Um diese API zu verwenden, fügen Sie die ec2:DescribeAvailabilityZones Berechtigung zur Ausführungsrolle Ihrer Funktion hinzu.

API-Referenz

Umgebungsvariablen

Lambda legt in jeder Ausführungsumgebung automatisch die folgenden Umgebungsvariablen fest:

  • AWS_LAMBDA_METADATA_API— Die Metadaten-Serveradresse im Format {ipv4_address}:{port} (zum Beispiel169.254.100.1:9001).

  • AWS_LAMBDA_METADATA_TOKEN— Ein eindeutiges Authentifizierungstoken für die aktuelle Ausführungsumgebung. Lambda generiert dieses Token automatisch bei der Initialisierung. Nehmen Sie es in alle Metadaten-API-Anfragen auf.

Endpoint

GET http://${AWS_LAMBDA_METADATA_API}/2026-01-15/metadata/execution-environment

Anforderung

Erforderliche Header:

  • Authorization— Der Tokenwert aus der AWS_LAMBDA_METADATA_TOKEN Umgebungsvariablen mit dem Bearer-Schema:. Bearer <token> Diese tokenbasierte Authentifizierung bietet umfassenden Schutz vor SSRF-Schwachstellen (Server-Side Request Forgery). Jede Ausführungsumgebung erhält bei der Initialisierung ein eindeutiges, zufällig generiertes Token.

Antwort

Status: 200 OK

Inhaltstyp: application/json

Cache-Steuerung: private, max-age=43200, immutable

Die Antwort ist innerhalb einer Ausführungsumgebung unveränderlich. Clients sollten die Antwort zwischenspeichern und die Cache-Control TTL respektieren. Bei SnapStart Funktionen wird die TTL während der Initialisierung reduziert, sodass Clients die Metadaten nach der Wiederherstellung aktualisieren, wenn sich die Ausführungsumgebung möglicherweise in einer anderen AZ befindet. Wenn Sie Powertools verwenden, werden Caching und SnapStart Invalidierung automatisch durchgeführt.

Fließtext:

{ "AvailabilityZoneID": "use1-az1" }

Das AvailabilityZoneID Feld enthält den eindeutigen Bezeichner für die Availability Zone, in der die Ausführungsumgebung ausgeführt wird.

Anmerkung

In future Updates können der Antwort weitere Felder hinzugefügt werden. Kunden sollten unbekannte Felder ignorieren und nicht scheitern, wenn neue Felder erscheinen.

Fehlermeldungen

  • 401 Nicht autorisiert — Der Authorization Header fehlt oder enthält ein ungültiges Token. Stellen Sie sicher, dass Sie die Prüfung bestanden habenBearer ${AWS_LAMBDA_METADATA_TOKEN}.

  • 405 Methode nicht zulässig — Die Anforderungsmethode ist nicht zulässigGET.

  • 500 Interner Serverfehler — Serverseitiger Verarbeitungsfehler.