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.
Auf Instance-Metadaten für eine EC2-Instance zugreifen
Sie können auf die Metadaten der EC2-Instance innerhalb der Instance selbst oder über die EC2-Konsole, API, SDKs oder die AWS CLI zugreifen. Informationen zum Abrufen der aktuellen Instance-Metadateneinstellungen für eine Instance über die Konsole oder Befehlszeile finden Sie unter Abfragen von Instance-Metadatenoptionen für vorhandene Instances.
Sie können Benutzerdaten für Instances mit einem EBS-Stamm-Volume ändern. Die Instances muss angehalten werden. Eine Anleitung für die Konsole finden Sie unter Instance-Benutzerdaten aktualisieren. Ein Linux-Beispiel, das das verwendet AWS CLI, finden Sie unter https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html modify-instance-attribute. Ein Windows-Beispiel, das die Tools für Windows verwendet, finden Sie unter. PowerShell Benutzerdaten und die Tools für Windows PowerShell
Anmerkung
Beachten Sie, dass für HTTP-Anfragen für den Abruf von Instance-Metadaten und Benutzerdaten keine Gebühren berechnet werden.
Überlegungen zum Instance-Zugriff auf Instance-Metadaten
Beachten Sie Folgendes, um Probleme mit Instanzmetadaten zu vermeiden.
- Fehler beim Starten der Instanz aufgrund der IMDSv2-Durchsetzung ()
HttpTokensEnforced=enabled -
Bevor Sie die IMDSv2-Erzwingung aktivieren, muss Ihre gesamte Software auf der Instance IMDSv2 unterstützen. Danach können Sie die Standardeinstellung ändern, um IMDSv1 (
httpTokens=required) zu deaktivieren. Danach können Sie die Durchsetzung aktivieren. Weitere Informationen finden Sie unter Übergang zur Verwendung von Instance-Metadatenservice Version 2. - Befehlsformat
-
Das Befehlsformat ist unterschiedlich, je nachdem, ob Sie Instance Metadata Service Version 1 (IMDSv1) oder Instance Metadata Service Version 2 (IMDSv2) verwenden. Standardmäßig können Sie beide Instance-Metadaten-Services verwenden. Um die Verwendung von IMDSv2 zu erzwingen, lesen Sie Instance-Metadaten-Services für den Zugriff auf Instance-Metadaten verwenden.
- Wenn IMDSv2 erforderlich ist, funktioniert IMDSv1 nicht
-
Wenn Sie IMDSv1 verwenden und keine Antwort erhalten, ist wahrscheinlich IMDSv2 erforderlich. Um zu überprüfen, ob IMDSv2 erforderlich ist, wählen Sie die Instance aus, um deren Details anzuzeigen. Der IMDSv2-Wert gibt entweder Erforderlich (Sie müssen IMDSv2 verwenden) oder Optional (Sie können entweder IMDSv2 oder IMDSv1 verwenden) an.
- (IMDSv2) /latest/api/token wird verwendet, um das Token abzurufen
-
Das Ausgeben von
PUT-Anfragen an einen beliebigen versionsspezifischen Pfad, beispielsweise/2021-03-23/api/token, führt dazu, dass der Metadatenservice „403-Verboten“-Fehler zurückgibt. Dieses Verhalten ist beabsichtigt. - Metadaten-Version
-
Um zu vermeiden, dass Sie Ihren Code jedes Mal aktualisieren müssen, wenn Amazon EC2 einen neuen Instance-Metadaten-Build veröffentlicht, empfehlen wir,
latestim Pfad zu verwenden, nicht die Versionsnummer. - IPv6-Support
-
Um Instance-Metadaten über eine IPv6-Adresse abzurufen, stellen Sie sicher, dass Sie die IPv6-Adresse des IMDS
[fd00:ec2::254]anstelle der IPv4-Adresse169.254.169.254aktivieren und verwenden. Bei der Instance muss es sich um eine Instance handeln, die in einem Nitro-based Subnetz gestartet wird, das IPv6 unterstützt. https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-ip-address-range - (Windows) Erstellen benutzerdefinierter AMIs mit Windows Sysprep
-
Um sicherzustellen, dass IMDS funktioniert, wenn Sie eine Instance von einem benutzerdefinierten Windows-AMI starten, muss das AMI ein standardisiertes Image sein, welches mit Windows Sysprep erstellt wurde. Andernfalls funktioniert der IMDS nicht. Weitere Informationen finden Sie unter Ein Amazon-EC2-AMI mit Windows Sysprep erstellen.
- Erwägen Sie in einer Container-Umgebung eine Neukonfiguration oder Erhöhung des Hop-Limits auf 2.
-
Die AWS SDKs verwenden standardmäßig IMDSv2-Aufrufe. Wenn der IMDSv2-Anruf keine Antwort erhält, wiederholen einige AWS SDKs den Anruf und verwenden IMDSv1, falls er immer noch nicht erfolgreich ist. Dies kann zu einer Verzögerung führen, insbesondere in einer Container-Umgebung. Wenn bei AWS SDKs, die IMDSv2 benötigen, das Hop-Limit in einer Containerumgebung bei 1 liegt, erhält der Anruf möglicherweise überhaupt keine Antwort, da das Aufrufen des Containers als zusätzlicher Netzwerk-Hop betrachtet wird.
Um diese Probleme in einer Container-Umgebung zu minimieren, sollten Sie erwägen, die Konfiguration so zu ändern, dass Einstellungen (wie die AWS-Region) direkt an den Container weitergegeben werden, oder erwägen Sie, das Hop-Limit auf 2 zu erhöhen. Weitere Informationen über die Auswirkung des Hop-Limits finden Sie unter Erweitern Sie den EC2-Instance-Metadata-Service um Verbesserungen bei der Abwehr von offenen Firewalls, Reverse-Proxys und SSRF-Schwachstellen
. Weitere Informationen zum Ändern des Hop-Limits finden Sie unter Ändern des PUT-Antwort-Hop-Limits. - Begrenzen von Paketen pro Sekunde (PPS)
Für Services, die Link-Local-Adressen verwenden, gilt eine Obergrenze von 1 024 Paketen pro Sekunde (PPS). Dieses Limit umfasst die Summe von Route-53-Resolver-DNS-Abfragen, Instance Metadata Service (IMDS)-Anfragen, Amazon Time Service Network Time Protocol (NTP)-Anfragen und Windows-Licensing-Service-Anfragen (für Microsoft Windows-basierte Instances)
.
Zusätzliche Überlegungen zum Zugriff auf Benutzerdaten
-
Benutzerdaten werden als Opaque-Daten behandelt: Was Sie eingeben, wird auch ausgegeben. Die Interpretation der Benutzerdaten und die Instance ist Aufgabe der Instance.
-
Benutzerdaten müssen mit Base64 codiert werden. Je nachdem, welches Tool oder SDK Sie verwenden, wird die Base64-Kodierung möglicherweise für Sie durchgeführt. Beispiel:
Die Amazon EC2-Konsole kann die base64-Codierung für Sie durchführen oder base64-codierte Eingaben entgegennehmen.
AWS CLI Version 2 führt standardmäßig die Base64-Codierung von Binärparametern für Sie durch. AWS CLI Version 1 führt die Base64-Kodierung des Parameters für Sie durch.
--user-dataDie AWS SDK für Python (Boto3) führt die Base64-Kodierung des Parameters für Sie durch.
UserData
-
Benutzerdaten sind auf 16 KB an Rohdaten, bevor diese base64-codiert werden, begrenzt. Die Länge einer Zeichenfolge n nach base64-Codierung ist ceil(n/3)*4.
-
Benutzerdaten müssen base64-decodiert werden, wenn Sie sie abrufen. Wenn Sie die Daten über Instance-Metadaten oder die Konsole abrufen, werden sie automatisch für Sie dekodiert.
-
Wenn Sie eine Instance anhalten, ihre Benutzerdaten ändern und die Instance wieder starten, werden die aktualisierten Benutzerdaten nicht automatisch ausgeführt, wenn Sie die Instance starten. Bei Windows-Instances können Sie die Einstellungen so konfigurieren, dass aktualisierte Benutzerdatenskripte einmalig beim Starten der Instance oder bei jedem Neustart oder Start der Instance ausgeführt werden.
-
Benutzerdaten sind ein Instance-Attribut. Wenn Sie ein AMI auf der Grundlage einer Instance erstellen, sind die Instance-Benutzerdaten nicht im AMI enthalten.
Auf Instance-Metadaten innerhalb einer EC2-Instance zugreifen
Da Ihre Instance-Metadaten von der ausgeführten Instance verfügbar sind, müssen Sie nicht die Amazon-EC2-Konsole oder die AWS CLI verwenden. Dies kann sehr hilfreich sein, wenn Sie ein Skript schreiben möchten, das in der Instance ausgeführt werden soll. So können Sie z. B. über die Instance-Metadaten auf die lokale IP-Adresse Ihrer Instance zugreifen, um die Verbindung zu einer externen Anwendung zu verwalten.
Alle folgenden Daten werden als Instance-Metadaten betrachtet, der Zugriff erfolgt jedoch auf unterschiedliche Weise. Wählen Sie die Registerkarte aus, die den Typ der Instance-Metadaten darstellt, auf die Sie zugreifen möchten, um weitere Informationen zu erhalten.
Abfragen von Instance-Metadatenoptionen für vorhandene Instances
Sie können die Instance-Metadatenoptionen für vorhandene Instances abfragen.
Antworten und Fehlermeldungen
Alle Instance-Metadaten werden als Text zurückgegeben (HTTP-Inhaltstyp text/plain).
Eine Anfrage für eine spezifische Metadatenressource gibt den entsprechenden Wert oder einen HTTP-Fehlercode 404 -
Not Found zurück, wenn die Ressource nicht verfügbar ist.
Eine Anfrage für eine allgemeine Metadatenressource (der URI endet auf „/”) gibt eine Liste der verfügbaren Ressourcen oder einen HTTP-Fehlercode 404 - Not Found zurück, wenn keine entsprechenden Ressourcen vorhanden sind. Die Listenelemente stehen jeweils in einer eigenen Zeile, d. h. sie sind durch Zeilenvorschübe (ASCII 10) getrennt.
Wenn eine IMDSv1-Anforderung keine Antwort erhält, ist wahrscheinlich IMDSv2 erforderlich.
Für Anforderungen, die mit IMDSv2 gestellt werden, können die folgenden HTTP-Fehlercodes zurückgegeben werden:
-
400 - Missing or Invalid Parameters– DiePUT-Anfrage ist nicht gültig. -
401 - Unauthorized– DieGET-Anfrage verwendet ein ungültiges Token. Die empfohlene Aktion ist das Erzeugen eines neuen Token. -
403 - Forbidden– Die Anfrage ist nicht zulässig oder der IMDS ist deaktiviert. -
404 - Not Found– Die Ressource ist nicht verfügbar oder es gibt keine solche Ressource. -
503– Die Anforderung konnte nicht abgeschlossen werden. Wiederholen Sie die Anforderung.
Wenn das IMDS einen Fehler zurückgibt, druckt curl die Fehlermeldung in der Ausgabe und gibt einen Erfolgsstatuscode zurück. Die Fehlermeldung wird in der TOKEN-Variablen gespeichert, was dazu führt, dass curl-Befehle, die das Token verwenden, fehlschlagen. Wenn Sie curl mit der -f Option aufrufen, wird im Falle eines HTTP-Serverfehlers ein Fehlerstatuscode zurückgegeben. Wenn Sie die Fehlerbehandlung aktivieren, kann die Shell den Fehler auffangen und das Skript beenden.
Drosselung abfragen
Wir drosseln die Abfragen an den IMDS pro Instance und begrenzen die Anzahl gleichzeitiger Verbindungen von einer Instance zum IMDS.
Wenn Sie das IMDS zum Abrufen von AWS Sicherheitsanmeldeinformationen verwenden, vermeiden Sie es, bei jeder Transaktion oder gleichzeitig bei einer hohen Anzahl von Threads oder Prozessen nach Anmeldeinformationen abzufragen, da dies zu einer Drosselung führen kann. Wir empfehlen stattdessen, die Anmeldeinformationen im Cache zu speichern, bis sie sich ihrer Ablaufzeit nähern. Weitere Informationen über die IAM-Rolle und die der Rolle zugeordneten Sicherheitsanmeldeinformationen finden Sie unter Abrufen von Sicherheitsanmeldeinformationen aus Instance-Metadaten.
Wenn es beim Zugriff auf den IMDS zu einer Drosselung kommt, versuchen Sie Ihre Abfrage mit einer exponentiellen Backoff-Strategie erneut.