Uso de la plataforma Python de - 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.

Uso de la plataforma Python de

La plataforma AWS App Runner Python proporciona tiempos de ejecución gestionados. Cada tiempo de ejecución facilita la creación y ejecución de contenedores con aplicaciones web basadas en una versión de Python. Cuando utilizas un entorno de ejecución de Python, App Runner comienza con una imagen de tiempo de ejecución de Python gestionada. Esta imagen se basa en la imagen de Docker de Amazon Linux y contiene el paquete de tiempo de ejecución de una versión de Python y 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>

Para obtener nombres y versiones de tiempo de ejecución de Python válidos, consulteInformación sobre la versión del motor de ejecución de Python.

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.

Sintaxis de versión para tiempos de ejecución de Python: major[.minor[.patch]]

Por ejemplo: 3.8.5

Los siguientes ejemplos muestran el bloqueo de versiones:

  • 3.8— Bloquee las versiones principales y secundarias. App Runner actualiza solo las versiones con parches.

  • 3.8.5— Bloquear una versión de parche específica. App Runner no actualiza tu versión en tiempo de ejecución.

Configuración del tiempo de ejecución de Python

Al elegir un tiempo de ejecución administrado, también debe configurar, como mínimo, los comandos de compilación y ejecución. Los configuras al crear o actualizar tu servicio App Runner. Puede hacerlo mediante uno de los siguientes métodos:

  • Mediante la consola de App Runner: especifique los comandos en la sección Configurar compilación del proceso de creación o en la pestaña de configuración.

  • Uso de la API de App Runner: llame a la operación CreateServiceo UpdateServiceAPI. Especifique los comandos mediante los StartCommand miembros BuildCommand y del tipo de CodeConfigurationValuesdatos.

  • Uso de un archivo de configuración: especifique uno o más comandos de compilación en un máximo de tres fases de compilación y un solo comando de ejecución que sirva para iniciar la aplicación. Hay opciones de configuración opcionales adicionales.

Proporcionar un archivo de configuración es opcional. Al crear un servicio de App Runner mediante la consola o la API, debe especificar si App Runner obtiene los ajustes de configuración directamente al crearlos o de un archivo de configuración.

Llamadas para versiones de tiempo de ejecución específicas

nota

App Runner ahora ejecuta un proceso de compilación actualizado para aplicaciones basado en las siguientes versiones de tiempo de ejecución: Python 3.11 y Node.js 18. Si la aplicación se ejecuta en alguna de estas versiones en tiempo de ejecución, consulte Versiones de tiempo de ejecución gestionadas y compilación de App Runner para obtener más información sobre el proceso de compilación revisado. Las aplicaciones que utilizan todas las demás versiones en tiempo de ejecución no se ven afectadas y siguen utilizando el proceso de compilación original.

Python 3.11 (versión revisada de App Runner)

Usa la siguiente configuración en apprunner.yaml para el tiempo de ejecución administrado de Python 3.11.

  • Establece la clave de la sección superior en runtime python311

    ejemplo
    runtime: python311
  • Use el pip3 en lugar de pip para instalar las dependencias.

  • Utilice el python3 intérprete en lugar de. python

  • Ejecute el pip3 instalador como un pre-run comando. Python instala las dependencias fuera del /app directorio. Dado que App Runner ejecuta la versión revisada de App Runner para Python 3.11, se perderá todo lo que se instale fuera del /app directorio mediante los comandos de la sección Compilación del apprunner.yaml archivo. Para obtener más información, consulte La versión revisada de App Runner.

    ejemplo
    run: runtime-version: 3.11 pre-run: - pip3 install pipenv - pipenv install - python3 copy-global-files.py command: pipenv run gunicorn django_apprunner.wsgi --log-file -

Para obtener más información, consulte también el ejemplo de un archivo de configuración extendido para Python 3.11 más adelante en este tema.

Ejemplos de tiempo de ejecución de Python

Los siguientes ejemplos muestran los archivos de configuración de App Runner para crear y ejecutar un servicio de Python. El último ejemplo es el código fuente de una aplicación Python completa que se puede implementar en un servicio de tiempo de ejecución de Python.

nota

La versión en tiempo de ejecución que se utiliza en estos ejemplos es la 3.7.7 y la 3.11. Puede sustituirla por la versión que desee utilizar. Para ver la última versión de tiempo de ejecución de Python compatible, consulteInformación sobre la versión del motor de ejecución de Python.

En este ejemplo, se muestra un archivo de configuración mínimo que puede utilizar con un entorno de ejecución gestionado por Python. Para ver las suposiciones que App Runner hace con un archivo de configuración mínimo, consulteEjemplos de archivos de configuración.

Python 3.11 usa los python3 comandos pip3 y. Para obtener más información, consulte el ejemplo de un archivo de configuración extendido para Python 3.11 más adelante en este tema.

ejemplo apprunner.yaml
version: 1.0 runtime: python3 build: commands: build: - pip install pipenv - pipenv install run: command: python app.py

Este ejemplo muestra el uso de todas las claves de configuración con un entorno de ejecución gestionado por Python.

nota

La versión de tiempo de ejecución que se utiliza en estos ejemplos es la 3.7.7. Puede sustituirla por la versión que desee utilizar. Para ver la última versión de tiempo de ejecución de Python compatible, consulteInformación sobre la versión del motor de ejecución de Python.

Python 3.11 usa los python3 comandos pip3 y. Para obtener más información, consulte el ejemplo de un archivo de configuración extendido para Python 3.11 más adelante en este tema.

ejemplo apprunner.yaml
version: 1.0 runtime: python3 build: commands: pre-build: - wget -c https://s3.amazonaws.com/DOC-EXAMPLE-BUCKET/test-lib.tar.gz -O - | tar -xz build: - pip install pipenv - pipenv install post-build: - python manage.py test env: - name: DJANGO_SETTINGS_MODULE value: "django_apprunner.settings" - name: MY_VAR_EXAMPLE value: "example" run: runtime-version: 3.7.7 command: pipenv run gunicorn django_apprunner.wsgi --log-file - network: port: 8000 env: MY_APP_PORT env: - name: MY_VAR_EXAMPLE value: "example" secrets: - name: my-secret value-from: "arn:aws:secretsmanager:us-east-1:123456789012:secret:testingstackAppRunnerConstr-kJFXde2ULKbT-S7t8xR:username::" - name: my-parameter value-from: "arn:aws:ssm:us-east-1:123456789012:parameter/parameter-name" - name: my-parameter-only-name value-from: "parameter-name"

En este ejemplo se muestra el uso de todas las claves de configuración con un entorno de ejecución gestionado por Python 3.11 en. apprunner.yaml En este ejemplo se incluye una pre-run sección, ya que esta versión de Python usa la versión revisada de App Runner.

El pre-run parámetro solo es compatible con la versión revisada de App Runner. No insertes este parámetro en el archivo de configuración si la aplicación usa versiones en tiempo de ejecución compatibles con la compilación original de App Runner. Para obtener más información, consulte Versiones de tiempo de ejecución gestionadas y compilación de App Runner.

nota

La versión en tiempo de ejecución que se usa en estos ejemplos es la 3.11. Puede sustituirla por la versión que desee utilizar. Para ver la última versión de tiempo de ejecución de Python compatible, consulteInformación sobre la versión del motor de ejecución de Python.

ejemplo apprunner.yaml
version: 1.0 runtime: python311 build: commands: pre-build: - wget -c https://s3.amazonaws.com/DOC-EXAMPLE-BUCKET/test-lib.tar.gz -O - | tar -xz build: - pip3 install pipenv - pipenv install post-build: - python3 manage.py test env: - name: DJANGO_SETTINGS_MODULE value: "django_apprunner.settings" - name: MY_VAR_EXAMPLE value: "example" run: runtime-version: 3.11 pre-run: - pip3 install pipenv - pipenv install - python3 copy-global-files.py command: pipenv run gunicorn django_apprunner.wsgi --log-file - network: port: 8000 env: MY_APP_PORT env: - name: MY_VAR_EXAMPLE value: "example" secrets: - name: my-secret value-from: "arn:aws:secretsmanager:us-east-1:123456789012:secret:testingstackAppRunnerConstr-kJFXde2ULKbT-S7t8xR:username::" - name: my-parameter value-from: "arn:aws:ssm:us-east-1:123456789012:parameter/parameter-name" - name: my-parameter-only-name value-from: "parameter-name"

En este ejemplo, se muestra el código fuente de una aplicación de Python completa que se puede implementar en un servicio de tiempo de ejecución de Python.

ejemplo requirements.txt
pyramid==2.0
ejemplo server.py
from wsgiref.simple_server import make_server from pyramid.config import Configurator from pyramid.response import Response import os def hello_world(request): name = os.environ.get('NAME') if name == None or len(name) == 0: name = "world" message = "Hello, " + name + "!\n" return Response(message) if __name__ == '__main__': port = int(os.environ.get("PORT")) with Configurator() as config: config.add_route('hello', '/') config.add_view(hello_world, route_name='hello') app = config.make_wsgi_app() server = make_server('0.0.0.0', port, app) server.serve_forever()
ejemplo apprunner.yaml
version: 1.0 runtime: python3 build: commands: build: - pip install -r requirements.txt run: command: python server.py