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.
Eine neue Version eines Container-Rezepts erstellen
In diesem Abschnitt erfahren Sie, wie Sie eine neue Version eines Container-Rezepts erstellen.
Inhalt
Erstellen Sie mit der Konsole eine neue Container-Rezeptversion
Das Erstellen einer neuen Version eines Container-Rezepts entspricht praktisch dem Erstellen eines neuen Rezepts. Der Unterschied besteht darin, dass in den meisten Fällen bestimmte Details so ausgewählt sind, dass sie dem Basisrezept entsprechen. In der folgenden Liste werden die Unterschiede zwischen dem Erstellen eines neuen Rezepts und dem Erstellen einer neuen Version eines vorhandenen Rezepts beschrieben.
Einzelheiten zum Rezept
-
Name — nicht editierbar.
-
Version — Erforderlich. Dieses Detail ist nicht mit der aktuellen Version oder einer Sequenz vorausgefüllt. Geben Sie die Versionsnummer, die Sie erstellen möchten, im Format major.minor.patch ein. Wenn die Version bereits existiert, tritt ein Fehler auf.
Basisbild
-
Bildoption auswählen — Vorausgewählt, aber editierbar. Wenn Sie Ihre Wahl für die Quelle Ihres Basisimages ändern, gehen möglicherweise weitere Details verloren, die von der ursprünglich ausgewählten Option abhängen.
Um Details zu sehen, die mit Ihrer Auswahl des Basisimages verknüpft sind, wählen Sie die Registerkarte, die Ihrer Auswahl entspricht.
Instance-Konfiguration
-
AMIID — Vorausgefüllt, aber editierbar.
-
Speicher (Volumen)
EBSBand 1 (AMIRoot) — Vorgefüllt. Sie können das Root-Volume, den Gerätenamen, den Snapshot oder die IOPSAuswahl nicht bearbeiten. Sie können jedoch alle übrigen Einstellungen ändern, z. B. die Größe. Sie können auch neue Volumes hinzufügen.
Anmerkung
Wenn Sie eine Base angegeben habenAMI, die von einem anderen Konto aus mit Ihnen geteilt wurde, müssen die Snapshots für alle angegebenen sekundären Volumes auch mit Ihrem Konto geteilt werden.
Arbeitsverzeichnis
-
Pfad zum Arbeitsverzeichnis — Vorausgefüllt, aber editierbar.
Komponenten
Komponenten — Komponenten, die bereits in der Rezeptur enthalten sind, werden im Abschnitt Ausgewählte Komponenten am Ende jeder Komponentenliste (Build und Test) angezeigt. Sie können die ausgewählten Komponenten je nach Bedarf entfernen oder neu anordnen.
CISDas Härten von Komponenten entspricht nicht den Standardregeln für die Reihenfolge der Komponenten in Image Builder Builder-Rezepten. Die CIS Härtungskomponenten werden immer zuletzt ausgeführt, um sicherzustellen, dass die Benchmark-Tests anhand Ihres Ausgabebilds ausgeführt werden.
Anmerkung
In den Listen der Build- und Testkomponenten werden die verfügbaren Komponenten basierend auf dem Typ des Komponentenbesitzers angezeigt. Um Komponenten für Ihr Rezept hinzuzufügen oder zu aktualisieren, wählen Sie den Besitzertyp für die Komponente aus, nach der Sie suchen. Wenn Sie beispielsweise eine Komponente hinzufügen möchten, die mit einem Basis-Image verknüpft ist, das Sie abonniert haben AWS Marketplace, wählen Sie in der Liste mit dem Besitzertyp neben der Suchleiste einen Eintrag
Third party managed
aus.Sie können die folgenden Einstellungen für die ausgewählte Komponente konfigurieren:
-
Versionierungsoptionen — Vorausgewählt, aber Sie können sie ändern. Wir empfehlen Ihnen, die Option Letzte verfügbare Komponentenversion verwenden zu wählen, um sicherzustellen, dass Ihre Image-Builds immer die neueste Version der Komponente verwenden. Wenn Sie in Ihrem Rezept eine bestimmte Komponentenversion verwenden müssen, können Sie Komponentenversion angeben wählen und die Version in das angezeigte Feld Komponentenversion eingeben.
-
Eingabeparameter — Zeigt Eingabeparameter an, die die Komponente akzeptiert. Der Wert ist bereits mit dem Wert aus der vorherigen Version des Rezepts gefüllt. Wenn Sie diese Komponente zum ersten Mal in diesem Rezept verwenden und ein Standardwert für den Eingabeparameter definiert wurde, wird der Standardwert im Feld Wert mit ausgegrautem Text angezeigt. Wenn kein anderer Wert eingegeben wird, verwendet Image Builder den Standardwert.
Wenn ein Eingabeparameter erforderlich ist, aber in der Komponente kein Standardwert definiert ist, müssen Sie einen Wert angeben. Image Builder erstellt die Rezeptversion nicht, wenn erforderliche Parameter fehlen und für die kein Standardwert definiert ist.
Wichtig
Bei den Komponentenparametern handelt es sich um reine Textwerte, die angemeldet sind AWS CloudTrail. Wir empfehlen, dass Sie AWS Secrets Manager oder den AWS Systems Manager Parameter Store verwenden, um Ihre Geheimnisse zu speichern. Weitere Informationen zu Secrets Manager finden Sie unter Was ist Secrets Manager? im AWS Secrets Manager Benutzerhandbuch. Weitere Informationen zum AWS Systems Manager Parameterspeicher finden Sie unter AWS Systems Manager Parameterspeicher im AWS Systems Manager Benutzerhandbuch.
Um die Einstellungen für Versionierungsoptionen oder Eingabeparameter zu erweitern, können Sie den Pfeil neben dem Namen der Einstellung wählen. Um alle Einstellungen für alle ausgewählten Komponenten zu erweitern, können Sie den Schalter Alle erweitern aus- und einschalten.
-
Dockerfile-Vorlage
-
Dockerfile-Vorlage — Vorgefüllt, aber editierbar. Sie können jede der folgenden Kontextvariablen angeben, die Image Builder zur Laufzeit durch Buildinformationen ersetzt.
- parentImage (erforderlich)
-
Bei der Erstellung wird diese Variable in das Basis-Image für Ihr Rezept aufgelöst.
Beispiel:
FROM {{{ imagebuilder:parentImage }}}
- Umgebungen (erforderlich, wenn Komponenten angegeben sind)
-
Diese Variable wird in ein Skript aufgelöst, das Komponenten ausführt.
Beispiel:
{{{ imagebuilder:environments }}}
- Komponenten (optional)
-
Image Builder löst Build- und Testkomponentenskripts für die Komponenten auf, die das Container-Rezept enthält. Diese Variable kann an einer beliebigen Stelle im Dockerfile hinter der Umgebungsvariablen platziert werden.
Beispiel:
{{{ imagebuilder:components }}}
Ziel-Repository
-
Name des Ziel-Repositorys — Das ECR Amazon-Repository, in dem Ihr Ausgabe-Image gespeichert ist, sofern in der Verteilungskonfiguration Ihrer Pipeline kein anderes Repository für die Region angegeben ist, in der die Pipeline ausgeführt wird (Region 1).
So erstellen Sie eine neue Container-Rezeptversion:
-
Wählen Sie oben auf der Seite mit den Container-Rezeptdetails die Option Neue Version erstellen aus. Sie werden zur Seite „Rezept erstellen“ für Container-Rezepte weitergeleitet.
-
Um die neue Version zu erstellen, nehmen Sie Ihre Änderungen vor und wählen Sie dann Rezept erstellen.
Weitere Informationen zum Erstellen eines Container-Rezepts beim Erstellen einer Image-Pipeline finden Sie Schritt 2: Wählen Sie ein Rezept im Abschnitt Erste Schritte dieses Handbuchs.
Erstellen Sie ein Container-Rezept mit dem AWS CLI
Gehen Sie wie folgt vor, um ein Image Builder Builder-Container-Rezept mit dem imagebuilder
create-container-recipe
Befehl in der AWS CLI zu erstellen:
Voraussetzungen
Bevor Sie die Image Builder Builder-Befehle in diesem Abschnitt ausführen, um ein Container-Rezept mit dem zu erstellen AWS CLI, müssen Sie die Komponenten erstellen, die das Rezept verwenden soll. Das Beispiel für ein Container-Rezept im folgenden Schritt bezieht sich auf Beispielkomponenten, die im Erstellen Sie eine benutzerdefinierte Komponente aus dem AWS CLI Abschnitt dieses Handbuchs erstellt wurden.
Nachdem Sie Ihre Komponenten erstellt haben oder wenn Sie vorhandene Komponenten verwenden, notieren Sie sich, ARNs welche Komponenten Sie in das Rezept aufnehmen möchten.
-
Erstellen Sie eine CLI JSON Eingabedatei
Sie können die gesamte Eingabe für den create-container-recipe Befehl mit Inline-Befehlsparametern bereitstellen. Der resultierende Befehl kann jedoch ziemlich lang sein. Um den Befehl zu vereinfachen, können Sie stattdessen eine JSON Datei bereitstellen, die alle Rezepteinstellungen des Containers enthält
Anmerkung
Die Benennungskonvention für die Datenwerte in der JSON Datei folgt dem Muster, das für die Image Builder API Builder-Aktionsanforderungsparameter angegeben ist. Informationen zu den API Befehlsanforderungsparametern finden Sie unter dem CreateContainerRecipeBefehl in der EC2Image Builder API Builder-Referenz.
Informationen zur Bereitstellung der Datenwerte als Befehlszeilenparameter finden Sie in den Parameternamen, die in der AWS CLI Befehlsreferenz angegeben sind.
Im Folgenden finden Sie eine Zusammenfassung der Parameter in diesem Beispiel:
-
components (Array von Objekten, erforderlich) — Enthält ein Array von
ComponentConfiguration
Objekten. Es muss mindestens eine Build-Komponente angegeben werden:Anmerkung
Image Builder installiert Komponenten in der Reihenfolge, in der Sie sie im Rezept angegeben haben. Die CIS Härtungskomponenten werden jedoch immer zuletzt ausgeführt, um sicherzustellen, dass die Benchmark-Tests anhand Ihres Ausgabebilds ausgeführt werden.
-
component ARN (string, erforderlich) — Die KomponenteARN.
Tipp
Wenn Sie das Beispiel verwenden möchten, um Ihr eigenes Container-Rezept zu erstellen, ersetzen Sie das Beispiel ARNs durch das ARNs für die Komponenten, die Sie für Ihr Rezept verwenden,. Dazu gehören jeweils der AWS-Region Name und die Versionsnummer.
Parameter (Anordnung von Objekten) — Enthält eine Reihe von
ComponentParameter
Objekten. Wenn ein Eingabeparameter erforderlich ist, aber in der Komponente kein Standardwert definiert ist, müssen Sie einen Wert angeben. Image Builder erstellt die Rezeptversion nicht, wenn erforderliche Parameter fehlen und für die kein Standardwert definiert ist.Wichtig
Bei den Komponentenparametern handelt es sich um reine Textwerte, die angemeldet sind AWS CloudTrail. Wir empfehlen, dass Sie AWS Secrets Manager oder den AWS Systems Manager Parameter Store verwenden, um Ihre Geheimnisse zu speichern. Weitere Informationen zu Secrets Manager finden Sie unter Was ist Secrets Manager? im AWS Secrets Manager Benutzerhandbuch. Weitere Informationen zum AWS Systems Manager Parameterspeicher finden Sie unter AWS Systems Manager Parameterspeicher im AWS Systems Manager Benutzerhandbuch.
-
name (string, erforderlich) — Der Name des festzulegenden Komponentenparameters.
-
value (Zeichenkettenarray, erforderlich) — Enthält ein Array von Zeichenketten, um den Wert für den benannten Komponentenparameter festzulegen. Wenn für die Komponente ein Standardwert definiert ist und kein anderer Wert angegeben wird, wird der Standardwert AWSTOE verwendet.
-
-
-
containerType(string, erforderlich) — Der Typ des zu erstellenden Containers. Zu den gültigen Werten gehören
DOCKER
. -
dockerfileTemplateData(string) — Die Dockerfile-Vorlage, die zum Erstellen Ihres Images verwendet wird, ausgedrückt als Inline-Datenblob.
-
name (string, erforderlich) — Der Name des Container-Rezepts.
-
description (string) — Die Beschreibung des Container-Rezepts.
-
parentImage(string, erforderlich) — Bild, das das Container-Rezept als Grundlage für Ihr benutzerdefiniertes Bild verwendet. Der Wert kann das Basis-Image ARN oder eine AMI ID sein.
-
platformOverride(Zeichenfolge) — Gibt die Betriebssystemplattform an, wenn Sie ein benutzerdefiniertes Basisimage verwenden.
-
semanticVersion<major>(string, erforderlich) — Die semantische Version des Container-Rezepts, angegeben im folgenden Format, mit numerischen Werten an jeder Position, um eine bestimmte Version anzugeben:. <minor>. <patch>. Ein Beispiel wäre
1.0.0
. Weitere Informationen zur semantischen Versionierung für Image Builder Builder-Ressourcen finden Sie unter. Semantische Versionierung in Image Builder -
tags (String-Map) — Tags, die an das Container-Rezept angehängt sind.
-
instanceConfiguration(Objekt) — Eine Gruppe von Optionen, die verwendet werden können, um eine Instanz zum Erstellen und Testen von Container-Images zu konfigurieren.
-
image (string) — Die AMI ID, die als Basisimage für eine Container-Build- und Testinstanz verwendet werden soll. Wenn Sie diesen Wert nicht angeben, verwendet Image Builder das entsprechende Amazon, das AMI als Basis-Image ECS optimiert ist.
-
blockDeviceMappings(Array von Objekten) — Definiert die Blockgeräte, die angeschlossen werden sollen, um eine Instanz aus dem im image Parameter AMI angegebenen Image Builder zu erstellen.
-
deviceName(string) — Das Gerät, für das diese Zuordnungen gelten.
-
ebs (object) — Wird verwendet, um die EBS Amazon-spezifische Konfiguration für dieses Mapping zu verwalten.
-
deleteOnTermination(Boolean) — Wird verwendet, um das Löschen bei Beendigung des zugehörigen Geräts zu konfigurieren.
-
encrypted (Boolean) — Wird zur Konfiguration der Geräteverschlüsselung verwendet.
-
volumeSize(Ganzzahl) — Wird verwendet, um die Volumengröße des Geräts zu überschreiben.
-
volumeType(string) — Wird verwendet, um den Lautstärketyp des Geräts zu überschreiben.
-
-
-
-
targetRepository(object, erforderlich) — Das Ziel-Repository für das Container-Image, falls in der Verteilungskonfiguration Ihrer Pipeline für die Region, in der die Pipeline läuft (Region 1), kein anderes Repository angegeben ist.
-
repositoryName(string, erforderlich) — Der Name des Container-Repositorys, in dem das Ausgabe-Container-Image gespeichert ist. Diesem Namen wird der Speicherort des Repositorys vorangestellt.
-
service (string, erforderlich) — Gibt den Dienst an, in dem dieses Image registriert wurde.
-
-
workingDirectory(string) — Das Arbeitsverzeichnis für die Verwendung bei Build- und Test-Workflows.
{ "components": [ { "componentArn": "arn:aws:imagebuilder:us-east-1:123456789012:component/helloworldal2/x.x.x" } ], "containerType": "DOCKER", "description": "My Linux Docker container image", "dockerfileTemplateData": "FROM {{{ imagebuilder:parentImage }}}\n{{{ imagebuilder:environments }}}\n{{{ imagebuilder:components }}}", "name": "amazonlinux-container-recipe", "parentImage": "amazonlinux:latest", "platformOverride": "Linux", "semanticVersion": "1.0.2", "tags": { "sometag" : "Tag detail" }, "instanceConfiguration": { "image": "ami-1234567890", "blockDeviceMappings": [ { "deviceName": "/dev/xvda", "ebs": { "deleteOnTermination": true, "encrypted": false, "volumeSize": 8, "volumeType": "gp2" } } ] }, "targetRepository": { "repositoryName": "myrepo", "service": "ECR" }, "workingDirectory": "/tmp" }
-
-
Erstellen Sie das Rezept
Verwenden Sie den folgenden Befehl, um das Rezept zu erstellen. Geben Sie den Namen der JSON Datei, die Sie im vorherigen Schritt erstellt haben, in den
--cli-input-json
Parameter ein:aws imagebuilder create-container-recipe --cli-input-json file://
create-container-recipe.json
Anmerkung
-
Sie müssen die
file://
Notation am Anfang des JSON Dateipfads angeben. -
Der Pfad für die JSON Datei sollte der entsprechenden Konvention für das Basisbetriebssystem entsprechen, auf dem Sie den Befehl ausführen. Windows verwendet beispielsweise den umgekehrten Schrägstrich (\), um auf den Verzeichnispfad zu verweisen, und Linux verwendet den Schrägstrich (/).
-