

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.

# Beispiel-Image-Beschreibung für Amazon Linux 2023 erstellen
<a name="build-sample-ami"></a>

AWS bietet ein Beispiel für eine Amazon Linux 2023-Imagebeschreibung, die Sie als Ausgangspunkt für die Erstellung Ihres eigenen benutzerdefinierten Attestable AMIs für Ihre Workloads verwenden können. Die Beispiel-Image-Beschreibung umfasst Amazon Linux 2023 als Basisbetriebssystem, `dm-verity`- und `erofs`-Konfigurationen für die Unveränderlichkeit des Dateisystems. Außerdem wird jeglicher interaktiver Zugriff (wie SSH, EC2-Instance-Verbindung und serielle Konsole) entfernt, um eine isolierte Rechenumgebung zu schaffen. Weitere Informationen über die Beispiel-Image-Beschreibung finden Sie im [Github-Repo](https://github.com/amazonlinux/kiwi-image-descriptions-examples).

Die Beispiel-Image-Beschreibung installiert automatisch die NitroTPM-Tools (`nitro-tpm-pcr-compute` und `nitro-tpm-attest`) im erstellten Image im Verzeichnis `/usr/bin/`. Dadurch wird sichergestellt, dass die Tools auf Instances vorinstalliert sind, die über das AMI gestartet werden.

Die Beispiel-Image-Beschreibung umfasst ein Skript, `edit_boot_install.sh`, das die Befehle enthält, die zum Generieren der Referenzmessungen erforderlich sind. Das Skript hängt die von KIWI NG erstellte rohe Festplatten-Image-Datei (`.raw`) auf einem Loopback-Gerät ein, lokalisiert die UKI mit der Dateierweiterung `.efi` und führt dann das Hilfsprogramm `nitro-tpm-pcr-compute` aus, um die Referenzmessungen für das AMI zu generieren. Das Skript wird während der Build-Zeit automatisch von KIWI NG ausgeführt.

In diesem Tutorial erfahren Sie, wie Sie die Beispiel-Image-Beschreibung erstellen, um ein attestierbares AMI zu erstellen.

Weitere Informationen zum Erstellen eigener Image-Beschreibungen finden Sie in der folgenden KIWI-NG-Dokumentation:
+ [Schnellstart](https://osinside.github.io/kiwi/quickstart.html)
+ [Image-Beschreibung](https://osinside.github.io/kiwi/image_description.html)
+ [Beispiel-Image-Beschreibung für Amazon Linux 2023](https://github.com/amazonlinux/kiwi-image-descriptions-examples)

Voraussetzungen

Ihre IAM-Identität muss über die folgenden Berechtigungen verfügen, um dieses Tutorial abschließen zu können:
+ `ebs:CompleteSnapshot``ebs:StartSnapshot`, und weiter `ebs:PutSnapshotBlock` `arn:aws:ec2:*::snapshot/*`
+ `ec2:RegisterImage`auf allen Ressourcen

**So erstellen Sie eine Beispiel-Image-Beschreibung für Amazon Linux 2023 mit KIWI NG**

1. Starten Sie eine Amazon EC2 EC2-Instance mit dem neuesten AL2023 AMI. Um sicherzustellen, dass Ihre Instance über ausreichend Speicherplatz für die Erstellung des AMI verfügt, stellen Sie sicher, dass Sie mindestens 12 GB Speicher bereitstellen.

1. Installieren Sie die erforderlichen Abhängigkeiten. Der folgende Befehl installiert die folgenden Hilfsprogramme:
   + `kiwi-cli`
   + `veritysetup`
   + `erofs-utils`
   + `aws-nitro-tpm-tools`

   ```
   sudo dnf install -y kiwi-cli python3-kiwi kiwi-systemdeps-core python3-poetry-core qemu-img veritysetup erofs-utils git cargo aws-nitro-tpm-tools
   ```

1. Installieren Sie das Hilfsprogramm `coldsnap`. Mit diesem Hilfsprogramm können Sie Amazon-EBS-Snapshots aus Image-Rohdaten erstellen. Sie verwenden dieses Hilfsprogramm, um einen EBS-Snapshot aus der von KIWI NG erstellten rohen Festplatten-Image-Datei zu erstellen.

   ```
   git clone https://github.com/awslabs/coldsnap.git
   cd coldsnap
   cargo install --locked coldsnap
   cd ..
   ```

1. Rufen Sie die Dateien der Beispiel-Image-Beschreibung ab.

   ```
   sudo dnf install kiwi-image-descriptions-examples
   ```

   Die Dateien der Beispiel-Image-Beschreibung werden in das folgende Verzeichnis heruntergeladen: `/usr/share/kiwi-image-descriptions-examples/al2023/attestable-image-example`

1. Erstellen Sie die Beispiel-Image-Beschreibung mit dem KIWI-NG-Befehl `system build`. Mit dem folgenden Befehl wird eine rohe Festplatten-Image-Datei im Verzeichnis `./image` erstellt.

   ```
   sudo kiwi-ng \
   --color-output \
   --loglevel 0 \
   system build \
   --description /usr/share/kiwi-image-descriptions-examples/al2023/attestable-image-example \
   --target-dir ./image
   ```

   Weitere Informationen finden Sie in der Dokumentation [kiwi-ng system build](https://osinside.github.io/kiwi/commands/system_build.html).

1. Rufen Sie die Referenzmessungen für das AMI ab. Die Messungen werden vom Hilfsprogramm `nitro-tpm-pcr-compute` während der Image-Erstellung im vorherigen Schritt generiert. Sie können die Referenzmessungen in der folgenden Datei finden: `./image/pcr_measurements.json`.

   Die Messungen werden im folgenden JSON-Format bereitgestellt:

   ```
   {
     "Measurements": {
       "HashAlgorithm": "SHA384 { ... }",
       "PCR4": "PCR4_measurement",
       "PCR7": "PCR7_measurement",
       "PCR12": "PCR12_measurement"
     }
   }
   ```

1. Verwenden Sie das Hilfsprogramm `coldsnap`, um das von KIWI NG erstellte rohe Festplatten-Image in einen EBS-Snapshot hochzuladen. Der Befehl gibt die Snapshot-ID zurück. Notieren Sie sich die ID, die Sie im nächsten Schritt benötigen.

   ```
   SNAPSHOT=$(.cargo/bin/coldsnap upload ./image/al2023*.raw)
   echo "Created snapshot: $SNAPSHOT"
   ```

   Weitere Informationen über das `coldsnap` Hilfsprogramm finden Sie im [ GitHub Coldsnap-Repo](https://github.com/awslabs/coldsnap).

1. Registrieren Sie ein TPM-2.0-fähiges AMI im UEFI-Startmodus mithilfe des Snapshots aus dem vorherigen Schritt. Geben Sie bei `--architecture` den Wert `x86_64` für Intel oder `arm64` für Graviton an.

   ```
   aws ec2 register-image \
   --name "attestable_isolated_al2023_ami" \
   --virtualization-type hvm \
   --boot-mode uefi \
   --architecture x86_64|arm64 \
   --root-device-name /dev/xvda \
   --block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=${SNAPSHOT}} \
   --tpm-support v2.0 \
   --ena-support
   ```