Servicio App Runner basado en código fuente - AWS App Runner

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.

Servicio App Runner basado en código fuente

Puede utilizarlos AWS App Runner para crear y administrar servicios en función de dos tipos de fuentes de servicios fundamentalmente diferentes: el código fuente y la imagen fuente. Independientemente del tipo de fuente, App Runner se encarga de iniciar, ejecutar, escalar y equilibrar la carga del servicio. Puedes usar la función de CI/CD de App Runner para realizar un seguimiento de los cambios en la imagen o el código fuente. Cuando App Runner descubre un cambio, compila automáticamente (para el código fuente) e implementa la nueva versión en tu servicio de App Runner.

En este capítulo se analizan los servicios basados en el código fuente. Para obtener información sobre los servicios basados en una imagen de origen, consulteServicio App Runner basado en una imagen de origen.

El código fuente es el código de aplicación que App Runner crea e implementa para usted. Dirige App Runner a un directorio fuente de un repositorio de código y eliges un tiempo de ejecución adecuado que corresponda a una versión de la plataforma de programación. App Runner crea una imagen basada en la imagen base del motor de ejecución y en el código de la aplicación. A continuación, inicia un servicio que ejecuta un contenedor en función de esta imagen.

App Runner proporciona cómodos tiempos de ejecución gestionados específicos de la plataforma. Cada uno de estos tiempos de ejecución crea una imagen de contenedor a partir del código fuente y agrega dependencias de tiempo de ejecución del idioma a la imagen. No necesitas proporcionar instrucciones de configuración y compilación del contenedor, como un Dockerfile.

Los subtemas de este capítulo tratan sobre las distintas plataformas compatibles con App Runner, es decir, plataformas gestionadas que proporcionan tiempos de ejecución gestionados para diferentes versiones y entornos de programación.

Proveedores de repositorios de código fuente

App Runner despliega el código fuente leyéndolo desde un repositorio de código fuente. App Runner es compatible con dos proveedores de repositorios de código fuente: GitHuby Bitbucket.

Implementación desde tu proveedor de repositorios de código fuente

Para implementar el código fuente en un servicio de App Runner desde un repositorio de código fuente, App Runner establece una conexión con él. Cuando utilizas la consola de App Runner para crear un servicio, proporcionas los detalles de la conexión y un directorio fuente para que App Runner despliegue tu código fuente.

Conexiones

Los detalles de conexión se proporcionan como parte del procedimiento de creación del servicio. Cuando utilizas la API de App Runner o la AWS CLI, una conexión es un recurso independiente. En primer lugar, se crea la conexión mediante la acción CreateConnectionde la API. A continuación, proporciona el ARN de la conexión durante la creación del servicio mediante la acción de la CreateServiceAPI.

Directorio de origen

Al crear un servicio, también se proporciona un directorio de origen. De forma predeterminada, App Runner usa el directorio raíz del repositorio como directorio de origen. El directorio fuente es la ubicación del repositorio de código fuente que almacena el código fuente y los archivos de configuración de la aplicación. Los comandos build e start también se ejecutan desde el directorio fuente. Cuando utilizas la API de App Runner o la AWS CLI para crear o actualizar un servicio, proporcionas el directorio de origen en las acciones de la UpdateServiceAPI CreateServicey la API. Para obtener más información, consulte la sección Directorio de fuentes siguiente.

Para obtener más información sobre la creación del servicio App Runner, consulteCómo crear un servicio de App Runner. Para obtener más información sobre las conexiones de App Runner, consulteAdministrar las conexiones de App Runner.

Directorio de fuentes

Al crear un servicio de App Runner, puedes proporcionar el directorio de origen, junto con el repositorio y la rama. Defina el valor del campo Directorio fuente en la ruta del directorio del repositorio que almacena el código fuente y los archivos de configuración de la aplicación. App Runner ejecuta los comandos de compilación e inicio desde la ruta del directorio de origen que proporciones.

Introduzca el valor de la ruta del directorio de origen como absoluto desde el directorio del repositorio raíz. Si no especificas un valor, el valor predeterminado es el directorio de nivel superior del repositorio, también conocido como directorio raíz del repositorio.

También tienes la opción de proporcionar diferentes rutas de directorio de origen además del directorio del repositorio de nivel superior. Esto admite una arquitectura de repositorio monorepo, lo que significa que el código fuente de varias aplicaciones se almacena en un repositorio. Para crear y dar soporte a varios servicios de App Runner desde un único monorepo, especifica diferentes directorios de origen al crear cada servicio.

nota

Si especificas el mismo directorio de origen para varios servicios de App Runner, ambos servicios se implementarán y funcionarán de forma individual.

Si opta por utilizar un archivo de apprunner.yaml configuración para definir los parámetros del servicio, colóquelo en la carpeta del directorio de origen del repositorio.

Si la opción de activación del despliegue está configurada como Automático, los cambios que realices en el directorio de origen activarán un despliegue automático. Solo los cambios en la ruta del directorio de origen activarán una implementación automática. Es importante entender cómo afecta la ubicación del directorio de origen al alcance de una implementación automática. Para obtener más información, consulte las implementaciones automatizadas enMétodos de implementación.

nota

Si tu servicio de App Runner utiliza los tiempos de ejecución gestionados por PHP y quieres designar un directorio fuente distinto del repositorio raíz predeterminado, es importante que utilices la versión de tiempo de ejecución de PHP correcta. Para obtener más información, consulte Uso de la plataforma PHP de .

Plataformas gestionadas por App Runner

Las plataformas gestionadas de App Runner proporcionan tiempos de ejecución gestionados para varios entornos de programación. Cada tiempo de ejecución administrado facilita la creación y la ejecución de contenedores basados en una versión de un lenguaje de programación o entorno de ejecución. Cuando usas un tiempo de ejecución administrado, App Runner comienza con una imagen de tiempo de ejecución administrado. Esta imagen se basa en la imagen de Docker de Amazon Linux y contiene un paquete de ejecución de idiomas, así como algunas herramientas y paquetes de dependencias populares. App Runner usa esta imagen de tiempo de ejecución administrado como imagen base y agrega el código de la aplicación para crear una imagen de Docker. A continuación, implementa esta imagen para ejecutar el servicio web en un contenedor.

Usted especifica un tiempo de ejecución para su servicio de App Runner al crear un servicio mediante la consola de App Runner o la operación de la CreateServiceAPI. También puedes especificar un tiempo de ejecución como parte de tu código fuente. Usa la runtime palabra clave en un archivo de configuración de App Runner que incluyas en tu repositorio de código. La convención de nomenclatura de un tiempo de ejecución gestionado es. <language-name><major-version>

App Runner actualiza el tiempo de ejecución del servicio a la versión más reciente en cada implementación o actualización del servicio. Si su aplicación requiere una versión específica de un tiempo de ejecución administrado, puede especificarla mediante la runtime-version palabra clave del archivo de configuración de App Runner. Puedes bloquearla en cualquier nivel de versión, incluida una versión principal o secundaria. App Runner solo realiza actualizaciones de nivel inferior en el tiempo de ejecución de tu servicio.

Versiones de tiempo de ejecución gestionadas y compilación de App Runner

App Runner ahora ofrece un proceso de compilación actualizado para sus aplicaciones. Actualmente, invoca la nueva compilación para servicios que se ejecutan en tiempos de ejecución gestionados Python 3.11 y Node.js 18, publicada por última vez el 29 de diciembre de 2023. Este proceso de compilación revisado es más rápido y eficiente. También crea una imagen final con un tamaño más reducido que solo contiene el código fuente, los artefactos de compilación y los tiempos de ejecución necesarios para ejecutar la aplicación.

Nos referimos al proceso de compilación más reciente como la versión revisada de App Runner y al proceso de compilación original como la versión original de App Runner. Para evitar cambios repentinos en las versiones anteriores de las plataformas de ejecución, App Runner solo aplica la compilación revisada a versiones de ejecución específicas, normalmente a las versiones principales recién publicadas.

Hemos introducido un nuevo componente en el archivo de apprunner.yaml configuración para que la compilación revisada sea compatible con versiones anteriores para un caso de uso muy específico y, además, para ofrecer más flexibilidad a la hora de configurar la compilación de la aplicación. Este es el pre-runparámetro opcional. Explicamos cuándo usar este parámetro junto con otra información útil sobre las compilaciones en las secciones siguientes.

En la siguiente tabla se indica qué versión de la compilación de App Runner se aplica a versiones específicas de tiempo de ejecución gestionado. Seguiremos actualizando este documento para mantenerte informado sobre nuestros tiempos de ejecución actuales.

Plataforma Construcción original Construcción revisada

Python – Información de lanzamiento

  • Python 3.8

  • Python 3.7

  • Python 3.1 (!)

Node.js: Información de publicación

  • Node.js 16

  • Node.js 14

  • Node.js 12

  • Node.js 18

Corretto — Información de lanzamiento

  • Corretto 11

  • Corretto 8

.NET: Información de publicación

  • .NET 6

PHP: Información sobre la versión

  • PHP 8.1

Ruby: Información de lanzamiento

  • Ruby 3.1

Go: Información sobre el lanzamiento

  • Go 1

importante

Python 3.11: tenemos recomendaciones específicas para la configuración de compilación de los servicios que utilizan el tiempo de ejecución gestionado de Python 3.11. Para obtener más información, consulte Llamadas para versiones de tiempo de ejecución específicas el tema de la plataforma Python.

Más información sobre las compilaciones y la migración de App Runner

Al migrar la aplicación a un entorno de ejecución más reciente que utilice la compilación revisada, es posible que tengas que modificar ligeramente la configuración de la compilación.

Para dar contexto a las consideraciones de migración, primero describiremos los procesos de alto nivel tanto para la compilación original de App Runner como para la versión revisada. Seguiremos con una sección en la que se describen los atributos específicos de tu servicio que podrían requerir algunas actualizaciones de configuración.

La versión original de App Runner

El proceso de creación de la aplicación App Runner original aprovecha el AWS CodeBuild servicio. Los pasos iniciales se basan en imágenes seleccionadas por el CodeBuild servicio. Sigue un proceso de compilación de Docker que usa la imagen de tiempo de ejecución administrada de App Runner correspondiente como imagen base.

Los pasos generales son los siguientes:

  1. Ejecute pre-build los comandos en una imagen CodeBuild seleccionada.

    Los pre-build comandos son opcionales. Solo se pueden especificar en el archivo apprunner.yaml de configuración.

  2. Ejecute los build comandos utilizando CodeBuild la misma imagen del paso anterior.

    Los build comandos son obligatorios. Se pueden especificar en la consola de App Runner, en la API de App Runner o en el archivo apprunner.yaml de configuración.

  3. Ejecuta una compilación de Docker para generar una imagen basada en la imagen de tiempo de ejecución gestionada por App Runner para tu plataforma y versión de ejecución específicas.

  4. Copia el /app directorio de la imagen que generamos en el paso 2. El destino es la imagen basada en la imagen de tiempo de ejecución gestionada por App Runner, que generamos en el paso 3.

  5. Vuelva a ejecutar los build comandos en la imagen de tiempo de ejecución gestionada por App Runner generada. Volvemos a ejecutar los comandos de compilación para generar artefactos de compilación a partir del código fuente del /app directorio que copiamos en él en el paso 4. App Runner implementará esta imagen más adelante para ejecutar el servicio web en un contenedor.

    Los build comandos son obligatorios. Se pueden especificar en la consola de App Runner, en la API de App Runner o en el archivo apprunner.yaml de configuración.

  6. Ejecute post-build los comandos de la CodeBuild imagen del paso 2.

    Los post-build comandos son opcionales. Solo se pueden especificar en el archivo apprunner.yaml de configuración.

Una vez completada la compilación, App Runner implementa la imagen de tiempo de ejecución gestionada por App Runner generada en el paso 5 para ejecutar el servicio web en un contenedor.

La versión revisada de App Runner

El proceso de creación revisado es más rápido y eficiente que el proceso de creación original descrito en la sección anterior. Elimina la duplicación de los comandos de compilación que se producía en la versión anterior. También crea una imagen final con un tamaño más reducido que solo contiene el código fuente, los artefactos de compilación y los tiempos de ejecución necesarios para ejecutar la aplicación.

Este proceso de compilación utiliza una compilación de varias etapas de Docker. Los pasos generales del proceso son los siguientes:

  1. Etapa de compilación: inicia un proceso de compilación de docker que ejecute pre-build y build comanda sobre las imágenes de compilación de App Runner.

    1. Copia el código fuente de la aplicación en el /app directorio.

      nota

      Este /app directorio se designa como directorio de trabajo en todas las etapas de la compilación de Docker.

    2. Run Command pre-build.

      Los pre-build comandos son opcionales. Solo se pueden especificar en el archivo apprunner.yaml de configuración.

    3. Ejecute los build comandos.

      Los build comandos son obligatorios. Se pueden especificar en la consola de App Runner, en la API de App Runner o en el archivo apprunner.yaml de configuración.

  2. Etapa de empaquetado: genera la imagen final del contenedor del cliente, que también se basa en la imagen de ejecución de App Runner.

    1. Copia el /app directorio de la etapa de compilación anterior a la nueva imagen de ejecución. Esto incluye el código fuente de la aplicación y los artefactos de compilación de la etapa anterior.

    2. Ejecute los pre-run comandos. Si necesita modificar la imagen en tiempo de ejecución fuera del /app directorio mediante los build comandos, añada los mismos comandos o los necesarios a este segmento del archivo de apprunner.yaml configuración.

      Se trata de un parámetro nuevo que se introdujo para admitir la versión revisada de App Runner.

      Los pre-run comandos son opcionales. Solo se pueden especificar en el archivo apprunner.yaml de configuración.

      Notas
      • Los pre-run comandos solo son compatibles con la versión revisada. No los añada al archivo de configuración si el servicio utiliza versiones en tiempo de ejecución que utilizan la compilación original.

      • Si no necesita modificar nada fuera del /app directorio con los build comandos, no necesita pre-run especificarlos.

  3. Etapa posterior a la compilación: esta etapa se reanuda desde la etapa de compilación y ejecuta post-build los comandos.

    1. Ejecute los post-build comandos dentro del /app directorio.

      Los post-build comandos son opcionales. Solo se pueden especificar en el archivo apprunner.yaml de configuración.

Una vez completada la compilación, App Runner implementa la imagen de ejecución para ejecutar el servicio web en un contenedor.

nota

apprunner.yamlAl configurar el proceso de compilación, no se deje engañar por las env entradas de la sección Ejecutar. Aunque el parámetro de pre-run comando, al que se hace referencia en el paso 2 (b), reside en la sección Ejecutar, no utilices el env parámetro de la sección Ejecutar para configurar la compilación. Los pre-run comandos solo hacen referencia a las env variables definidas en la sección Compilación del archivo de configuración. Para obtener más información, consulte Sección de ejecución el capítulo del archivo de configuración de App Runner.

Requisitos de servicio para tener en cuenta la migración

Si el entorno de su aplicación tiene alguno de estos dos requisitos, tendrá que revisar la configuración de compilación añadiendo pre-run comandos.

  • Si necesitas modificar algo fuera del /app directorio con los build comandos.

  • Si necesita ejecutar los build comandos dos veces para crear el entorno requerido. Se trata de un requisito muy inusual. La gran mayoría de las versiones no lo harán.

Modificaciones fuera del /app directorio

  • La versión revisada de App Runner asume que la aplicación no tiene dependencias fuera del /app directorio.

  • Los comandos que proporciones con el apprunner.yaml archivo, la API de App Runner o la consola de App Runner deben generar artefactos de compilación en el /app directorio.

  • Puedes modificar los post-build comandos pre-buildbuild, y para asegurarte de que todos los artefactos de compilación estén en el /app directorio.

  • Si la aplicación requiere que la compilación modifique aún más la imagen generada para el servicio, fuera del /app directorio, puede usar los nuevos pre-run comandos delapprunner.yaml. Para obtener más información, consulte Configuración de las opciones de servicio de App Runner mediante un archivo de configuración.

Ejecutar los build comandos dos veces

  • La versión original de App Runner ejecuta los build comandos dos veces, primero en el paso 2 y luego nuevamente en el paso 5. La versión revisada de App Runner corrige esta redundancia y solo ejecuta los build comandos una vez. Si tu aplicación requiere que los build comandos se ejecuten dos veces, algo inusual, en la versión revisada de App Runner se ofrece la opción de especificar y volver a ejecutar los mismos comandos mediante el pre-run parámetro. Al hacerlo, se conserva el mismo comportamiento de compilación doble.