Erstellen eines AMI aus einer Instance-Speicher-Backed Instance - 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.

Erstellen eines AMI aus einer Instance-Speicher-Backed Instance

Die folgenden Verfahren dienen zum Erstellen eines Instance Store-Backed AMI aus einer Instance Store-Backupen Instance. Stellen Sie sicher, dass Sie die Voraussetzungen gelesen haben, bevor Sie beginnen.

Erstellen eines AMI aus einer Instance-Speicher-Backed Amazon-Linux-Instance

In diesem Abschnitt wird die Erstellung eines AMI aus einer Amazon Linux-Instance beschrieben. Die folgenden Verfahren funktionieren unter Umständen nicht für Instances, auf denen andere Linux-Distributionen ausgeführt werden. Informationen zu den Verfahren, die für Ubuntu gelten, erhalten Sie unter Erstellen eines AMI aus einer Instance-Speicher-Backed Ubuntu-Instance.

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 Instance Store-Backupen Amazon Linux-Instance

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

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. Bei einigen Instances ist flüchtiger Speicher eingehängt /mnt oder Sie können /media/ephemeral0 ihn verwenden. Sie können aber auch ein neues Amazon (EBS) -Volume erstellen, anhängen und mounten, um das Paket zu speichern. Weitere Informationen finden Sie unter Erstellen eines Amazon EBS-Volumes 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

      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.

    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 my-s3-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 my-s3-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.

Erstellen eines AMI aus einer Instance-Speicher-Backed Ubuntu-Instance

In diesem Abschnitt wird die Erstellung eines AMI aus einer Ubuntu-Linux-Instance mit einem Instance-Speichervolume als Root-Volume beschrieben. Die folgenden Verfahren funktionieren unter Umständen nicht für Instances, auf denen andere Linux-Distributionen ausgeführt werden. Für Amazon Linux spezifische Vorgehensweisen finden Sie unter Erstellen eines AMI aus einer Instance-Speicher-Backed Amazon-Linux-Instance.

So bereiten Sie die Verwendung der AMI-Tools vor (nur HVM-Instances)

Für die AMI-Tools ist das richtige Starten von GRUB Legacy-System erforderlich. Ubuntu ist jedoch für die Nutzung von GRUB 2 konfiguriert. Sie müssen überprüfen, ob Ihre Instance GRUB Legacy-System nutzt. Falls nicht, sollten Sie die Installation und Konfiguration durchführen.

Außerdem müssen für HVM-Instances Partitionierungstools installiert werden, damit die AMI-Tools richtig funktionieren.

  1. GRUB Legacy-System (Version 0.9x oder niedriger) muss auf Ihrer Instance installiert sein. Prüfen Sie, ob GRUB Legacy-System vorhanden ist, und führen Sie bei Bedarf die Installation durch.

    1. Überprüfen Sie die Version Ihrer GRUB-Installation.

      ubuntu:~$ grub-install --version grub-install (GRUB) 1.99-21ubuntu3.10

      In diesem Beispiel ist die GRUB-Version höher als 0.9x, so dass GRUB Legacy-System installiert werden muss. Fahren Sie mit Schritt 2 fort. Falls GRUB Legacy-System bereits vorhanden ist, können Sie mit Schritt 2 fortfahren.

    2. Installieren Sie das grub-Paket mit dem folgenden Befehl:

      ubuntu:~$ sudo apt-get install -y grub
  2. Installieren Sie die folgenden Pakete für die Partitionsverwaltung, indem Sie den Paket-Manager für Ihre Verteilung verwenden.

    • gdisk (In einigen Verteilungen hat dieses Paket ggf. den Namen gptfdisk.)

    • kpartx

    • parted

    Verwenden Sie den folgenden Befehl.

    ubuntu:~$ sudo apt-get install -y gdisk kpartx parted
  3. Überprüfen Sie die Kernel-Parameter für Ihre Instance.

    ubuntu:~$ cat /proc/cmdline BOOT_IMAGE=/boot/vmlinuz-3.2.0-54-virtual root=UUID=4f392932-ed93-4f8f-aee7-72bc5bb6ca9d ro console=ttyS0 xen_emul_unplug=unnecessary

    Beachten Sie die Optionen, die auf die Parameter für den Kernel und das Root-Gerät folgen: ro, console=ttyS0 und xen_emul_unplug=unnecessary. Ihre Optionen können ggf. hiervon abweichen.

  4. Überprüfen Sie die Kernel-Einträge in /boot/grub/menu.lst.

    ubuntu:~$ grep ^kernel /boot/grub/menu.lst kernel /boot/vmlinuz-3.2.0-54-virtual root=LABEL=cloudimg-rootfs ro console=hvc0 kernel /boot/vmlinuz-3.2.0-54-virtual root=LABEL=cloudimg-rootfs ro single kernel /boot/memtest86+.bin

    Beachten Sie, dass der Parameter console nicht auf hvc0 verweist, sondern auf ttyS0, und dass der Parameter xen_emul_unplug=unnecessary fehlt. Auch hier können Ihre Optionen ggf. abweichen.

  5. Bearbeiten Sie die Datei /boot/grub/menu.lst mit Ihrem bevorzugten Text-Editor (z. B. vim oder nano), um die Konsole zu ändern und die zuvor ermittelten Parameter den Boot-Einträgen hinzuzufügen.

    title Ubuntu 12.04.3 LTS, kernel 3.2.0-54-virtual root (hd0) kernel /boot/vmlinuz-3.2.0-54-virtual root=LABEL=cloudimg-rootfs ro console=ttyS0 xen_emul_unplug=unnecessary initrd /boot/initrd.img-3.2.0-54-virtual title Ubuntu 12.04.3 LTS, kernel 3.2.0-54-virtual (recovery mode) root (hd0) kernel /boot/vmlinuz-3.2.0-54-virtual root=LABEL=cloudimg-rootfs ro single console=ttyS0 xen_emul_unplug=unnecessary initrd /boot/initrd.img-3.2.0-54-virtual title Ubuntu 12.04.3 LTS, memtest86+ root (hd0) kernel /boot/memtest86+.bin
  6. Vergewissern Sie sich, dass Ihre Kernel-Einträge jetzt die richtigen Parameter enthalten.

    ubuntu:~$ grep ^kernel /boot/grub/menu.lst kernel /boot/vmlinuz-3.2.0-54-virtual root=LABEL=cloudimg-rootfs ro console=ttyS0 xen_emul_unplug=unnecessary kernel /boot/vmlinuz-3.2.0-54-virtual root=LABEL=cloudimg-rootfs ro single console=ttyS0 xen_emul_unplug=unnecessary kernel /boot/memtest86+.bin
  7. [Nur für Ubuntu 14.04 und höher] Ab Ubuntu 14.04 werden für Instance Store-Backed Ubuntu-AMIs eine GPT-Partitionstabelle und eine separat gemountete EFI-Partition unter verwende /boot/efi. Mit dem Befehl ec2-bundle-vol wird diese Boot-Partition nicht als Paket gebündelt. Daher müssen Sie den Eintrag /etc/fstab für die EFI-Partition wie im folgenden Beispiel auskommentieren.

    LABEL=cloudimg-rootfs / ext4 defaults 0 0 #LABEL=UEFI /boot/efi vfat defaults 0 0 /dev/xvdb /mnt auto defaults,nobootwait,comment=cloudconfig 0 2
So erstellen Sie ein AMI aus einer Instance Store-Backupen Ubuntu-Instance

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

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:

      ubuntu:~$ 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 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. Bei einigen Instances ist flüchtiger Speicher eingehängt /mnt oder Sie können /media/ephemeral0 ihn verwenden. Sie können aber auch ein neues Amazon (EBS) -Volume erstellen, anhängen und mounten, um das Paket zu speichern. Weitere Informationen finden Sie unter Erstellen eines Amazon EBS-Volumes 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.

      ubuntu:~$ 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@ubuntu:#
    2. Führen Sie den Befehl ec2-bundle-vol wie folgt aus, um das AMI-Paket zu erstellen:

      root@ubuntu:# ec2-bundle-vol -k /tmp/cert/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -c /tmp/cert/cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -u your_aws_account_id -r x86_64 -e /tmp/cert --partition gpt
      Wichtig

      Fügen Sie für Ubuntu 14.04 und höhere HVM-Instances das Flag --partition mbr hinzu, um die Boot-Anweisungen richtig in einem Paket zu bündeln. Andernfalls wird das neu erstellte AMI nicht gestartet.

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

    3. Beenden Sie die root-Shell.

      root@ubuntu:# 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.

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

      ubuntu:~$ 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.

      ubuntu:~$ 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.

      <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:

    ubuntu:~$ ec2-upload-bundle -b my-s3-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:

    ubuntu:~$ 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 unten anstelle von /tmp verwenden.

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

    ubuntu:~$ aws ec2 register-image --image-location my-s3-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.

  7. [Ubuntu 14.04 und höher] Heben Sie die Auskommentierung des EFI-Eintrags in /etc/fstab auf. Andernfalls kann Ihre ausgeführte Instance nicht neu gestartet werden.