

AWS App Runner ya no está abierto a nuevos clientes. Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte [Cambio en la disponibilidad de AWS App Runner](https://docs.aws.amazon.com/apprunner/latest/dg/apprunner-availability-change.html).

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
<a name="service-source-code"></a>

Puede utilizarlos AWS App Runner para crear y gestionar servicios en función de dos tipos de fuente de servicio 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 CI/CD capacidad 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 fuente, consulte[Servicio App Runner basado en una imagen de origen](service-source-image.md).

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](#service-source-code.source-directory) 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 es necesario que proporciones 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 administradas* que proporcionan tiempos de ejecución gestionados para diferentes versiones y entornos de programación.

**Topics**
+ [Proveedores de repositorios de código fuente](#service-source-code.providers)
+ [Directorio de fuentes](#service-source-code.source-directory)
+ [Plataformas gestionadas por App Runner](#service-source-code.managed-platforms)
+ [Fin del soporte para las versiones de tiempo de ejecución gestionado](#service-source-code.managed-platforms.eos)
+ [Versiones administradas en tiempo de ejecución y compilación de App Runner](#service-source-code.build-detail)
+ [Uso de la plataforma Python de](service-source-code-python.md)
+ [Uso de la plataforma Node.js de](service-source-code-nodejs.md)
+ [Uso de la plataforma Java](service-source-code-java.md)
+ [Uso de la plataforma .NET de](service-source-code-net6.md)
+ [Uso de la plataforma PHP de](service-source-code-php.md)
+ [Uso de la plataforma Ruby de](service-source-code-ruby.md)
+ [Uso de la plataforma Go de](service-source-code-go1.md)

## Proveedores de repositorios de código fuente
<a name="service-source-code.providers"></a>

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: [GitHub](https://github.com/)y [Bitbucket](https://bitbucket.org/).

### Implementación desde tu proveedor de repositorios de código fuente
<a name="service-source-code.providers.github"></a>

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](manage-create.md), proporcionas los detalles de la conexión y un directorio fuente para que App Runner despliegue tu código fuente.

**Connections**  
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 [CreateConnection](https://docs.aws.amazon.com/apprunner/latest/api/API_CreateConnection.html)de la API. A continuación, proporciona el ARN de la conexión durante la creación del servicio mediante la acción de la [CreateService](https://docs.aws.amazon.com/apprunner/latest/api/API_CreateService.html)API.

**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 [UpdateService](https://docs.aws.amazon.com/apprunner/latest/api/API_UpdateService.html)API [CreateService](https://docs.aws.amazon.com/apprunner/latest/api/API_CreateService.html)y la API. Para obtener más información, consulte la sección [Directorio de fuentes](#service-source-code.source-directory) siguiente.

Para obtener más información sobre la creación del servicio App Runner, consulte[Creación de un servicio App Runner](manage-create.md). Para obtener más información sobre las conexiones de App Runner, consulte[Administrar las conexiones de App Runner](manage-connections.md).

## Directorio de fuentes
<a name="service-source-code.source-directory"></a>

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 en[Métodos de implementación](manage-deploy.md#manage-deploy.methods).*

**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](service-source-code-php.md).

## Plataformas gestionadas por App Runner
<a name="service-source-code.managed-platforms"></a>

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](https://hub.docker.com/_/amazonlinux) 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](manage-create.md) mediante la consola de App Runner o la operación de la [CreateService](https://docs.aws.amazon.com/apprunner/latest/api/API_CreateService.html)API. 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](config-file.md) 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](config-file.md). 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.

## Fin del soporte para las versiones de tiempo de ejecución gestionado
<a name="service-source-code.managed-platforms.eos"></a>

Cuando el proveedor oficial o la comunidad de un entorno de ejecución en un lenguaje gestionado declara oficialmente que una versión ha finalizado su ciclo de vida útil (EOL), App Runner declara el estado de la versión como *End of Support*. Si su servicio se ejecuta en una versión de tiempo de ejecución de lenguaje administrado que ha llegado al final de Support, se aplican las siguientes políticas y recomendaciones.

**Fin del soporte para una versión de ejecución de idiomas:**
+ **Los servicios existentes** seguirán funcionando y atendiendo el tráfico incluso si utilizan un tiempo de ejecución que haya llegado al final del soporte. Sin embargo, se ejecutarán en tiempos de ejecución no compatibles y ya no recibirán actualizaciones, parches de seguridad ni soporte técnico.
+ Se siguen **permitiendo las actualizaciones de los servicios existentes** que utilizan tiempos de ejecución de End of Support, pero no recomendamos seguir utilizando los tiempos de ejecución de End of Support para un servicio.
+ No se pueden crear **nuevos servicios** utilizando los tiempos de ejecución que han alcanzado la fecha de fin de Support.

**Acciones necesarias para las versiones de ejecución de idiomas con estado de End of Support:**
+ Si el servicio se **basa en una imagen original**, no es necesario que realices ninguna otra acción para ese servicio.
+ Si el servicio se **basa en el código fuente**, actualice la configuración del servicio para utilizar una versión de tiempo de ejecución compatible. Para ello, selecciona una versión de tiempo de ejecución compatible en la [consola de App Runner](https://console.aws.amazon.com/apprunner), actualiza el `runtime` campo del archivo de configuración [apprunner.yaml](config-file.md) o usa las operaciones [CreateService](https://docs.aws.amazon.com/apprunner/latest/api/API_CreateService.html)/[UpdateService](https://docs.aws.amazon.com/apprunner/latest/api/API_UpdateService.html)API o las herramientas IaC para configurar el parámetro. `runtime` Para obtener una lista de los tiempos de ejecución compatibles, consulta la página de *información sobre la versión* correspondiente a cualquier tiempo de ejecución específico de este capítulo.
+ Como alternativa, puedes cambiar a la opción de **fuente de imagen de contenedor** de App Runner. Para obtener más información, consulte [Servicio basado en imágenes](service-source-image.md).

**nota**  
Si vas a pasar de Node.js 12, 14 o 16 a **Node.js 22**, o de Python 3.7 o 3.8 a **Python 3.11**, ten en cuenta que Node.js 22 y Python 3.11 utilizan un proceso de compilación revisado de App Runner que ofrece compilaciones más rápidas y eficientes. Para garantizar la compatibilidad antes de realizar la actualización, te recomendamos que consultes las [instrucciones sobre el proceso de compilación](#service-source-code.build-detail) de la siguiente sección.

En las siguientes tablas, se enumeran las versiones de tiempo de ejecución gestionado por App Runner que tienen una fecha de fin de soporte designada.


| **Versiones en ejecución** | **Fecha de fin de soporte de App Runner** | 
| --- | --- | 
| Tiempos de [ejecución compatibles con](service-source-code-python-releases.md) Python 3.8 | 1 de diciembre de 2025 | 
| Tiempos de [ejecución compatibles con](service-source-code-python-releases.md) Python 3.7 | 1 de diciembre de 2025 | 
| Node.js 1.8 Tiempos de [ejecución compatibles](service-source-code-nodejs-releases.md) | 1 de diciembre de 2025 | 
| Node.js 16 Tiempos de [ejecución compatibles](service-source-code-nodejs-releases.md) | 1 de diciembre de 2025 | 
| Node.js 1.4 Tiempos de [ejecución compatibles](service-source-code-nodejs-releases.md) | 1 de diciembre de 2025 | 
| Node.js 1.2 Tiempos de [ejecución compatibles](service-source-code-nodejs-releases.md) | 1 de diciembre de 2025 | 
| .NET 6 \* | 1 de diciembre de 2025 | 
| PHP 8.1 \* | 31 de diciembre de 2025 | 
| Ruby 3.1 \* | 1 de diciembre de 2025 | 
| Ve 1 \* | 1 de diciembre de 2025 | 

**\*** App Runner no lanzará ninguna versión en ningún idioma nuevo para los tiempos de ejecución marcados con un asterisco (\*). Estos tiempos de ejecución son los siguientes: .NET, PHP, Ruby y Go. Si tienes un servicio basado en código configurado para estos tiempos de ejecución, te recomendamos que realices una de las siguientes acciones:
+ Si corresponde, cambie la configuración del servicio a un entorno de ejecución gestionado compatible diferente.
+ Como alternativa, puedes crear una imagen de contenedor personalizada con la versión de tiempo de ejecución que prefieras e implementarla con la [Servicio basado en imágenes](service-source-image.md) opción de App Runner. Puede alojar su imagen en Amazon ECR.

## Versiones administradas en tiempo de ejecución y compilación de App Runner
<a name="service-source-code.build-detail"></a>

App Runner ofrece un proceso de compilación actualizado para las aplicaciones que se ejecutan en los tiempos de ejecución de las versiones principales más recientes. 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-run`](config-file-ref.md#config-file-ref.run)pará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 manteneros informados sobre nuestros tiempos de ejecución actuales.



- ** Python – [Información de lanzamiento](service-source-code-python-releases.md)  **
  - ****Versiones de ejecución**:** Python 3.1 (\!) / ****Proceso de compilación**:** Revisado / ****Fecha de fin de soporte de App Runner**:** 
  - ****Versiones de ejecución**:** Python 3.8 / ****Proceso de compilación**:** Original / ****Fecha de fin de soporte de App Runner**:** 1 de diciembre de 2025
  - ****Versiones de ejecución**:** Python 3.7 / ****Proceso de compilación**:** Original / ****Fecha de fin de soporte de App Runner**:** 1 de diciembre de 2025

- ** Node.js: [Información de publicación](service-source-code-nodejs-releases.md) **
  - ****Versiones de ejecución**:** Node.js 22 / ****Proceso de compilación**:** Revisado / ****Fecha de fin de soporte de App Runner**:** 
  - ****Versiones de ejecución**:** Node.js 18 / ****Proceso de compilación**:** Revisado / ****Fecha de fin de soporte de App Runner**:** 1 de diciembre de 2025
  - ****Versiones de ejecución**:** Node.js 16 / ****Proceso de compilación**:** Original / ****Fecha de fin de soporte de App Runner**:** 1 de diciembre de 2025
  - ****Versiones de ejecución**:** Node.js 14 / ****Proceso de compilación**:** Original / ****Fecha de fin de soporte de App Runner**:** 1 de diciembre de 2025
  - ****Versiones de ejecución**:** Node.js 12 / ****Proceso de compilación**:** Original / ****Fecha de fin de soporte de App Runner**:** 1 de diciembre de 2025

- ** Corretto — [Información de lanzamiento](service-source-code-java-releases.md) **
  - ****Versiones de ejecución**:** Corretto 11 / ****Proceso de compilación**:** Original / ****Fecha de fin de soporte de App Runner**:** 
  - ****Versiones de ejecución**:** Corretto 8 / ****Proceso de compilación**:** Original / ****Fecha de fin de soporte de App Runner**:** 

- ** .NET: [Información sobre la versión](service-source-code-dotnet-releases.md) **
  - ****Versiones de ejecución**:** .NET 6 \*
  - ****Proceso de compilación**:** Original
  - ****Fecha de fin de soporte de App Runner**:** 1 de diciembre de 2025

- ** PHP: [Información sobre la versión](service-source-code-php-releases.md) **
  - ****Versiones de ejecución**:** PHP 8.1 \*
  - ****Proceso de compilación**:** Original
  - ****Fecha de fin de soporte de App Runner**:** 31 de diciembre de 2025

- ** Ruby: [Información de lanzamiento](service-source-code-ruby-releases.md) **
  - ****Versiones de ejecución**:** Ruby 3.1 \*
  - ****Proceso de compilación**:** Original
  - ****Fecha de fin de soporte de App Runner**:** 1 de diciembre de 2025

- ** Go: [Información sobre el lanzamiento](service-source-code-go-releases.md) **
  - ****Versiones de ejecución**:** Ve 1 \*
  - ****Proceso de compilación**:** Original
  - ****Fecha de fin de soporte de App Runner**:** 1 de diciembre de 2025



**nota**  
Algunos de los tiempos de ejecución listados incluyen una fecha **de fin de Support**. Para obtener más información, consulte [Fin del soporte para las versiones de tiempo de ejecución gestionado](#service-source-code.managed-platforms.eos).

**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](service-source-code-python.md#service-source-code-python.callouts) el tema de la *plataforma Python*.

### Más información sobre las compilaciones y la migración de App Runner
<a name="service-source-code.build-detail.builds-and-migr"></a>

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
<a name="service-source-code.build-detail.v1"></a>

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.

1. 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.

1. 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.

1. 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**.

1. 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.

1. 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
<a name="service-source-code.build-detail.v2"></a>

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 compilación de 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.

   1. Run Command `pre-build`. 

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

   1. 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.

1. **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.

   1. 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.

1. 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.yaml`Al 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](config-file-ref.md#config-file-ref.run) el *capítulo del archivo de configuración de App Runner*.

#### Requisitos de servicio para tener en cuenta la migración
<a name="service-source-code.build-detail.migrating"></a>

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](#service-source-code.build-detail.v2) 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-build``build`, 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 del`apprunner.yaml`. Para obtener más información, consulte [Configuración de las opciones de servicio de App Runner mediante un archivo de configuración](config-file.md).

**Ejecutar los `build` comandos dos veces**
+ La [versión original de App Runner](#service-source-code.build-detail.v1) 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.