View a markdown version of this page

Referencia del archivo de definiciones de imágenes - AWS CodePipeline

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.

Referencia del archivo de definiciones de imágenes

Esta sección se incluye solo como referencia. Para obtener más información sobre cómo crear una canalización con acciones de código fuente o de implementación para contenedores, consulte Creación de una canalización, etapas y acciones.

AWS CodePipeline Los trabajadores que realizan acciones de contenedor, como una acción de origen de Amazon ECR o acciones de implementación de Amazon ECS, utilizan archivos de definiciones para asignar el URI de la imagen y el nombre del contenedor a la definición de la tarea. Cada archivo de definiciones es un JSON-formatted archivo que utiliza el proveedor de la acción de la siguiente manera:

Archivo imagedefinitions.json para las acciones de implementación estándar de

Un documento de definiciones de imágenes es un archivo JSON que describe el nombre, la imagen y la etiqueta del contenedor del servicio de Amazon ECS. Si está implementando aplicaciones basadas en contenedores, debe generar un archivo de definiciones de imágenes para proporcionar al trabajador el contenedor CodePipeline de Amazon ECS y la identificación de la imagen para recuperarlos del repositorio de imágenes, como Amazon ECR.

nota

El nombre predeterminado del archivo es imagedefinitions.json. Si utiliza otro nombre de archivo, debe proporcionarlo al crear la etapa de implementación de la canalización.

Cree el archivo imagedefinitions.json teniendo en cuenta lo siguiente:

  • El archivo debe usar codificación. UTF-8

  • El límite de tamaño máximo de archivo para el archivo de definiciones de imágenes es de 100 KB.

  • Debe crear el archivo como un artefacto de código fuente o de compilación para que sea un artefacto de entrada para la acción de implementación. En otras palabras, asegúrate de que el archivo esté cargado en tu ubicación de origen, como tu CodeCommit repositorio, o de que se genere como un artefacto de salida integrado.

El archivo imagedefinitions.json proporciona el nombre del contenedor y el URI de la imagen. Debe crearse con el siguiente conjunto de pares clave-valor.

Clave Valor
name container_name
imageURI imageUri
nota

El campo de nombre se usa para el nombre de la imagen del contenedor, es decir, el nombre de la imagen de Docker.

Esta es la estructura JSON, donde el nombre del contenedor es sample-app, la URI de la imagen es ecs-repo y la etiqueta es latest:

[ { "name": "sample-app", "imageUri": "11111EXAMPLE.dkr.ecr.us-west-2.amazonaws.com/ecs-repo:latest" } ]

También puede construir el archivo para que incluya varios pares contenedor-imagen.

Estructura JSON:

[ { "name": "simple-app", "imageUri": "httpd:2.4" }, { "name": "simple-app-1", "imageUri": "mysql" }, { "name": "simple-app-2", "imageUri": "java1.8" } ]

Antes de crear la canalización, siga los pasos que se indican a continuación para configurar el archivo imagedefinitions.json.

  1. Como parte de la planificación de la implementación de aplicaciones basadas en contenedores para la canalización, planifique la etapa de código fuente y la etapa de compilación, si procede.

  2. Seleccione una de las siguientes opciones:

    1. Si la canalización se crea de forma que salta la etapa de compilación, debe crear manualmente el archivo JSON y cargarlo en el repositorio de origen a fin de que la acción de origen pueda proporcionar el artefacto. Cree el archivo con un editor de texto y asígnele un nombre, o utilice el nombre de archivo imagedefinitions.json predeterminado. Envíe el archivo de definiciones de imágenes al repositorio de código fuente.

      nota

      Recuerde comprimir el archivo JSON si el repositorio de origen es un bucket de .

    2. Si tu canalización tiene una fase de compilación, agrega un comando a tu archivo buildspec que genere el archivo de definiciones de imágenes en tu repositorio de origen durante la fase de compilación. En el siguiente ejemplo, se utiliza el comando printf para crear un archivo imagedefinitions.json. Incluya este comando en la sección post_build del archivo buildspec.yml:

      printf '[{"name":"container_name","imageUri":"image_URI"}]' > imagedefinitions.json

      Debe incluir el archivo de definiciones de imágenes como artefacto de salida en el archivo buildspec.yml.

  3. Al crear la canalización en la consola, introduzca el nombre del archivo de definiciones de imágenes en el campo Image Filename (Nombre del archivo de imágenes) de la página Deploy (Implementación) del asistente Create Pipeline (Crear canalización).

Para ver un tutorial paso a paso sobre cómo crear una canalización que utilice Amazon ECS como proveedor de implementación, consulte Tutorial: Continuous Deployment with. CodePipeline

Detail.json archivo de imagen para las acciones de blue/green implementación de Amazon ECS

Un documento imageDetail.json es un archivo JSON que describe el URI de una imagen de Amazon ECS. Si va a implementar aplicaciones basadas en contenedores para una blue/green implementación, debe generar el imageDetail.json archivo para proporcionar a Amazon ECS y al trabajador CodeDeploy laboral la identificación de la imagen para que la recupere del repositorio de imágenes, como Amazon ECR.

nota

El nombre del archivo debe ser imageDetail.json.

Para ver una descripción de la acción y el resto de parámetros, consulte Referencia de acciones de implementación de Amazon Elastic Container Service y CodeDeploy azul-verde.

Debe crear el archivo imageDetail.json como un artefacto de código fuente o de compilación para que sea un artefacto de entrada para la acción de implementación. Puede utilizar uno de estos métodos para proporcionar el archivo imageDetail.json en la canalización:

  • Incluya el imageDetail.json archivo en su ubicación de origen para que se proporcione en proceso como entrada para la acción de implementación de Amazon ECS blue/green .

    nota

    Recuerde comprimir el archivo JSON si el repositorio de origen es un bucket de .

  • Las acciones de origen de Amazon ECR generan automáticamente un archivo imageDetail.json como artefacto de entrada para la acción siguiente.

    nota

    Dado que la acción de origen de Amazon ECR crea este archivo, no es necesario que las canalizaciones con una acción de origen de Amazon ECR proporcionen de forma manual un archivo imageDetail.json.

    Para obtener un tutorial sobre la creación de una canalización que incluya una etapa de origen de Amazon ECR, consulte Tutorial: Creación de una canalización con una fuente e ECS-to-CodeDeploy implementación de Amazon ECR.

Diagrama que muestra el Detail.json archivo de imagen contenido en el depósito del artefacto

El archivo imageDetail.json proporciona el URI de la imagen. Debe crearse con el siguiente par clave-valor.

Clave Valor
ImageURI image_URI
imageDetail.json

A continuación, se muestra la estructura JSON, donde el URI de la imagen es ACCOUNTID.dkr.ecr.us-west-2.amazonaws.com/dk-image-repo@sha256:example3:

{ "ImageURI": "ACCOUNTID.dkr.ecr.us-west-2.amazonaws.com/dk-image-repo@sha256:example3" }
imageDetail.json (generated by ECR)

La acción de origen de Amazon ECR genera automáticamente un archivo imageDetail.json cada vez que se envía un cambio al repositorio de imágenes. El archivo imageDetail.json generado por las acciones de origen de Amazon ECR se suministra como artefacto de salida de la acción de origen a la siguiente acción de la canalización.

A continuación, se muestra la estructura JSON, donde el nombre del repositorio es dk-image-repo, el URI de la imagen es ecs-repo y la etiqueta de la imagen es latest:

{ "ImageSizeInBytes": "44728918", "ImageDigest": "sha256:EXAMPLE11223344556677889900bfea42ea2d3b8a1ee8329ba7e68694950afd3", "Version": "1.0", "ImagePushedAt": "Mon Jan 21 20:04:00 UTC 2019", "RegistryId": "EXAMPLE12233", "RepositoryName": "dk-image-repo", "ImageURI": "ACCOUNTID.dkr.ecr.us-west-2.amazonaws.com/dk-image-repo@sha256:example3", "ImageTags": [ "latest" ] }

El archivo imageDetail.json asigna el URI de la imagen y nombre del contenedor a la definición de tareas de Amazon ECS, tal y como se indica a continuación:

  • ImageSizeInBytes: el tamaño, en bytes, de la imagen en el repositorio.

  • ImageDigest: el resumen sha256 del manifiesto de la imagen.

  • Version: la versión de la imagen.

  • ImagePushedAt: la fecha y la hora en que se envió la imagen más reciente al repositorio.

  • RegistryId: el identificador de AWS cuenta asociado al registro que contiene el repositorio.

  • RepositoryName: el nombre del repositorio de Amazon ECR al que se envió la imagen.

  • ImageURI: el URI de la imagen.

  • ImageTags: la etiqueta utilizada para la imagen.

Antes de crear la canalización, siga los pasos que se indican a continuación para configurar el archivo imageDetail.json.

  1. Como parte de la planificación del blue/green despliegue de aplicaciones basadas en contenedores para tu canalización, planifica la fase de origen y la fase de creación, si procede.

  2. Seleccione una de las siguientes opciones:

    1. Si tu canalización ha omitido la fase de creación, debes crear manualmente el archivo JSON y subirlo a tu repositorio de origen, por ejemplo, para que la acción de origen pueda proporcionar el artefacto. CodeCommit Cree el archivo con un editor de texto y asígnele un nombre, o utilice el nombre de archivo imageDetail.json predeterminado. Envíe el imageDetail.json archivo al repositorio de código fuente.

    2. Si la canalización tiene una etapa de compilación, haga lo siguiente:

      1. Agrega un comando a tu archivo de especificaciones de construcción que genere el archivo de definiciones de imágenes en tu repositorio de origen durante la fase de compilación. En el siguiente ejemplo, se utiliza el comando printf para crear un archivo imageDetail.json. Incluya este comando en la sección post_build del archivo buildspec.yml:

        printf '{"ImageURI":"image_URI"}' > imageDetail.json

        Debe incluir el archivo imageDetail.json como artefacto de salida en el archivo buildspec.yml.

      2. Añada el archivo imageDetail.json como artefacto en el archivo buildspec.yml.

        artifacts: files: - imageDetail.json