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 Crea una canalización, etapas y acciones.

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

Archivo imagedefinitions.json para las acciones de despliegue estándar de Amazon ECS

Un documento de definiciones de imágenes es un JSON archivo que describe el nombre de tu ECS contenedor de Amazon, así como la imagen y la etiqueta. Si está implementando aplicaciones basadas en contenedores, debe generar un archivo de definiciones de imágenes para proporcionar al trabajador el CodePipeline ECS contenedor de Amazon 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 la 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úrese de que el archivo se haya cargado en su ubicación de origen, como el CodeCommit repositorio, o que se haya generado como un artefacto de salida creado.

El imagedefinitions.json archivo proporciona el nombre y la imagen URI del contenedor. 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 JSON estructura, donde está el nombre del contenedorsample-app, la imagen URI y la etiqueta: ecs-repo 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.

JSONestructura:

[ { "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 tu canalización se crea de forma que se salte la fase de creación, debes crear el JSON archivo manualmente y subirlo a tu repositorio de origen para 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

      Si su repositorio de origen es un bucket de Amazon S3, recuerde comprimir el JSON archivo.

    2. Si la canalización dispone de una etapa de compilación, añada un comando al archivo de especificación de compilación que genera el archivo de definiciones de imágenes en el repositorio de código fuente durante la etapa 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 step-by-step tutorial sobre cómo crear una canalización que utilice Amazon ECS como proveedor de despliegues, consulta el Tutorial: Despliegue continuo con CodePipeline.

imageDetailArchivo.json para las acciones de despliegue ECS azul/verde de Amazon

Un imageDetail.json documento es un JSON archivo que describe tu ECS imagen de AmazonURI. Si va a implementar aplicaciones basadas en contenedores para una implementación azul/verde, debe generar el imageDetail.json archivo para proporcionar a Amazon ECS y al trabajador CodeDeploy laboral la identificación de la imagen para recuperarla 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 despliegue 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:

  • Incluye el imageDetail.json archivo en tu ubicación de origen para que se incluya en la canalización como entrada para tu acción de despliegue ECS azul/verde de Amazon.

    nota

    Si su repositorio de origen es un bucket de Amazon S3, recuerde comprimir el JSON archivo.

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

    nota

    Como la acción de ECR origen de Amazon crea este archivo, las canalizaciones con una acción de ECR origen de Amazon no necesitan proporcionar un imageDetail.json archivo manualmente.

    Para ver un tutorial sobre cómo crear una canalización que incluya una etapa de ECR origen de Amazon, consulteTutorial: Crear una canalización con una ECR fuente y una ECS implementación de Amazon CodeDeploy .

Diagrama que muestra el imageDetail archivo.json contenido en el depósito de artefactos

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

Clave Valor
Imagen URI image_URI
imageDetail.json

Esta es la JSON estructura, donde URI está la imagenACCOUNTID.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 ECR origen de Amazon genera automáticamente un imageDetail.json archivo cada vez que se introduce un cambio en el repositorio de imágenes. Las acciones de ECR origen imageDetail.json generadas por Amazon se proporcionan como un artefacto de salida desde la acción de origen hasta la siguiente acción del proceso.

Esta es la JSON estructura, donde está el nombre del repositoriodk-image-repo, la imagen URI y la etiqueta de la imagen: ecs-repo 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 imageDetail.json archivo asigna la imagen URI y el nombre del contenedor a la definición de ECS tarea de Amazon de la siguiente manera:

  • 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 ECR repositorio de Amazon en el que se insertó 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 de la implementación blue/green 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 tu proceso se ha saltado la fase de creación, debes crear el JSON archivo manualmente 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. Añada un comando al archivo de especificación de compilación que genera el archivo de definiciones de imágenes en el repositorio de código fuente 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