View a markdown version of this page

Cree una canalización de imágenes de contenedores a partir del AWS CLI - Generador de Imágenes de EC2

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Cree una canalización de imágenes de contenedores a partir del AWS CLI

Para crear una canalización de imágenes a partir de AWS CLI, ejecute el create-image-pipeline comando con las opciones de configuración aplicables a la canalización. Tienes la opción de crear un archivo JSON que contenga toda la configuración de la canalización o de especificar la configuración en tiempo de ejecución. En esta sección, se utiliza el método del archivo de configuración JSON para simplificar el comando.

La frecuencia con la que la canalización crea una nueva imagen para incorporar las actualizaciones pendientes de la imagen base y los componentes depende de la schedule que haya configurado. Una schedule tiene los siguientes atributos:

  • scheduleExpression: establece el cronograma de ejecución de la canalización para evaluar pipelineExecutionStartCondition y determinar si se debe iniciar una compilación. El cronograma se configura con expresiones cron. Para obtener más información sobre cómo dar formato a una expresión cron en Generador de Imágenes, consulte Utilizar expresiones cron en Generador de imágenes.

  • pipelineExecutionStartCondition: determina si su canalización debe iniciar la compilación. Los valores válidos son:

    • EXPRESSION_MATCH_ONLY: la canalización creará una nueva imagen cada vez que la expresión cron coincida con la hora actual.

    • EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE— tu canalización crea una imagen nueva solo cuando la expresión del cronograma coincide y hay actualizaciones pendientes de tu imagen base o componentes. Si no hay ninguna actualización pendiente, se omite la compilación. Para compilar inmediatamente sin esperar a que se produzcan actualizaciones, ejecuta la canalización manualmente.

Al ejecutar el create-image-pipeline comando en el AWS CLI, muchos de los recursos de configuración son opcionales. Sin embargo, algunos de los recursos tienen requisitos condicionales, según el tipo de imagen que crea la canalización. Las canalizaciones de imágenes de contenedor requieren los siguientes recursos:

  • ARN de receta de contenedor

  • Configuración de infraestructura ARN

Si no incluye un recurso de configuración de distribución al ejecutar el comando create-image-pipeline, la imagen de salida se almacena en el repositorio de ECR que especifique como repositorio de destino en su receta de contenedor en la región donde se ejecuta el comando. Si incluye un recurso de configuración de distribución para la canalización, se utilizará el repositorio de destino que se haya especificado para la primera región de la distribución.

  1. Creación de un archivo JSON de entrada de la CLI

    Utilice su herramienta de edición de archivos favorita para crear un archivo JSON con las siguientes claves, además de valores que sean válidos para su entorno. En este ejemplo, se utiliza un archivo con el nombre 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
    • Debe incluirla notación file:// al principio de la ruta del archivo JSON.

    • La ruta del archivo JSON debe seguir la convención apropiada para el sistema operativo base donde se está ejecutando el comando. Por ejemplo, Windows utiliza la barra diagonal inversa (\) para referirse a la ruta de directorios, mientras que Linux y macOS usan la barra diagonal (/).

  2. Ejecute el siguiente comando utilizando el archivo que creó como entrada.

    aws imagebuilder create-image-pipeline --cli-input-json file://create-image-pipeline.json
Ejemplo: cree una canalización de contenedores con digitalización de imágenes y flujos de trabajo personalizados

En este ejemplo, se configura una canalización de contenedores que se comprueba todos los lunes a las 10:00 a. m. UTC y solo se ejecuta cuando hay actualizaciones de dependencias disponibles. El archivo de configuración utiliza los recursos existentes para la receta y la infraestructura del contenedor. Permite el escaneo de vulnerabilidades con la integración de Amazon Inspector y ECR. La configuración también especifica flujos de trabajo personalizados con una función de ejecución. Los grupos paralelos ejecutan pruebas funcionales y de seguridad al mismo tiempo. Los registros de canalización se envían a grupos de CloudWatch registros personalizados.

  1. Creación de un archivo de configuración

    Crea un archivo JSON con el nombrecreate-container-pipeline-with-workflows.json. Este archivo define la configuración de la canalización de contenedores con el escaneo de imágenes habilitado y los flujos de trabajo de prueba personalizados. Sustituya los valores de los marcadores de posición por los ARN de sus propios recursos.

    { "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
    • Debe incluir la notación file:// al principio de la ruta del archivo JSON.

    • La ruta del archivo JSON debe seguir la convención apropiada para el sistema operativo base donde se está ejecutando el comando. Por ejemplo, Windows utiliza la barra diagonal inversa (\) para referirse a la ruta de directorios, mientras que Linux y macOS usan la barra diagonal (/).

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