Ein Amazon-S3-gestütztes AMI erstellen - Amazon Elastic Compute Cloud

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.

Ein Amazon-S3-gestütztes AMI erstellen

Anhand des AMI, das Sie beim Starten Ihrer Instance angeben, wird der Typ des Root-Volumes ermittelt.

Beginnen Sie auf einer Instance, die Sie über ein vorhandenes Amazon-S3-gestütztes Linux-AMI gestartet haben, um ein Amazon-S3-gestütztes Linux-AMI zu erstellen. Nachdem Sie die Instance an Ihre Anforderungen angepasst haben, können Sie das Volume als Paket bündeln (Bundle) und ein neues AMI erstellen und registrieren, um es zum Starten von neuen Instances mit diesen Anpassungen zu verwenden.

Sie können kein Amazon-S3-gestütztes Windows-AMI erstellen, da Windows-AMIs Instance-Speicher für das Root-Volume nicht unterstützen.

Wichtig

Nur die folgenden Instance-Typen unterstützen ein Instance-Speicher-Volume als Root-Volume und erfordern ein Amazon-S3-gestütztes AMI: C1, C3, D2, I2, M1, M2, M3, R3 und X1.

Für das Erstellen von Amazon EBS-backed AMIs wird ein anderer Prozess verwendet. Weitere Informationen finden Sie unter Ein Amazon-EBS-gestütztes AMI erstellen.

Übersicht über die Erstellung von AMI

Im folgenden Diagramm ist der Prozess zum Erstellen eines AMI aus einer Instance mit einem Instance-Speicher-Root-Volume dargestellt.

Erstellen eines Amazon-S3-gestützten AMI.

Starten Sie zuerst eine Instance über ein AMI, das dem zu erstellenden AMI ähnelt. Sie können eine Verbindung mit Ihrer Instance herstellen und sie anpassen. Wenn die Instance nach Ihren Vorstellungen konfiguriert ist, können Sie dafür ein Paket (Bundle) erstellen. Es dauert mehrere Minuten, bis die Paketerstellung abgeschlossen ist. Nach Abschluss des Prozesses verfügen Sie über ein Paket, das aus einem Image-Manifest (image.manifest.xml) und Dateien (image.part.xx) besteht, die eine Vorlage für das Stamm-Volume enthalten. Als Nächstes laden Sie das Paket in Ihren Amazon S3-Bucket hoch und registrieren anschließend Ihr AMI.

Anmerkung

Um Objekte für Ihr Amazon-S3-gestütztes Linux-AMI in einen S3-Bucket hochzuladen, müssen ACLs für den Bucket aktiviert sein. Andernfalls kann Amazon EC2 keine ACLs für die hochzuladenden Objekte festlegen. Wenn Ihr Ziel-Bucket die erzwungene Einstellung für den Bucket-Eigentümer für S3 Object Ownership verwendet, funktioniert dies nicht, da ACLs deaktiviert sind. Weitere Informationen finden Sie unter Steuern des Eigentums an Objekten und Deaktivieren von ACLs für Ihren Bucket.

Beim Starten einer Instance mit dem neuen AMI erstellen wir das Stamm-Volume für die Instance mithilfe des Pakets, das Sie in Amazon S3 hochgeladen haben. Für den Speicherplatz, der von dem Paket in Amazon S3 verwendet wird, werden Ihrem Konto Kosten berechnet, bis Sie es löschen. Weitere Informationen finden Sie unter Aufheben der Registrierung eines Amazon-EC2-AMI.

Wenn Sie Ihrer Instance zusätzlich zum Root-Volume Instance-Speicher-Volumes hinzufügen, enthält die Blockgerät-Zuweisung für das neue AMI Informationen zu diesen Volumes. Außerdem enthalten die Blockgerät-Zuweisungen für Instances, die Sie über das neue AMI starten, automatisch Informationen zu diesen Volumes. Weitere Informationen finden Sie unter Blockgerät-Zuweisungen auf Amazon-EC2-Instances blockieren.

Voraussetzungen

Bevor Sie ein AMI erstellen können, müssen Sie die folgenden Aufgaben durchführen:

  • Installieren Sie die AMI-Tools. Weitere Informationen finden Sie unter Die Amazon-EC2-AMI-Tools einrichten.

  • Installieren Sie den AWS CLI. Weitere Informationen finden Sie unter Erste Schritte mit AWS CLI.

  • Stellen Sie sicher, dass Sie über einen S3-Bucket für das Bundle verfügen und dass für Ihren Bucket ACLs aktiviert sind. Weitere Informationen zur Konfiguration von ACLs finden Sie unter Konfigurieren von ACLs.

    • Öffnen Sie zum Erstellen eines S3-Buckets mit der AWS-Managementkonsole die Amazon-S3-Konsole unter https://console.aws.amazon.com/s3/ und wählen Sie Bucket erstellen aus.

    • Zum Erstellen eines S3-Buckets mit der AWS CLI, können Sie den Befehl mb verwenden. Wenn Ihre installierte Version der AMI-Tools 1.5.18 oder höher ist, können Sie auch den ec2-upload-bundle-Befehl verwenden, um den S3-Bucket zu erstellen. Weitere Informationen finden Sie unter ec2-upload-bundle.

  • Stellen Sie sicher, dass die Dateien in Ihrem Paket nicht im S3-Bucket verschlüsselt sind. Wenn Sie Verschlüsselung für Ihr AMI benötigen, können Sie stattdessen ein EBS-gestütztes AMI verwenden. Weitere Informationen finden Sie unter Verwenden der Verschlüsselung mit EBS-gestützten AMIs.

  • Stellen Sie sicher, dass Sie über Ihre AWS-Konto-ID verfügen. Weitere Informationen finden Sie unter Anzeigen von AWS-Konto-Identifikatoren im AWS-Referenzhandbuch zur Kontoverwaltung.

  • Stellen Sie sicher, dass Sie über Anmeldeinformationen zur Verwendung von AWS CLI verfügen. Weitere Informationen finden Sie unter Authentifizierung und Zugriffs-Anmeldeinformationen für die AWS CLI im Benutzerhandbuch für AWS Command Line Interface.

  • Stellen Sie sicher, dass Sie über ein X.509-Zertifikat und den entsprechenden privaten Schlüssel verfügen.

    • Informationen zur Erstellung eines X.509-Zertifikats erhalten Sie unter Verwalten von Signaturzertifikaten. Das X.509-Zertifikat und der private Schlüssel werden verwendet, um Ihr AMI zu verschlüsseln und zu entschlüsseln.

    • [China (Peking)] Verwenden Sie das Zertifikat $EC2_AMITOOL_HOME/etc/ec2/amitools/cert-ec2-cn-north-1.pem.

    • [AWS GovCloud (US-West)] Verwenden Sie das $EC2_AMITOOL_HOME/etc/ec2/amitools/cert-ec2-gov.pem-Zertifikat.

  • Stellen Sie eine Verbindung mit Ihrer Instance her und passen Sie sie an. Sie können beispielsweise Software und Anwendungen installieren, Daten kopieren, temporäre Dateien löschen und die Linux-Konfiguration ändern.

Erstellen eines AMI aus einer Amazon-Linux-Instance

Die folgenden Verfahren beschreiben, wie Sie ein AMI aus einer Instance mit einem Instance-Speicher-Root-Volume erstellen, auf der Amazon Linux 1 ausgeführt wird. Sie funktionieren unter Umständen nicht für Instances, auf denen andere Linux-Verteilungen ausgeführt werden.

So bereiten Sie die Verwendung der AMI-Tools vor (nur HVM-Instances)
  1. Für die AMI-Tools ist das richtige Starten von GRUB Legacy-System erforderlich. Verwenden Sie den folgenden Befehl, um GRUB zu installieren:

    [ec2-user ~]$ sudo yum install -y grub
  2. Installieren Sie die Pakete für die Partitionsverwaltung mit dem folgenden Befehl:

    [ec2-user ~]$ sudo yum install -y gdisk kpartx parted
So erstellen Sie ein AMI aus einer Amazon-Linux-Instance mit einem Instance-Speicher-Root-Volume

Hierbei wird vorausgesetzt, dass Sie die Voraussetzungen unter erfüllt habe Voraussetzungen.

Ersetzen Sie in den folgenden Befehlen jeden Platzhalter für Benutzereingaben durch Ihre eigenen Informationen.

  1. Laden Sie Ihre Anmeldeinformationen auf Ihre Instance hoch. Wir verwenden diese Anmeldeinformationen, um sicherzustellen, dass nur Sie und Amazon EC2 Zugriff auf Ihr AMI haben.

    1. Erstellen Sie auf Ihrer Instance wie folgt ein temporäres Verzeichnis für Ihre Anmeldeinformationen:

      [ec2-user ~]$ mkdir /tmp/cert

      Auf diese Weise können Sie Ihre Anmeldeinformationen aus der Image-Erstellung ausschließen.

    2. Kopieren Sie Ihr X.509-Zertifikat und den dazugehörigen privaten Schlüssel von Ihrem Computer in das Verzeichnis /tmp/cert auf Ihrer Instance, indem Sie ein Secure Copy-Tool nutzen, z. B. scp. Die Option -i my-private-key.pem im folgenden scp-Befehl ist der private Schlüssel, den Sie zum Herstellen der Verbindung für Ihre Instance mit SSH verwenden, und nicht der private X.509-Schlüssel. Beispiel:

      you@your_computer:~ $ scp -i my-private-key.pem /path/to/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem /path/to/cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem ec2-user@ec2-203-0-113-25.compute-1.amazonaws.com:/tmp/cert/ pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem 100% 717 0.7KB/s 00:00 cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem 100% 685 0.7KB/s 00:00

    Da dies reine Textdateien sind, können Sie das Zertifikat und den Schlüssel in einem Text-Editor öffnen und den Inhalt jeweils in neue Dateien unter kopiere /tmp/cert.

  2. Bereiten Sie das Paket für den Upload in Amazon S3 vor, indem Sie den Befehl ec2-bundle-vol über Ihre Instance ausführen. Achten Sie darauf, die Option -e anzugeben, um das Verzeichnis auszuschließen, in dem Ihre Anmeldeinformationen gespeichert sind. Während des Paketprozesses werden standardmäßig Dateien ausgeschlossen, die ggf. vertrauliche Informationen enthalten. Dies sind beispielsweise die Dateien *.sw, *.swo, *.swp, *.pem, *.priv, *id_rsa*, *id_dsa* *.gpg, *.jks, */.ssh/authorized_keys und */.bash_history. Verwenden Sie die Option --no-filter, wenn Sie alle diese Dateien einbinden möchten. Mit der Option --include können Sie einzelne Dateien einbinden.

    Wichtig

    Standardmäßig wird beim Prozess zur Erstellung des AMI-Pakets eine komprimierte, verschlüsselte Sammlung von Dateien im Verzeichnis /tmp erstellt, das als Ihr Stamm-Volume dient. Falls unter /tmp nicht genügend freier Speicherplatz zum Speichern des Pakets vorhanden ist, müssen Sie mit der Option -d /path/to/bundle/storage einen anderen Speicherort für das Paket angeben. Einige Instances verfügen über unter /mnt oder /media/ephemeral0 bereitgestellten flüchtigen Speicher, den Sie verwenden können. Alternativ können Sie auch ein neues Amazon-EBS-Volume erstellen, anfügen und bereitstellen, um das Paket zu speichern. Weitere Informationen finden Sie unter Amazon-EBS-Volume erstellen im Amazon-EBS-Benutzerhandbuch.

    1. Sie müssen den ec2-bundle-vol-Befehl als Root-Benutzer ausführen. Für die meisten Befehle können Sie sudo verwenden, um erhöhte Berechtigungen zu erhalten. In diesem Fall sollten Sie aber sudo -E su ausführen, um Ihre Umgebungsvariablen beizubehalten.

      [ec2-user ~]$ sudo -E su

      Beachten Sie, dass Sie in der bash-Eingabeaufforderung nun als root-Benutzer identifiziert werden und dass das Dollarzeichen durch einen Hashtag ersetzt wurde. Hiermit wird angegeben, dass Sie sich in einer root-Shell befinden:

      [root ec2-user]#
    2. Führen Sie den Befehl ec2-bundle-vol wie folgt aus, um das AMI-Paket zu erstellen:

      [root ec2-user]# ec2-bundle-vol -k /tmp/cert/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -c /tmp/cert/cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -u 123456789012 -r x86_64 -e /tmp/cert --partition gpt
      Anmerkung

      Für die Regionen China (Peking) und AWS GovCloud (US-West) verwenden Sie die Parameter --ec2cert und geben Sie die Zertifikate gemäß den Voraussetzungen an.

      Die Image-Erstellung kann einige Minuten dauern. Nach Abschluss dieses Befehls enthält Ihr Verzeichnis /tmp (bzw. das nicht standardmäßige Verzeichnis) das Paket (image.manifest.xml sowie mehrere image.part.xx-Dateien).

    3. Beenden Sie die root-Shell.

      [root ec2-user]# exit
  3. (Optional) Bearbeiten Sie die Blockgerät-Zuweisungen in der Datei image.manifest.xml für Ihr AMI, um mehr Instance-Speicher-Volumes hinzuzufügen. Weitere Informationen finden Sie unter Blockgerät-Zuweisungen auf Amazon-EC2-Instances blockieren.

    1. Erstellen Sie ein Backup der Datei image.manifest.xml.

      [ec2-user ~]$ sudo cp /tmp/image.manifest.xml /tmp/image.manifest.xml.bak
    2. Formatieren Sie die Datei image.manifest.xml neu, damit sie leichter gelesen und bearbeitet werden kann.

      [ec2-user ~]$ sudo xmllint --format /tmp/image.manifest.xml.bak > /tmp/image.manifest.xml
    3. Bearbeiten Sie die Blockgerät-Zuweisungen in image.manifest.xml mit einem Text-Editor. Das Beispiel unten enthält einen neuen Eintrag für das Instance-Speicher-Volume ephemeral1.

      Anmerkung

      Eine Liste der ausgeschlossenen Dateien finden Sie unter ec2-bundle-vol.

      <block_device_mapping> <mapping> <virtual>ami</virtual> <device>sda</device> </mapping> <mapping> <virtual>ephemeral0</virtual> <device>sdb</device> </mapping> <mapping> <virtual>ephemeral1</virtual> <device>sdc</device> </mapping> <mapping> <virtual>root</virtual> <device>/dev/sda1</device> </mapping> </block_device_mapping>
    4. Speichern Sie die Datei image.manifest.xml und beenden Sie den Text-Editor.

  4. Führen Sie den Befehl ec2-upload-bundle wie folgt aus, um Ihr Paket in Amazon S3 hochzuladen:

    [ec2-user ~]$ ec2-upload-bundle -b amzn-s3-demo-bucket/bundle_folder/bundle_name -m /tmp/image.manifest.xml -a your_access_key_id -s your_secret_access_key
    Wichtig

    Wenn Sie Ihr AMI in einer anderen Region als US East (N. Virginia) registrieren möchten, müssen Sie sowohl die Zielregion mit der Option --region als auch einen Bucket-Pfad angeben, der in der Zielregion bereits vorhanden ist (bzw. einen eindeutigen Bucket-Pfad, der in der Zielregion erstellt werden kann).

  5. (Optional) Nach dem Upload des Pakets in Amazon S3 können Sie das Paket mit dem folgenden /tmp-Befehl aus dem Verzeichnis rm auf der Instance entfernen:

    [ec2-user ~]$ sudo rm /tmp/image.manifest.xml /tmp/image.part.* /tmp/image
    Wichtig

    Wenn Sie mit der Option -d /path/to/bundle/storage einen Pfad in Schritt 2 angegeben haben, sollten Sie diesen Pfad anstelle von /tmp verwenden.

  6. Führen Sie den Befehl register-image wie folgt aus, um Ihr AMI zu registrieren:

    [ec2-user ~]$ aws ec2 register-image --image-location amzn-s3-demo-bucket/bundle_folder/bundle_name/image.manifest.xml --name AMI_name --virtualization-type hvm
    Wichtig

    Wenn Sie zuvor für den Befehl ec2-upload-bundle eine Region angegeben haben, müssen Sie die entsprechende Region für diesen Befehl noch einmal angeben.