Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Crea una nuova versione di una ricetta contenitore
Questa sezione mostra come creare una ricetta contenitore o una nuova versione di una ricetta esistente. Una ricetta contenitore definisce tre elementi chiave: l'immagine di base, i componenti di compilazione e il repository di destinazione. Usa questa ricetta per produrre immagini di Docker contenitori che Image Builder archivia in Amazon ECR.
Indice
Crea una nuova versione della ricetta del contenitore con la console
Creare una nuova versione di una ricetta contenitore è praticamente la stessa cosa che creare una nuova ricetta. La differenza è che alcuni dettagli sono preselezionati in base alla ricetta di base, nella maggior parte dei casi. L'elenco seguente descrive le differenze tra la creazione di una nuova ricetta e la creazione di una nuova versione di una ricetta esistente.
Dettagli della ricetta
-
Nome: non modificabile.
-
Versione: obbligatoria. Questo dettaglio non è precompilato con la versione corrente o con alcun tipo di sequenza. Immettete il numero di versione che desiderate creare nel formato major.minor.patch. Se la versione esiste già, Image Builder restituisce un errore.
Immagine di base
-
Seleziona l'opzione dell'immagine Pre-selected, ma modificabile. Se modificate la scelta della fonte dell'immagine di base, potreste perdere altri dettagli che dipendono dall'opzione originale scelta.
Per le immagini dei Docker container, puoi scegliere tra immagini pubbliche ospitate suDockerHub, immagini di container esistenti in Amazon ECR o immagini di Amazon-managed container. Per visualizzare i dettagli associati alla selezione dell'immagine di base, scegli la scheda corrispondente alla selezione.
Configurazione dell’istanza
-
Sorgente AMI (obbligatorio): identifica un AMI personalizzato da utilizzare come immagine di base per la creazione e l'istanza di test del contenitore. Può essere un ID AMI o un parametro AWS Systems Manager (SSM) Parameter Store che contiene un ID AMI.
-
ID AMI: questa impostazione non è precompilata con l'immissione originale. Inserisci l'ID AMI per l'immagine di base. Esempio:
.ami-1234567890abcdef1 -
Parametro SSM: inserisci il nome o l'ARN del parametro SSM Parameter Store che contiene l'ID AMI per l'immagine di base. Esempio:
o/ib/test/paramarn:aws:ssm:.us-east-1:111122223333:parameter/ib/test/param
-
-
Storage (volumi)
EBS volume 1 (radice AMI) — Pre-filled. Non è possibile modificare le selezioni Device Name, Snapshot o IOPS del volume root. Tuttavia, è possibile modificare tutte le impostazioni rimanenti, ad esempio la dimensione. Puoi anche aggiungere nuovi volumi.
Nota
Se hai specificato un'AMI di base che è stata condivisa con te da un altro account, anche le istantanee per tutti i volumi secondari specificati devono essere condivise con il tuo account.
Directory di lavoro
-
Percorso della directory di lavoro Pre-filled, ma modificabile.
Componenti
Componenti: i componenti già inclusi nella ricetta vengono visualizzati nella sezione Componenti selezionati alla fine di ogni elenco di componenti (build e test). È possibile rimuovere o riordinare i componenti selezionati in base alle proprie esigenze.
I componenti di protezione avanzata CIS non seguono le regole standard di ordinamento dei componenti nelle ricette di Image Builder. I componenti di protezione avanzata CIS funzionano sempre per ultimi per garantire che i test di benchmark vengano eseguiti rispetto all'immagine di output.
Nota
Gli elenchi dei componenti di compilazione e test mostrano i componenti disponibili in base al tipo di proprietario del componente. Per aggiungere un componente, scegli Aggiungi componenti di compilazione e seleziona il filtro di proprietà applicabile. Ad esempio, per aggiungere un componente di compilazione associato a un AWS Marketplace prodotto, seleziona
AWS Marketplace. Si apre un pannello di selezione sul lato destro dell'interfaccia della console che elenca AWS Marketplace i componenti.Per il componente CIS, selezionare.
Third party managedÈ possibile configurare le seguenti impostazioni per il componente selezionato:
-
Opzioni di controllo delle versioni Pre-selected, ma è possibile modificarle. Ti consigliamo di scegliere l'opzione Usa l'ultima versione disponibile del componente per assicurarti che le tue build di immagini utilizzino sempre la versione più recente del componente. Se devi utilizzare una versione specifica del componente nella tua ricetta, puoi scegliere Specificare la versione del componente e inserire la versione nella casella Versione del componente che appare.
-
Parametri di input: visualizza i parametri di input accettati dal componente. Il valore è precompilato con il valore della versione precedente della ricetta. Se si utilizza questo componente per la prima volta in questa ricetta ed è stato definito un valore predefinito per il parametro di input, il valore predefinito viene visualizzato nella casella Valore con testo in grigio. Se non viene immesso nessun altro valore, Image Builder utilizza il valore predefinito.
Se un parametro di input è obbligatorio, ma non ha un valore predefinito definito nel componente, è necessario fornire un valore. Image Builder non creerà la versione della ricetta se mancano dei parametri obbligatori e non è stato definito un valore predefinito.
Importante
I parametri dei componenti sono valori di testo semplice e vengono registrati. AWS CloudTrail Ti consigliamo di utilizzare AWS Secrets Manager o AWS Systems Manager Parameter Store per archiviare i tuoi segreti. Per ulteriori informazioni su Secrets Manager, vedi Cos'è Secrets Manager? nella Guida AWS Secrets Manager per l'utente. Per ulteriori informazioni su AWS Systems Manager Parameter Store, vedere AWS Systems Manager Parameter Store nella Guida AWS Systems Manager per l'utente.
Per espandere le impostazioni per le opzioni di controllo delle versioni o i parametri di input, puoi scegliere la freccia accanto al nome dell'impostazione. Per espandere tutte le impostazioni per tutti i componenti selezionati, è possibile disattivare e attivare l'opzione Espandi tutto.
-
Modello di file Dockerfile
-
Modello Dockerfile, ma modificabile. Pre-filled È possibile specificare una qualsiasi delle seguenti variabili contestuali che Image Builder sostituisce con le informazioni di build in fase di esecuzione.
- parentImage (obbligatorio)
-
In fase di compilazione, questa variabile diventa l'immagine di base della ricetta.
Esempio:
FROM {{{ imagebuilder:parentImage }}} - ambienti (richiesti se vengono specificati i componenti)
-
In fase di compilazione, questa variabile si risolve nelle direttive Dockerfile che inseriscono i componenti nel contesto di compilazione. Queste direttive copiano gli script dei componenti nell'immagine e impostano le variabili di ambiente utilizzate da tali script. Prepara l'ambiente ma non esegue i componenti specificati. Posizionate questa variabile prima della
componentsvariabile.Esempio:
{{{ imagebuilder:environments }}} - componenti (opzionali)
-
In fase di compilazione, questa variabile viene sostituita dal comando che esegue gli script dei componenti di compilazione e test per i componenti inclusi nella ricetta del contenitore, quindi rimuove tali script dall'immagine. Questa è la variabile che esegue i componenti. Posizionatela dopo la
environmentsvariabile.Esempio:
{{{ imagebuilder:components }}}
Repository di destinazione
-
Nome del repository di destinazione: l'archivio Amazon ECR in cui è archiviata l'immagine di output se non è specificato nessun altro repository nella configurazione di distribuzione della pipeline per la regione in cui viene eseguita la pipeline (Regione 1).
Per creare una nuova versione della ricetta del contenitore:
-
Nella pagina dei dettagli della ricetta del contenitore, scegli Crea nuova versione nella parte superiore della pagina. La console apre la pagina Crea ricetta per le ricette in contenitore.
-
Per creare la nuova versione, apporta le modifiche, quindi scegli Crea ricetta.
Per ulteriori informazioni sulla creazione di una ricetta contenitore quando si crea una pipeline di immagini, consulta Fase 2: Scegli la ricetta la sezione Guida introduttiva di questa guida.
Crea una ricetta per un contenitore con AWS CLI
Per creare una ricetta contenitore Image Builder con il imagebuilder
create-container-recipe comando in AWS CLI, procedi nel seguente modo:
Prerequisiti
Prima di eseguire i comandi Image Builder in questa sezione per creare una ricetta contenitore con AWS CLI, è necessario creare i componenti che la ricetta utilizzerà. L'esempio di ricetta del contenitore riportato nel passaggio seguente si riferisce ai componenti di esempio creati nella Creare un componente personalizzato dal AWS CLI sezione di questa guida.
Dopo aver creato i componenti, o se utilizzi componenti esistenti, annota gli ARN che desideri includere nella ricetta.
-
Creazione di un file JSON di input nella CLI
È possibile fornire tutto l'input per il create-container-recipe comando con parametri di comando in linea. Tuttavia, il comando risultante può essere piuttosto lungo. Per semplificare il comando, puoi invece fornire un file JSON che contenga tutte le impostazioni delle ricette del contenitore
Nota
La convenzione di denominazione per i valori dei dati nel file JSON segue lo schema specificato per i parametri di richiesta operativa dell'API Image Builder. Per esaminare i parametri di richiesta delle operazioni API, consulta il CreateContainerRecipecomando nel riferimento all'API EC2 Image Builder.
Per fornire i valori dei dati come parametri della riga di comando, fate riferimento ai nomi dei parametri specificati nel AWS CLI Command Reference.
Ecco un riepilogo dei parametri di questo esempio:
-
components (array di oggetti, opzionale) — Contiene un array di
ComponentConfigurationoggetti. I componenti sono opzionali per le ricette in contenitore. Puoi personalizzare l'immagine di output con i componenti BUILD, con le istruzioni nel modello Dockerfile (ad esempio,RUNoCOPYle istruzioni) o entrambi. I componenti TEST convalidano l'immagine ma non la modificano.Nota
Image Builder installa i componenti nell'ordine specificato nella ricetta. Tuttavia, i componenti di protezione CIS funzionano sempre per ultimi per garantire che i test di benchmark vengano eseguiti rispetto all'immagine di output.
-
componentARN (stringa, obbligatorio) — L'ARN del componente.
Suggerimento
Per utilizzare l'esempio per creare la tua ricetta di contenitore, sostituisci gli ARN di esempio con gli ARN per i componenti che stai utilizzando per la tua ricetta,. Questi includono il Regione AWS nome e il numero di versione di ciascuno.
parametri (matrice di oggetti): contiene una matrice di
ComponentParameteroggetti. Se un parametro di input è obbligatorio, ma non ha un valore predefinito definito nel componente, è necessario fornire un valore. Image Builder non creerà la versione della ricetta se mancano dei parametri obbligatori e non è stato definito un valore predefinito.Importante
I parametri dei componenti sono valori di testo semplice e vengono registrati. AWS CloudTrail Ti consigliamo di utilizzare AWS Secrets Manager o AWS Systems Manager Parameter Store per archiviare i tuoi segreti. Per ulteriori informazioni su Secrets Manager, vedi Cos'è Secrets Manager? nella Guida AWS Secrets Manager per l'utente. Per ulteriori informazioni su AWS Systems Manager Parameter Store, vedere AWS Systems Manager Parameter Store nella Guida AWS Systems Manager per l'utente.
-
name (string, required) — Il nome del parametro del componente da impostare.
-
value (array of string, obbligatorio) — Contiene una matrice di stringhe per impostare il valore per il parametro del componente denominato. Se è stato definito un valore predefinito per il componente e non viene fornito nessun altro valore, AWSTOE utilizza il valore predefinito.
-
-
-
containerType (string, required) — Il tipo di contenitore da creare. I valori validi includono.
DOCKER -
dockerfile TemplateData (string) — Il modello Dockerfile in linea per creare la tua immagine. I dati in linea sono limitati a 16.000 caratteri. È necessario specificare
dockerfileTemplateDataodockerfileTemplateUri, ma non entrambi.Il modello Dockerfile può includere variabili contestuali (segnaposti che Image Builder sostituisce con informazioni di build in fase di esecuzione).
parentImageIncludi almeno la variabile. Se la tua ricetta include componenti, includi anche laenvironmentsvariabile e lacomponentsvariabile.- parentImage (obbligatorio)
-
In fase di compilazione, questa variabile diventa l'immagine di base della ricetta.
Esempio:
FROM {{{ imagebuilder:parentImage }}} - ambienti (richiesti se vengono specificati i componenti)
-
In fase di compilazione, questa variabile si risolve nelle direttive Dockerfile che inseriscono i componenti nel contesto di compilazione. Queste direttive copiano gli script dei componenti nell'immagine e impostano le variabili di ambiente utilizzate da tali script. Prepara l'ambiente ma non esegue i componenti specificati. Posizionate questa variabile prima della
componentsvariabile.Esempio:
{{{ imagebuilder:environments }}} - componenti (opzionali)
-
In fase di compilazione, questa variabile viene sostituita dal comando che esegue gli script dei componenti di compilazione e test per i componenti inclusi nella ricetta del contenitore, quindi rimuove tali script dall'immagine. Questa è la variabile che esegue i componenti. Posizionatela dopo la
environmentsvariabile.Esempio:
{{{ imagebuilder:components }}}
Per archiviare il modello in Amazon S3, utilizza invece il TemplateUri parametro dockerfile con un URI Amazon S3 valido (ad esempio,).
s3://my-bucket/templates/Dockerfile -
name (string, required) — Il nome della ricetta del contenitore.
-
description (string) — La descrizione della ricetta del contenitore.
-
parentImage (string, required) — L'immagine del Docker contenitore da utilizzare nella ricetta del contenitore come base per l'immagine personalizzata.
-
Immagini pubbliche ospitate su DockerHub
-
Immagini di container esistenti in Amazon ECR
-
Amazon-managed immagini dei contenitori
-
-
platformOverride (stringa): specifica la piattaforma del sistema operativo quando si utilizza un'immagine di base personalizzata. Ti consigliamo di impostare questo valore quando usi un'Docker Hubimmagine Amazon ECR. Se lo ometti, Image Builder tenta di rilevare la piattaforma dal manifesto del contenitore, che potrebbe non essere sempre disponibile. Non è possibile specificare
platformOverridese l'immagine principale è un'immagine ARN di Image Builder. I valori validi sonoLinuxeWindows. Le ricette dei container non supportano la piattaforma macOS. -
SemanticVersion <major>(stringa, obbligatoria): la versione semantica della ricetta del contenitore specificata nel seguente formato, con valori numerici in ciascuna posizione per indicare una versione specifica:. <minor>. <patch>. Ad esempio, sarebbe
1.0.0. Per ulteriori informazioni sul controllo delle versioni semantiche per le risorse di Image Builder, vedere. Versionamento semantico in Image Builder -
tags (string map) — Tag allegati alla ricetta del contenitore.
-
instanceConfiguration (oggetto): un gruppo di opzioni che possono essere utilizzate per configurare un'istanza per la creazione e il test delle immagini dei container.
-
image (string) — L'immagine di base per un'istanza di compilazione e test di un container. Può contenere un ID AMI o specificare un parametro AWS Systems Manager (SSM) Parameter Store, preceduto da
ssm:, seguito dal nome del parametro o dall'ARN. Se si utilizza un parametro SSM, il valore del parametro deve contenere un ID AMI. Se non specifichi un'immagine di base, Image Builder utilizza l'AMI ottimizzata Amazon ECS appropriata come immagine di base. -
block DeviceMappings (array of objects) — Definisce i dispositivi a blocchi da collegare per creare un'istanza dall'AMI Image Builder specificata nel image parametro.
-
deviceName (stringa) — Il dispositivo a cui si applicano queste mappature.
-
ebs (object) — Utilizzato per gestire la configurazione specifica di Amazon EBS per questa mappatura.
-
delete OnTermination (Boolean): utilizzato per configurare l'eliminazione alla chiusura del dispositivo associato.
-
encrypted (booleano) — Utilizzato per configurare la crittografia del dispositivo.
-
VolumeSize (numero intero): utilizzato per sovrascrivere la dimensione del volume del dispositivo.
-
volumeType (string) — Utilizzato per sovrascrivere il tipo di volume del dispositivo.
-
-
-
-
targetRepository (oggetto, obbligatorio): l'archivio di destinazione per l'immagine del contenitore se non è specificato nessun altro repository nella configurazione di distribuzione della pipeline per la regione in cui viene eseguita la pipeline (Regione 1).
-
repositoryName (stringa, obbligatorio) — Il nome del repository del contenitore in cui è archiviata l'immagine del contenitore di output. Questo nome ha come prefisso la posizione del repository.
-
service (string, required): specifica il servizio di repository che memorizza l'immagine di output. Il valore valido è
ECR. Il repository di destinazione deve già esistere.
-
-
workingDirectory (string) — La directory di lavoro da utilizzare durante i flussi di lavoro di compilazione e test.
L'esempio seguente mostra un file di input completo della ricetta del contenitore che definisce un Docker contenitore Linux con componenti di compilazione. Salvalo come
create-container-recipe.jsone usalo nel create-container-recipe comando.{ "components": [ { "componentArn": "arn:aws:imagebuilder:us-west-2:111122223333: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-1234567890abcdef1", "blockDeviceMappings": [ { "deviceName": "/dev/xvda", "ebs": { "deleteOnTermination": true, "encrypted": false, "volumeSize": 8, "volumeType": "gp2" } } ] }, "targetRepository": { "repositoryName": "myrepo", "service": "ECR" }, "workingDirectory": "/tmp" } -
-
Crea la ricetta
Usa il seguente comando per creare la ricetta. Fornisci il nome del file JSON che hai creato nel passaggio precedente nel
--cli-input-jsonparametro:aws imagebuilder create-container-recipe --cli-input-json file://create-container-recipe.jsonNota
-
È necessario includere l'annotazione
file://all'inizio del percorso del file JSON. -
Il percorso del file JSON deve seguire la convenzione appropriata per il sistema operativo di base in cui si esegue il comando. Ad esempio, Windows utilizza la barra rovesciata (\) per fare riferimento al percorso della directory, mentre Linux e macOS utilizzano la barra (/).
L'output di esempio seguente mostra l'ARN della ricetta del contenitore appena creata, insieme all'ID della richiesta e al token client per la richiesta.
{ "requestId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "clientToken": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "containerRecipeArn": "arn:aws:imagebuilder:us-west-2:123456789012:container-recipe/my-container-recipe/1.0.2" } -
Vincoli della ricetta del contenitore
Esamina i seguenti vincoli prima di creare una ricetta per il contenitore:
-
È necessario specificare un repository Amazon ECR di destinazione già esistente.
-
AWS Marketplace i componenti non sono supportati nelle ricette dei contenitori.
-
I componenti sono opzionali. Puoi personalizzare l'immagine di output con i componenti BUILD, con le istruzioni nel modello Dockerfile (ad esempio,
RUNoCOPYle istruzioni) o entrambi. I componenti TEST convalidano l'immagine ma non la modificano. -
Le ricette dei container non supportano la piattaforma macOS.
-
Per il modello Dockerfile, fornisci dati in linea (fino a 16.000 caratteri) o un URI Amazon S3. Non puoi specificare entrambi.
-
La dimensione cumulativa della ricetta non può superare i 25 KB. Se ricevete un errore di dimensione, riducete il numero di parametri dei componenti o abbreviate i valori dei parametri. Questo limite è separato dai limiti di dimensione del modello Dockerfile.
-
Quando si imposta su
platformOverrideWindows, è necessario specificare anche.imageOsVersionOverrideQuesto vale per qualsiasi immagine principale diversa da Image Builder, ad esempio un'immagine Amazon ECR o un'immagine. Docker Hub
Errori comuni e risoluzione dei problemi
La tabella seguente elenca gli errori più comuni che si possono verificare durante la creazione di una ricetta contenitore, insieme a come risolverli.
| Errore | Causa | Risoluzione |
|---|---|---|
| «Le ricette in contenitore non devono contenere componenti del marketplace» | Un AWS Marketplace componente in una ricetta in contenitore. | Utilizzare solo AWS Marketplace componenti non costituenti. |
| «Le ricette container attualmente non supportano la piattaforma macOS» | platformOverrideè impostato su macOS. |
Utilizza Linux o Windows. |
| «È necessario specificare dockerfile o un dockerfileTemplateData » TemplateUri | Hai specificato entrambi o nessuno dei due. | Forniscine esattamente uno. |
| «URI S3 non valido» | Un percorso di ingresso non valido in Amazon S3. dockerfileTemplateUri |
Utilizzare il formato s3://. |
| «Non è possibile specificare un override della piattaforma quando si utilizza un'immagine Image Builder come principale» | platformOverridecon un'immagine ARN di Image Builder. |
Remove platformOverride. Image Builder rileva la piattaforma dai metadati dell'immagine principale. |
| «È necessario specificare l' OsVersion override dell'immagine quando si utilizzano i repository ECR come immagine principale per la piattaforma Windows» | Un Windows platformOverride senza una versione del sistema operativo. |
Aggiungi il imageOsVersionOverride campo. |