Wie kann ich Benutzerdaten verwenden, um bei jedem Neustart meiner Amazon EC2 Linux-Instance automatisch ein Skript auszuführen?

Lesedauer: 3 Minute
0

Ich möchte Benutzerdaten verwenden, um bei jedem Neustart meiner Amazon Elastic Compute Cloud (Amazon EC2)-Instance ein Skript auszuführen. Wie kann ich das machen?

Kurzbeschreibung

Standardmäßig werden Benutzerdatenskripts und Cloud-Init-Direktiven nur während des ersten Startzyklus ausgeführt, wenn eine EC2-Instance gestartet wird. Sie können Ihr Benutzerdatenskript und Ihre Cloud-Init-Direktiven jedoch mit einer mehrteiligen MIME-Datei konfigurieren. Eine mehrteilige MIME-Datei ermöglicht es Ihrem Skript, zu überschreiben, wie oft Benutzerdaten im Cloud-Init-Paket ausgeführt werden. Anschließend führt die Datei das Benutzerskript. Weitere Informationen zu mehrteiligen MIME-Dateien finden Sie unter Mime Multi Part Archive auf der Cloud-Init-Website.

**Hinweis:**Es empfiehlt sich, einen Snapshot Ihrer Instance zu erstellen, bevor Sie mit der folgenden Lösung fortfahren.

Behebung

**Warnung:**Bevor Sie mit diesem Verfahren beginnen, überprüfen Sie Folgendes:

  • Durch das Stoppen und Starten der Instance werden alle Daten auf Instance-Speicher-Volumes gelöscht. Stellen Sie sicher, dass Sie alle Daten auf den Instance-Speicher-Volumes sichern, die Sie behalten möchten. Weitere Informationen finden Sie unter Ermitteln des Root-Gerätetyps Ihrer Instance.
  • Wenn Ihre EC2-Instance eine automatisch zugewiesene öffentliche IPv4-Adresse hat, führt das Stoppen und Starten der Instance dazu, dass sich die IPv4-Adresse ändert. Wenn die Instance über eine statische öffentliche IPv4-Adresse verfügen muss, sollten Sie die Verwendung einer Elastic-IP-Adresse in Betracht ziehen. Elastische IP-Adressen bleiben auch nach dem Stoppen und Starten einer Instance bestehen.

1.Stellen Sie sicher, dass die neueste Version von cloud-init auf Ihrer EC2-Instance installiert ist und ordnungsgemäß funktioniert.

2.Erstellen Sie aus Sicherheitsgründen eine IAM-Richtlinie, um die Benutzer einzuschränken, die Benutzerdaten über die ModifyInstanceAttribute-API hinzufügen oder entfernen dürfen.

3.Öffnen Sie die Amazon EC2-Konsole.

4.Stoppen Ihrer Instance.

5.Wählen Sie Aktionen, Instance-Einstellungen und dann Benutzerdaten bearbeiten.

6.Kopieren Sie Ihr Benutzerskript in das Feld Benutzerdaten bearbeiten, und wählen Sie dann Speichern.

Das folgende Beispiel ist ein Shell-Skript, das „Hello World“ in eine testfile.txt-Datei in einem /tmp-Verzeichnis schreibt.

Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0

--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"

#cloud-config
cloud_final_modules:
- [scripts-user, always]

--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"

#!/bin/bash
/bin/echo "Hello World" >> /tmp/testfile.txt
--//--

Standardmäßig erlaubt Cloud-init jeweils nur einen Inhaltstyp in Benutzerdaten. Dieses Beispiel zeigt jedoch sowohl die Inhaltstypen text/cloud-config als auch text/x-shellscript in einer mehrteiligen MIME-Datei.

Der Inhaltstyp text/cloud-config überschreibt, wie oft Benutzerdaten im Paket cloud-init ausgeführt werden, indem der SCRIPTS-USER-Parameter auf ALWAYS gesetzt wird.

Der Inhaltstyp text/x-shellscript stellt das eigentliche Benutzerskript bereit, das vom Cloud-Init-Modul cloud_final_modules ausgeführt wird. In diesem Beispiel muss nur eine Zeile ausgeführt werden, nämlich /bin/echo „Hello World. ">> /tmp/testfile.txt.

**Hinweis:**Ersetzen Sie die Zeile /bin/echo „Hello World.">> /tmp/testfile.txt mit dem Shell-Skript, das Sie beim Instance-Start ausführen möchten.

7.Starten Sie Ihre EC2-Instance erneut und überprüfen Sie, ob Ihr Skript korrekt ausgeführt wird.


Verwandte Informationen

Führen Sie beim Start Befehle auf Ihrer Linux-Instance aus

Führen Sie beim Start Befehle auf Ihrer Windows-Instance aus

AWS Systems Manager Automation

Benutzerdatenformate

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren