Wie kann ich eine Liste meiner Amazon EC2-Instances einsehen, die mit Amazon EFS verbunden sind?

Lesedauer: 6 Minute
0

Ich möchte eine Liste meiner Instances in Amazon Elastic Compute Cloud (Amazon EC2) sehen, die ein Amazon Elastic File System (Amazon EFS) gemountet haben. Wie mache ich das?

Kurzbeschreibung

Die VPC-Ablaufprotokolle werden verwendet, um den Datenverkehr an der elastischen Netzwerkschnittstelle jedes Ziels mit Amazon EFS-Mount zu verfolgen. Die Ablaufprotokolle können in Amazon CloudWatch Logs übertragen werden. Mithilfe von CloudWatch Logs Insights wird der Verkehrsablauf an der elastischen Netzwerkschnittstelle des Mount-Ziels gefiltert, um die Liste der Amazon EC2-Instances bereitzustellen, die Amazon EFS zu einem bestimmten Zeitstempel bereitgestellt haben.

Lösung

Hinweis: Wenn Sie beim Ausführen von Befehlen im AWS Command Line Interface (AWS CLI) Fehlermeldungen erhalten, stellen Sie sicher, dass Sie die neueste Version des AWS CLI verwenden.

Führen Sie die folgenden Schritte einmalig aus. Nachdem Sie diese Schritte ausgeführt haben, führen Sie jedes Mal, wenn Sie die IP-Adressen der Clients auflisten möchten, auf denen Amazon EFS installiert ist, eine Abfrage aus, um eine aktuelle Liste zu erstellen.

Erstellen einer Protokollgruppe

  1. Öffnen Sie die CloudWatch-Konsole.
  2. Wählen Sie im Navigationsbereich Protokolle und dann Protokollgruppen aus.
  3. Wählen Sie Protokollgruppe erstellen aus.
  4. Geben Sie einen Protokollgruppennamen, eine Aufbewahrungseinstellung und einen optionalen KMS-Schlüssel-ARN ein. Sie können an diesem Punkt auch Tags hinzufügen.
  5. Wählen Sie Erstellen.

Erstellen einer Rolle im Identity and Access Management (IAM) mit der Berechtigung zum Veröffentlichen von Ablaufprotokollen in CloudWatch Logs

  1. Öffnen Sie die IAM-Konsole.
  2. Wählen Sie im Navigationsbereich unter Zugriffsverwaltung die Option Rollen aus.
  3. Wählen Sie Rolle erstellen und erstellen Sie eine neue IAM-Rolle.
  4. Die IAM-Richtlinie, die an Ihre IAM-Rolle angehängt ist, muss die Berechtigungen zur Veröffentlichung der VPC-Ablaufprotokolle in CloudWatch enthalten. Ebenso muss ein Vertrauensverhältnis vorliegen, das es dem Ablaufprotokoll-Dienst ermöglicht, die Rolle zu übernehmen.

Abrufen der Liste der elastischen Netzwerkschnittstellen, die vom Mount-Ziel des Amazon EFS verwendet werden

Hinweis: Amazon EFS hat für jede Availability Zone ein anderes Mount-Ziel.

  1. Öffnen Sie die Amazon EFS-Konsole.
  2. Wählen Sie unter Dateisysteme das spezifische Amazon EFS aus und wählen Sie dann Details anzeigen aus.
  3. Klicken Sie auf Netzwerk und notieren Sie sich die Netzwerkschnittstellen-ID für jedes Mount-Ziel.

Erstellen von Ablaufprotokollen

  1. Öffnen Sie die Amazon EC2-Konsole.
  2. Wählen Sie Netzwerk und Sicherheit und dann Netzwerkschnittstellen aus.
  3. Wählen Sie alle elastischen Netzwerkschnittstellen aus, die vom Mount-Ziel verwendet werden.
  4. Wählen Sie im Menü Aktionen die Option Ablaufprotokoll erstellen aus. Verwenden Sie beim Erstellen des Ablaufprotokolls die folgenden Werte:
  • Name: Optional
  • Filter: Wählen Sie Alles aus
  • Maximales Aggregationsintervall: Wählen Sie aus den Standardeinstellungen 10 Minuten oder 1 Minute
  • Zielort: Wählen Sie An CloudWatch-Protokolle senden
  • Zielprotokollgruppe: Wählen Sie die Protokollgruppe aus, die Sie erstellt haben
  • IAM-Rolle: Wählen Sie die IAM-Rolle, die Sie erstellt haben
  • Format des Protokolldatensatzes: Wählen Sie zwischen dem AWS-Standardformat oder dem benutzerdefinierten Format.
  • Tag: Optional
  1. Wählen Sie Erstellen.
  2. Überwachen Sie den Ablaufprotokoll-Status, indem Sie die spezifische elastische Netzwerkschnittstelle auswählen, für die Sie ein Ablaufprotokoll erstellt haben. Wählen Sie unten auf dem Bildschirm Ablaufprotokolle aus. Stellen Sie sicher, dass der Status auf Aktiv gestellt ist.
  3. Die ersten Ablaufprotokolle werden nach etwa 10 Minuten an CloudWatch Logs übertragen.

Sicherstellen, dass sich die Ablaufprotokolle in CloudWatch Logs wiederfinden

  1. Öffnen Sie die CloudWatch-Konsole und wählen Sie dann Protokolle aus.
  2. Wählen Sie die in Schritt 1 erstellten Protokollgruppen aus.
  3. Stellen Sie sicher, dass alle Protokollstreams, die Sie erstellt haben, jetzt angezeigt werden. Jede elastische Netzwerkschnittstelle hat einen anderen Protokollstream.

Ausführen einer Abfrage

Um eine Abfrage in CloudWatch Logs Insights auszuführen:

  1. Wählen Sie in der CloudWatch-Konsole Protokolle und dann Logs Insights aus.
  2. Wählen Sie im Dropdownmenü die Protokollgruppen aus, die Sie erstellt haben.
  3. Wählen Sie die Dauer aus, für die Sie die Ablaufprotokolle überprüfen möchten (5 min, 30 min, 1 h, 3 h, 12 h oder Benutzerdefiniert).
  4. Geben Sie die folgende Abfrage ein:
fields @timestamp, @message | filter dstPort="2049" | stats count(*) as FlowLogEntries by srcAddr | sort FlowLogEntries desc

Hinweis: Diese Abfrage überprüft alle Ablaufprotokolle, die für alle Mount-Ziele generiert wurden. Sie filtert die Protokolle, deren Zielport auf Port=2049 festgelegt ist (Amazon EFS-Clients stellen eine Verbindung zu Mount-Zielen auf dem NFS-Port 2049 her). Sie ruft alle eindeutigen Quell-IPs (Amazon EFS-Client-IPs) ab und sortiert sie nach den aktivsten Client-Verbindungen. Die Aktivität wird durch die Anzahl der Einträge im Ablaufprotokoll bestimmt.

  • Wählen Sie Abfrage ausführen aus. Die Ausgabe enthält die Liste der privaten IP-Adressen aller Amazon EC2-Instances, auf denen Sie Amazon EFS gemountet haben.

Im Folgenden sehen Sie ein Beispiel für die Abfrageausgabe:

#          srcAddr              FlowLogEntries
1      111.22.33.44                 78
2      111.55.66.77                36
3      111.88.99.000                33

Ausführen einer Abfrage über das AWS CLI <br>

Gehen Sie folgendermaßen vor, um eine Abfrage über das AWS CLI auszuführen:

  1. Nachdem das VPC-Ablaufprotokoll eingerichtet wurde, können Sie einen Befehl im AWS CLI verwenden, um die Abfrage auszuführen.
  2. Stellen Sie sicher, dass das AWS CLI auf die neueste Version aktualisiert wurde:
$ pip install --upgrade awscli
  • Überprüfen Sie, ob jq installiert ist:
yum install -y jq
  • Verwenden Sie die folgende Abfrage im AWS CLI mit diesen Abfrageparametern:
  • Name der Protokollgruppe: Geben Sie den Namen der Protokollgruppe ein, die Sie erstellt haben.
  • Startzeit / Endzeit: Diese Werte sind in Unix/Epoch-Zeit angegeben. Verwenden Sie den Epoch Converter, um vom Menschen lesbare Zeitstempel in Unix/Epoch-Zeit umzuwandeln.
  • test.json: Sie können optional den json-Dateinamen jedes Mal ändern, wenn Sie diesen Befehl ausführen. Wenn Sie den Namen ändern, wird sichergestellt, dass die vorherige Ausgabe nicht mit der neuen Ausgabe zusammengeführt wird.
  • Schlaf: Dieser Wert (in Sekunden) wird als Verzögerung verwendet, während die Abfrage der CloudWatch Logs Insights ausgeführt wird. Der eingegebene Wert hängt davon ab, für welchen Zeitraum Sie die Ablaufprotokolle überprüfen möchten. Wenn Sie die Protokolle für einen längeren Zeitraum, z. B. Wochen, überprüfen möchten, können Sie die Schlafzeit verlängern.
aws logs start-query --log-group-name EFS-ENI-Flowlogs --start-time 1643127618 --end-time 1643128901 --query-string 'filter dstPort="2049" | stats count(*) as FlowLogEntries by srcAddr | sort FlowLogEntries desc' > test.json && sleep 10 && jq .queryId test.json | xargs aws logs get-query-results --query-id

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren