Creación de una nueva versión de una receta de contenedor - 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.

Creación de una nueva versión de una receta de contenedor

Esta sección muestra cómo crear una nueva versión de una receta de contenedor.

Creación de una nueva versión de una receta de contenedor con la consola

Crear una nueva versión de una receta de contenedor es prácticamente lo mismo que crear una nueva receta. La diferencia es que, en la mayoría de los casos, ciertos detalles están preseleccionados para que coincidan con la receta base. La siguiente lista describe las diferencias entre crear una receta nueva y crear una nueva versión de una receta existente.

Detalles de la receta
  • Nombre: no se puede editar.

  • versión: obligatoria. Este detalle no viene precargado con la versión actual ni con ningún tipo de secuencia. Ingrese el número de versión que desee crear en el formato major.minor.patch. Si la versión ya existe, se produce un error.

Imagen base
  • Opción Seleccionar imagen: preseleccionada, pero editable. Si cambia la elección para la fuente de su imagen base, es posible que pierda otros detalles que dependen de la opción original que haya elegido.

    Para ver los detalles asociados con la selección de su imagen base, elija la pestaña que coincida con su selección.

    Managed images
    • Sistema operativo (SO) de la imagen: no se puede editar.

    • Nombre de la imagen: preseleccionada, en función de la combinación de imágenes base que haya elegido para la receta existente. Sin embargo, si cambia la opción Seleccionar imagen, se pierde el nombre de la imagen preseleccionada.

    • Opciones de control de versiones automático: no coincide con la receta base. Las opciones de control de versiones automático tienen de forma predeterminada la opción Usar la versión del sistema operativo seleccionado.

      importante

      Si utiliza el control de versiones semántico para iniciar las compilaciones de canalización, asegúrese de cambiar este valor a Usar la versión más reciente disponible del SO. Para obtener más información sobre el control de versiones semántico para los recursos de Generador de Imágenes, consulte Control de versiones semántico en Image Builder.

    ECR image
    • Sistema operativo (SO) de la imagen: preseleccionado, pero editable.

    • versión del sistema operativo: preseleccionado, pero editable.

    • ID de imagen ECR: precargado, pero editable.

    Docker Hub image
    • Sistema operativo (SO) de la imagen: no se puede editar.

    • versión del sistema operativo: preseleccionado, pero editable.

    • ID de imagen de Docker: precargado, pero editable.

Configuración de instancias
  • ID de AMI: precargado, pero editable.

  • Almacenamiento (volúmenes)

    EBS volumen 1 (raíz AMI): precargado. No puede editar las selecciones de nombre de dispositivo, Instantánea o IOPS del volumen raíz. Sin embargo, puede cambiar todos los ajustes restantes, como el tamaño. También puede agregar nuevos volúmenes.

    nota

    Si especificó una AMI base compartida con usted desde otra cuenta, las instantáneas de los volúmenes secundarios que se especifiquen también se deben compartir con su cuenta.

Directorio de trabajo
  • Ruta del directorio de trabajo: precargada, pero editable.

Componentes
  • Componentes: los componentes que ya están incluidos en la receta se muestran en la sección Componentes seleccionados al final de cada una de las listas de componentes (compilación y prueba). Puede eliminar o reordenar los componentes seleccionados para adaptarlos a sus necesidades.

    Los componentes de endurecimiento del CIS no siguen las reglas de ordenación de componentes estándar de las recetas de Generador de Imágenes. Los componentes de endurecimiento del CIS siempre se ejecutan en último lugar para garantizar que las pruebas de referencia se ejecuten con la imagen de salida.

    nota

    Las listas de componentes de compilación y prueba muestran los componentes disponibles según el tipo de propietario del componente. Para añadir o actualizar los componentes de su receta, seleccione el tipo de propietario del componente que está buscando. Por ejemplo, si quieres añadir un componente que esté asociado a una imagen base a la que te hayas suscrito AWS Marketplace, selecciónalo en la lista Third party managed de tipos de propietario, situada junto a la barra de búsqueda.

    Puede configurar las siguientes opciones para su componente seleccionado:

    • Opciones de control de versiones: preseleccionadas, pero se pueden cambiar. Le recomendamos que elija la opción Usar la última versión del componente disponible para asegurarse de que las compilaciones de imágenes siempre incluyan la última versión del componente. Si necesita usar una versión de componente específica en su receta, puede elegir Especificar la versión del componente e introducir la versión en el cuadro versión del componente que aparece.

    • Parámetros de entrada: muestra los parámetros de entrada que acepta el componente. El valor está precargado con el valor de la versión anterior de la receta. Si utiliza este componente por primera vez en esta receta y se ha definido un valor por defecto para el parámetro de entrada, el valor por defecto aparece en el cuadro Valor con el texto atenuado. Si no se introduce ningún otro valor, Image Builder utiliza el valor predeterminado.

      Si se requiere un parámetro de entrada, pero no tiene un valor predeterminado definido en el componente, debe proporcionar un valor. Image Builder no creará la versión de la receta si falta algún parámetro obligatorio y no tiene definido un valor predeterminado.

      importante

      Los parámetros del componente son valores de texto sin formato y se registran en AWS CloudTrail. Le recomendamos que utilice AWS Secrets Manager nuestro almacén de AWS Systems Manager parámetros para almacenar sus secretos. Para obtener más información sobre Secrets Manager, consulte ¿Qué es Secrets Manager? en la Guía del usuario de AWS Secrets Manager . Para obtener más información acerca del almacén de parámetros de AWS Systems Manager , consulte Almacén de parámetros de AWS Systems Manager en la Guía del usuario de AWS Systems Manager .

    Para ampliar la configuración de las opciones de control de versiones o los parámetros de entrada, puede seleccionar la flecha junto al nombre de la configuración. Para ampliar todos los ajustes de todos los componentes seleccionados, puede activar y desactivar el interruptor Expandir todo.

Plantilla de Dockerfile
  • Plantilla de Dockerfile: precargada, pero editable. Puede especificar cualquiera de las siguientes variables contextuales que Image Builder reemplaza por información de compilación en tiempo de ejecución.

     

    ParentImage (obligatorio)

    En el momento de la compilación, esta variable se convierte en la imagen base de la receta.

    Ejemplo:

    FROM {{{ imagebuilder:parentImage }}}
    entornos (obligatorio si se especifican los componentes)

    Esta variable se convertirá en un script que ejecuta componentes.

    Ejemplo:

    {{{ imagebuilder:environments }}}
    componentes (opcional)

    Image Builder resuelve los scripts de componentes de compilación y prueba para los componentes que incluye la receta del contenedor. Esta variable se puede colocar en cualquier parte del Dockerfile, después de la variable de entorno.

    Ejemplo:

    {{{ imagebuilder:components }}}
Repositorio de destino
  • Nombre del repositorio de destino: el repositorio de Amazon ECR donde se almacena la imagen de salida si no hay otro repositorio especificado en la configuración de distribución de la canalización para la región donde se ejecuta la canalización (región 1).

Para crear una nueva versión de una receta de contenedor:
  1. En la parte superior de la página de detalles de la receta de contenedor, seleccione Crear nueva versión. Accederá a la página Crear receta para las recetas de contenedor.

  2. Para crear la nueva versión, realice los cambios y, a continuación, elija Crear receta.

Para obtener más información sobre cómo crear una receta de contenedor cuando crea una canalización de imágenes, consulte Paso 2: elegir receta en la sección Introducción de esta guía.

Crear una receta de contenedor con la AWS CLI

Para crear una receta de contenedor de Image Builder con el imagebuilder create-container-recipe comando de AWS CLI, siga estos pasos:

Requisitos previos

Antes de ejecutar los comandos de Image Builder de esta sección para crear una receta de contenedor con el AWS CLI, debe crear los componentes que utilizará la receta. El ejemplo de receta de contenedor en el siguiente paso hace referencia a los componentes de ejemplo que se crean en la sección Cree un componente personalizado a partir del AWS CLI de esta guía.

Después de crear los componentes, o si utiliza componentes existentes, anote los ARN que desea incluir en la receta.

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

    Puede proporcionar todas las entradas para el comando create-container-recipe con parámetros de comando en línea. Sin embargo, el comando resultante puede ser bastante largo. Para simplificar el comando, puede proporcionar un archivo JSON que contenga todas las configuraciones de la receta de contenedor.

    nota

    La convención de nomenclatura de los valores de datos del archivo JSON sigue el patrón que se especifica para los parámetros de solicitud de acción de la API de Generador de Imágenes. Para revisar los parámetros de solicitud de comandos de la API, consulte el CreateContainerRecipecomando en la referencia de la API de EC2 Image Builder.

    Para proporcionar los valores de los datos como parámetros de la línea de comandos, consulte los nombres de los parámetros especificados en la referencia de comandos de la AWS CLI .

    Este es un resumen de los parámetros de este ejemplo:

    • Componentes (matriz de objetos, obligatorio): contiene un conjunto de objetos ComponentConfiguration. Debe especificarse al menos un componente de compilación:

      nota

      Generador de Imágenes instala los componentes en el orden en que se especificaron en la receta. Sin embargo, los componentes de refuerzo del CIS siempre se ejecutan en último lugar para garantizar que las pruebas de referencia se ejecutan con su imagen de salida.

      • ComponentARN (cadena, obligatorio): el ARN del componente.

        sugerencia

        Para usar el ejemplo para crear su propia receta de contenedor, sustituya los ARN de ejemplo por los ARN de los componentes que utiliza en la receta. Estos incluyen la Región de AWS, el nombre y el número de versión de cada uno.

      • Parámetros (matriz de objetos): contiene una matriz de objetos ComponentParameter. Si se requiere un parámetro de entrada, pero no tiene un valor predeterminado definido en el componente, debe proporcionar un valor. Image Builder no creará la versión de la receta si falta algún parámetro obligatorio y no tiene definido un valor predeterminado.

        importante

        Los parámetros del componente son valores de texto sin formato y se registran en AWS CloudTrail. Le recomendamos que utilice AWS Secrets Manager nuestro almacén de AWS Systems Manager parámetros para almacenar sus secretos. Para obtener más información sobre Secrets Manager, consulte ¿Qué es Secrets Manager? en la Guía del usuario de AWS Secrets Manager . Para obtener más información acerca del almacén de parámetros de AWS Systems Manager , consulte Almacén de parámetros de AWS Systems Manager en la Guía del usuario de AWS Systems Manager .

        • Nombre (cadena, obligatorio): el nombre del parámetro del componente que se va a establecer.

        • valor (matriz de cadenas, obligatorio): contiene una matriz de cadenas para establecer el valor del parámetro de componente nombrado. Si hay un valor por defecto definido para el componente y no se proporciona ningún otro valor, TOE de AWS utiliza el valor por defecto.

    • containerType (cadena, obligatorio): el tipo de contenedor que se va a crear. Los valores válidos incluyen DOCKER.

    • dockerfileTemplateData(cadena): la plantilla de Dockerfile que se utiliza para crear la imagen, expresada como un blob de datos en línea.

    • Nombre (cadena, obligatorio): nombre de la receta de contenedor.

    • Descripción (cadena): descripción de la receta de contenedor.

    • parentImage (cadena, obligatorio): imagen que la receta de contenedor utiliza como base para la imagen personalizada. El valor puede ser el ARN de la imagen base o un ID de AMI.

    • platformOverride (cadena): especifica la plataforma del sistema operativo cuando se utiliza una imagen base personalizada.

    • semanticVersion (cadena, obligatorio): la versión semántica de la receta de contenedor especificada en el siguiente formato, con valores numéricos en cada posición para indicar una versión específica: <major>.<minor>.<patch>. Un ejemplo sería 1.0.0. Para obtener más información sobre el control de versiones semántico para los recursos de Generador de Imágenes, consulte Control de versiones semántico en Image Builder.

    • Etiquetas (mapa de cadenas): etiquetas que se adjuntan a la receta de contenedor.

    • instanceConfiguration (objeto): un grupo de opciones que se pueden usar para configurar una instancia para compilar y probar las imágenes de contenedor.

      • Imagen (cadena): el ID de la AMI que se utilizará como imagen base para una instancia de compilación y prueba de contenedores. Si no especifica este valor, Generador de Imágenes utiliza la AMI optimizada para Amazon ECS adecuada como imagen base.

      • blockDeviceMappings(matriz de objetos): define los dispositivos de bloques que se van a adjuntar para crear una instancia a partir de la AMI de Image Builder especificada en el image parámetro.

        • deviceName (cadena): el dispositivo al que se aplican estas asignaciones.

        • ebs (objeto): se utiliza para administrar la configuración específica de Amazon EBS para esta asignación.

          • deleteOnTermination(Booleano): se utiliza para configurar la eliminación al finalizar el dispositivo asociado.

          • cifrado (Booleano): se utiliza para configurar el cifrado del dispositivo.

          • volumeSize (entero): se utiliza para anular el tamaño de volumen del dispositivo.

          • volumeType (cadena): se utiliza para anular el tipo de volumen del dispositivo.

    • targetRepository (objeto, obligatorio): el repositorio de destino de la imagen de contenedor si no hay ningún otro repositorio especificado en la configuración de distribución de la canalización para la región donde se ejecuta la canalización (región 1).

      • repositoryName (cadena, obligatorio): el nombre del repositorio de contenedor donde se almacena la imagen del contenedor de salida. Este nombre está precedido por la ubicación del repositorio.

      • service (cadena, obligatorio): especifica el servicio en el que se registró esta imagen.

    • workingDirectory (cadena): directorio de trabajo que se utilizará durante los flujos de trabajo de compilación y prueba.

    { "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" }
  2. Creación de la receta

    Utilice el siguiente comando para crear la receta. Introduzca el nombre del archivo JSON que creó en el paso anterior en el parámetro --cli-input-json:

    aws imagebuilder create-container-recipe --cli-input-json file://create-container-recipe.json
    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 hacer referencia a la ruta del directorio y Linux usa la barra diagonal (/).