View a markdown version of this page

Crea una pipeline di immagini di un contenitore da AWS CLI - EC2 Image Builder

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 pipeline di immagini di un contenitore da AWS CLI

Per creare una pipeline di immagini da AWS CLI, esegui il create-image-pipeline comando con le opzioni di configurazione applicabili alla pipeline. È possibile creare un file JSON che contenga tutta la configurazione della pipeline o specificare la configurazione in fase di esecuzione. Questa sezione utilizza il metodo del file di configurazione JSON per semplificare il comando.

La frequenza con cui la pipeline crea una nuova immagine per incorporare eventuali aggiornamenti in sospeso dell'immagine di base e dei componenti dipende dalla configurazioneschedule. A schedule ha i seguenti attributi:

  • scheduleExpression— Imposta la pianificazione dell'esecuzione della pipeline per valutare pipelineExecutionStartCondition e determinare se avviare una build. La pianificazione è configurata con espressioni cron. Per ulteriori informazioni su come formattare un'espressione cron in Image Builder, vedere. Usa le espressioni cron in Image Builder

  • pipelineExecutionStartCondition— Determina se la pipeline deve avviare la compilazione. I valori validi includono:

    • EXPRESSION_MATCH_ONLY— la pipeline creerà una nuova immagine ogni volta che l'espressione cron corrisponde all'ora corrente.

    • EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE— la pipeline crea una nuova immagine solo quando l'espressione di pianificazione corrisponde e ci sono aggiornamenti in sospeso all'immagine o ai componenti di base. Se non ci sono aggiornamenti in sospeso, la build viene ignorata. Per creare immediatamente senza attendere gli aggiornamenti, esegui la pipeline manualmente.

Quando esegui il create-image-pipeline comando in AWS CLI, molte risorse di configurazione sono opzionali. Tuttavia, alcune risorse hanno requisiti condizionali, a seconda del tipo di immagine creata dalla pipeline. Le seguenti risorse sono necessarie per le pipeline di immagini dei contenitori:

  • Ricetta del contenitore ARN

  • Configurazione dell'infrastruttura ARN

Se non includi una risorsa di configurazione della distribuzione quando esegui il create-image-pipeline comando, l'immagine di output viene archiviata nell'archivio ECR specificato come repository di destinazione nella ricetta del contenitore nella regione in cui esegui il comando. Se includi una risorsa di configurazione della distribuzione per la tua pipeline, viene utilizzato il repository di destinazione che hai specificato per la prima regione della distribuzione.

  1. Creazione di un file JSON di input nella CLI

    Usa il tuo strumento di modifica dei file preferito per creare un file JSON con le seguenti chiavi, oltre a valori validi per il tuo ambiente. In questo esempio viene utilizzato un file denominato create-image-pipeline.json:

    { "name": "MyWindows2019Pipeline", "description": "Builds Windows 2019 Images", "enhancedImageMetadataEnabled": true, "containerRecipeArn": "arn:aws:imagebuilder:us-west-2:123456789012:container-recipe/my-example-recipe/2020.12.03", "infrastructureConfigurationArn": "arn:aws:imagebuilder:us-west-2:123456789012:infrastructure-configuration/my-example-infrastructure-configuration", "distributionConfigurationArn": "arn:aws:imagebuilder:us-west-2:123456789012:distribution-configuration/my-example-distribution-configuration", "imageTestsConfiguration": { "imageTestsEnabled": true, "timeoutMinutes": 60 }, "schedule": { "scheduleExpression": "cron(0 0 * * SUN *)", "pipelineExecutionStartCondition": "EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE" }, "status": "ENABLED" }
    Nota
    • È 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 (/).

  2. Esegui il comando seguente utilizzando il file creato come input.

    aws imagebuilder create-image-pipeline --cli-input-json file://create-image-pipeline.json
Esempio: crea una pipeline di contenitori con scansione di immagini e flussi di lavoro personalizzati

Questo esempio configura una pipeline di contenitori che controlla ogni lunedì alle 10:00 UTC e viene eseguita solo quando sono disponibili aggiornamenti delle dipendenze. Il file di configurazione utilizza le risorse esistenti per la ricetta e l'infrastruttura del contenitore. Consente la scansione delle vulnerabilità con Amazon Inspector e l'integrazione ECR. La configurazione specifica anche flussi di lavoro personalizzati con un ruolo di esecuzione. I gruppi paralleli eseguono test di sicurezza e funzionali contemporaneamente. I log della pipeline vengono inviati a gruppi di CloudWatch log personalizzati.

  1. Creare un file di configurazione

    Crea un file JSON denominatocreate-container-pipeline-with-workflows.json. Questo file definisce la configurazione della pipeline del contenitore con la scansione delle immagini abilitata e flussi di lavoro di test personalizzati. Sostituisci i valori segnaposto con i tuoi ARN di risorse.

    { "name": "MyContainerPipelineWithScanning", "description": "Container pipeline with vulnerability scanning and custom workflows", "containerRecipeArn": "arn:aws:imagebuilder:us-east-1:123456789012:container-recipe/my-container-recipe/1.0.0", "infrastructureConfigurationArn": "arn:aws:imagebuilder:us-east-1:123456789012:infrastructure-configuration/my-infra-config", "distributionConfigurationArn": "arn:aws:imagebuilder:us-east-1:123456789012:distribution-configuration/my-dist-config", "imageScanningConfiguration": { "imageScanningEnabled": true, "ecrConfiguration": { "repositoryName": "my-scanning-repo", "containerTags": ["scan-latest"] } }, "workflows": [ { "workflowArn": "arn:aws:imagebuilder:us-east-1:123456789012:workflow/build/my-build-workflow/1.0.0" }, { "workflowArn": "arn:aws:imagebuilder:us-east-1:123456789012:workflow/test/my-security-scan/1.0.0", "onFailure": "ABORT", "parallelGroup": "security" }, { "workflowArn": "arn:aws:imagebuilder:us-east-1:123456789012:workflow/test/my-compliance-check/1.0.0", "onFailure": "ABORT", "parallelGroup": "security" }, { "workflowArn": "arn:aws:imagebuilder:us-east-1:123456789012:workflow/test/my-functional-test/1.0.0", "onFailure": "CONTINUE", "parallelGroup": "functional" }, { "workflowArn": "arn:aws:imagebuilder:us-east-1:123456789012:workflow/test/my-performance-test/1.0.0", "onFailure": "CONTINUE", "parallelGroup": "functional" } ], "executionRole": "arn:aws:iam::123456789012:role/ImageBuilderExecutionRole", "loggingConfiguration": { "imageLogGroupName": "/aws/imagebuilder/my-container-pipeline-image-logs", "pipelineLogGroupName": "/aws/imagebuilder/my-container-pipeline-execution-logs" }, "imageTestsConfiguration": { "imageTestsEnabled": true, "timeoutMinutes": 120 }, "schedule": { "scheduleExpression": "cron(0 10 ? * MON *)", "pipelineExecutionStartCondition": "EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE" }, "status": "ENABLED" }
    Nota
    • È 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 (/).

  2. Eseguire il comando
    aws imagebuilder create-image-pipeline --cli-input-json file://create-container-pipeline-with-workflows.json