Usar a plataforma Python do - AWS App Runner

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usar a plataforma Python do

A plataforma AWS App Runner Python fornece tempos de execução gerenciados. Cada tempo de execução facilita a criação e a execução de contêineres com aplicativos web baseados em uma versão do Python. Quando você usa um tempo de execução do Python, o App Runner começa com uma imagem gerenciada do tempo de execução do Python. Essa imagem é baseada na imagem Docker do Amazon Linux e contém o pacote de tempo de execução para uma versão do Python e algumas ferramentas e pacotes de dependências populares. O App Runner usa essa imagem de tempo de execução gerenciada como imagem base e adiciona o código do aplicativo para criar uma imagem do Docker. Em seguida, ele implanta essa imagem para executar seu serviço web em um contêiner.

Você especifica um tempo de execução para seu serviço App Runner ao criar um serviço usando o console do App Runner ou a operação da CreateServiceAPI. Você também pode especificar um tempo de execução como parte do código-fonte. Use a runtime palavra-chave em um arquivo de configuração do App Runner que você inclui no seu repositório de código. A convenção de nomenclatura de um tempo de execução gerenciado é. <language-name><major-version>

Para nomes e versões válidos do tempo de execução do Python, consulte. Informações de lançamento do Python Runtime

O App Runner atualiza o tempo de execução do seu serviço para a versão mais recente em cada implantação ou atualização de serviço. Se seu aplicativo exigir uma versão específica de um tempo de execução gerenciado, você poderá especificá-la usando a runtime-version palavra-chave no arquivo de configuração do App Runner. Você pode bloquear qualquer nível de versão, incluindo uma versão principal ou secundária. O App Runner só faz atualizações de nível inferior no tempo de execução do seu serviço.

Sintaxe da versão para tempos de execução do Python: major[.minor[.patch]]

Por exemplo: 3.8.5

Os exemplos a seguir demonstram o bloqueio de versões:

  • 3.8— Bloqueie as versões principais e secundárias. O App Runner atualiza somente as versões de patch.

  • 3.8.5— Bloqueie uma versão específica do patch. O App Runner não atualiza sua versão de tempo de execução.

Configuração de tempo de execução do Python

Ao escolher um tempo de execução gerenciado, você também deve configurar, no mínimo, comandos de compilação e execução. Você os configura ao criar ou atualizar seu serviço App Runner. Você pode fazer isso usando um dos seguintes métodos:

  • Usando o console do App Runner — Especifique os comandos na seção Configurar compilação do processo de criação ou da guia de configuração.

  • Usando a API App Runner — chame a operação CreateServiceou UpdateServiceda API. Especifique os comandos usando os StartCommand membros BuildCommand e do tipo de CodeConfigurationValuesdados.

  • Usando um arquivo de configuração — especifique um ou mais comandos de compilação em até três fases de compilação e um único comando de execução que serve para iniciar seu aplicativo. Há configurações opcionais adicionais.

Fornecer um arquivo de configuração é opcional. Ao criar um serviço App Runner usando o console ou a API, você especifica se o App Runner obtém suas configurações diretamente quando é criado ou de um arquivo de configuração.

Explicações para versões específicas de tempo de execução

nota

O App Runner agora executa um processo de compilação atualizado para aplicativos com base nas seguintes versões de tempo de execução: Python 3.11 e Node.js 18. Se seu aplicativo for executado em qualquer uma dessas versões de tempo de execução, consulte Versões de tempo de execução gerenciadas e a compilação do App Runner para obter mais informações sobre o processo de compilação revisado. Os aplicativos que usam todas as outras versões de tempo de execução não são afetados e continuam usando o processo de criação original.

Python 3.11 (versão revisada do App Runner)

Use as configurações a seguir no apprunner.yaml para o tempo de execução gerenciado do Python 3.11.

  • Defina a runtime chave na seção superior como python311

    exemplo
    runtime: python311
  • Use o pip3 em vez de pip para instalar dependências.

  • Use o python3 intérprete em vez de. python

  • Execute o pip3 instalador como um pre-run comando. O Python instala dependências fora do diretório. /app Como o App Runner executa a compilação revisada do App Runner para Python 3.11, qualquer coisa instalada fora do /app diretório por meio de comandos na seção Build do arquivo será perdida. apprunner.yaml Para ter mais informações, consulte A versão revisada do App Runner.

    exemplo
    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 obter mais informações, consulte também o exemplo de um arquivo de configuração estendido para Python 3.11 posteriormente neste tópico.

Exemplos de tempo de execução em Python

Os exemplos a seguir mostram os arquivos de configuração do App Runner para criar e executar um serviço Python. O último exemplo é o código-fonte de um aplicativo Python completo que você pode implantar em um serviço de tempo de execução do Python.

nota

A versão de tempo de execução usada nesses exemplos é 3.7.7 e 3.11. Você pode substituí-lo por uma versão que você deseja usar. Para ver a versão mais recente de tempo de execução do Python compatível, consulte. Informações de lançamento do Python Runtime

Este exemplo mostra um arquivo de configuração mínimo que você pode usar com um tempo de execução gerenciado em Python. Para as suposições que o App Runner faz com um arquivo de configuração mínimo, consulte. Exemplos de arquivos de configuração

O Python 3.11 usa os comandos e. pip3 python3 Para obter mais informações, consulte o exemplo de um arquivo de configuração estendido para Python 3.11 posteriormente neste tópico.

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

Este exemplo mostra o uso de todas as chaves de configuração com um tempo de execução gerenciado em Python.

nota

A versão de tempo de execução usada nesses exemplos é a 3.7.7. Você pode substituí-lo por uma versão que você deseja usar. Para ver a versão mais recente de tempo de execução do Python compatível, consulte. Informações de lançamento do Python Runtime

O Python 3.11 usa os comandos e. pip3 python3 Para obter mais informações, consulte o exemplo de um arquivo de configuração estendido para Python 3.11 posteriormente neste tópico.

exemplo 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"

Este exemplo mostra o uso de todas as chaves de configuração com um tempo de execução gerenciado do Python 3.11 no. apprunner.yaml Esse exemplo inclui uma pre-run seção, já que essa versão do Python usa a versão revisada do App Runner.

O pre-run parâmetro só é compatível com a versão revisada do App Runner. Não insira esse parâmetro no arquivo de configuração se o aplicativo usar versões de tempo de execução compatíveis com a compilação original do App Runner. Para ter mais informações, consulte Versões de tempo de execução gerenciadas e a compilação do App Runner.

nota

A versão de tempo de execução usada nesses exemplos é a 3.11. Você pode substituí-lo por uma versão que você deseja usar. Para ver a versão mais recente de tempo de execução do Python compatível, consulte. Informações de lançamento do Python Runtime

exemplo 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"

Este exemplo mostra o código-fonte de um aplicativo Python completo que você pode implantar em um serviço de tempo de execução do Python.

exemplo requirements.txt
pyramid==2.0
exemplo 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()
exemplo apprunner.yaml
version: 1.0 runtime: python3 build: commands: build: - pip install -r requirements.txt run: command: python server.py