View a markdown version of this page

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. Sie können dies verwenden, um die Latenz zu optimieren, indem Sie sie an Same-AZ-Ressourcen wie Amazon ElastiCache - und Amazon RDS-Endpunkte weiterleiten, und um Resilienzmuster zu implementieren. AZ-aware

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 AZ-ID mit Powertools (.NET) abrufen
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"

Grundlegendes zu Verfügbarkeitszone-IDs

AZ-IDs (z. B.use1-az1) beziehen sich in allen AWS Konten immer auf denselben physischen Standort, während AZ-Namen (z. B.us-east-1a) in bestimmten Regionen in jedem AWS Konto einer anderen physischen Infrastruktur zugeordnet werden können. Weitere Informationen finden Sie unter AZ-IDs für kontoübergreifende Konsistenz.

Konvertierung der AZ-ID in den AZ-Namen:

Verwenden Sie die Amazon DescribeAvailabilityZones EC2-API, um eine AZ-ID in einen AZ-Namen zu konvertieren. Um diese API zu verwenden, fügen Sie die ec2:DescribeAvailabilityZones Berechtigung der 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} (z. B.169.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 Token-Wert aus der AWS_LAMBDA_METADATA_TOKEN Umgebungsvariablen mit dem Bearer-Schema:. Bearer <token> Diese tokenbasierte Authentifizierung bietet umfassenden Schutz vor Sicherheitslücken im Bereich Server-Side Request Forgery (SSRF). Jede Ausführungsumgebung erhält bei der Initialisierung ein einzigartiges, zufällig generiertes Token.

Antwort

Status: 200 OK

Content-Type: application/json

Cache-Control: 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 die 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 zukünftigen Updates werden der Antwort möglicherweise weitere Felder hinzugefügt. Kunden sollten unbekannte Felder ignorieren und nicht scheitern, wenn neue Felder erscheinen.

Fehlermeldungen

  • 401 Unauthorized — Der Authorization Header fehlt oder enthält ein ungültiges Token. Vergewissern Sie sich, dass Sie die Prüfung bestehenBearer ${AWS_LAMBDA_METADATA_TOKEN}.

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

  • 500 Interner Serverfehler — Server-side Verarbeitungsfehler.