Desenvolvendo código de aplicativo para o App Runner - 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á.

Desenvolvendo código de aplicativo para o App Runner

Este capítulo discute as informações de tempo de execução e as diretrizes de desenvolvimento que você deve considerar ao desenvolver ou migrar o código do aplicativo para implantação em. AWS App Runner

Informações de tempo de execução

Se você fornecer uma imagem de contêiner ou se o App Runner criar uma para você, o App Runner executa o código do aplicativo em uma instância de contêiner. Aqui estão alguns aspectos principais do ambiente de tempo de execução da instância de contêiner.

  • Suporte de estrutura — O App Runner oferece suporte a qualquer imagem que implemente um aplicativo web. É independente da linguagem de programação que você escolher e do servidor de aplicativos web ou estrutura que você usa, se você usar algum. Para sua conveniência, fornecemos tempos de execução gerenciados específicos da plataforma para várias plataformas de programação, a fim de agilizar o processo de criação de aplicativos e a criação de imagens abstratas.

  • Solicitações da Web — o App Runner fornece suporte para HTTP 1.0 e HTTP 1.1 para as instâncias do contêiner. Para obter mais informações sobre como configurar seu serviço, consulteConfigurando um serviço App Runner. Você não precisa implementar o tratamento do tráfego seguro HTTPS. O App Runner redireciona todas as solicitações HTTP recebidas para os endpoints HTTPS correspondentes. Você não precisa definir nenhuma configuração para habilitar o redirecionamento das solicitações HTTP da web. O App Runner encerra o TLS antes de passar solicitações para a instância do contêiner do aplicativo.

    nota
    • Há um limite total de tempo limite de solicitação de 120 segundos nas solicitações HTTP. Os 120 segundos incluem o tempo que o aplicativo leva para ler a solicitação, incluindo o corpo, e concluir a gravação da resposta HTTP.

    • O limite de tempo limite de leitura e resposta da solicitação depende dos aplicativos que você usa. Esses aplicativos podem ter seus próprios tempos limite internos, como o servidor HTTP para Python, o Gunicorn, que tem um limite de tempo limite padrão de 30 segundos. Nesses casos, o limite de tempo limite do aplicativo substitui o limite de 120 segundos do App Runner.

    • Você não precisa configurar conjuntos de criptografia TLS ou quaisquer outros parâmetros, pois o App Runner, sendo um serviço totalmente gerenciado, gerencia a terminação de TLS para você.

  • Aplicativos sem estado — Atualmente, o App Runner não oferece suporte a um aplicativo com estado. Portanto, o App Runner não garante a persistência do estado além da duração do processamento de uma única solicitação da web recebida.

  • Armazenamento — O App Runner aumenta ou diminui automaticamente as instâncias do seu aplicativo App Runner de acordo com o volume de tráfego de entrada. Você pode configurar as opções de escalonamento automático para seu aplicativo App Runner. Como o número de instâncias atualmente ativas que processam as solicitações da web é baseado no volume de tráfego de entrada, o App Runner não pode garantir que os arquivos possam persistir além do processamento de uma única solicitação. Portanto, o App Runner implementa o sistema de arquivos em sua instância de contêiner como armazenamento efêmero, o que significa que os arquivos são transitórios. Por exemplo, os arquivos não persistem quando você pausa e retoma o serviço App Runner.

    O App Runner fornece 3 GB de armazenamento efêmero e usa uma parte dos 3 GB de armazenamento efêmero para sua imagem de contêiner extraída, compactada e não compactada na instância. O armazenamento efêmero restante pode ser usado pelo serviço App Runner. No entanto, este não é um armazenamento permanente devido à sua natureza apátrida.

    nota

    Pode haver cenários em que os arquivos de armazenamento persistam em todas as solicitações. Por exemplo, se a próxima solicitação chegar à mesma instância, os arquivos de armazenamento persistirão. A persistência dos arquivos de armazenamento nas solicitações pode ser útil em determinadas situações. Por exemplo, ao lidar com uma solicitação, você pode armazenar em cache os arquivos que seu aplicativo baixa se futuras solicitações precisarem deles. Isso pode acelerar o processamento futuro de solicitações, mas não pode garantir os ganhos de velocidade. Seu código não deve presumir que um arquivo que foi baixado em uma solicitação anterior ainda exista.

    Para garantir o armazenamento em cache usando um armazenamento de dados na memória de alta taxa de transferência e baixa latência, use um serviço como o Amazon. ElastiCache

  • Variáveis de ambiente — Por padrão, o App Runner disponibiliza a variável de PORT ambiente em sua instância de contêiner. Você pode configurar o valor da variável com informações da porta e adicionar variáveis e valores de ambiente personalizados. Você também pode referenciar dados confidenciais armazenados no Parameter Store AWS Secrets Managerou no AWS Systems Manager Parameter Store como variáveis de ambiente. Para obter mais informações sobre a criação de variáveis de ambiente, consulteFazendo referência a variáveis de ambiente.

  • Função da instância — Se o código do seu aplicativo fizer chamadas para qualquer AWS serviço, usando as APIs de serviço ou um dos AWS SDKs, crie uma função de instância usando AWS Identity and Access Management (IAM). Em seguida, anexe-o ao seu serviço App Runner ao criá-lo. Inclua todas as permissões de ação de AWS serviço que seu código exige em sua função de instância. Para ter mais informações, consulte Função da instância.

Diretrizes de desenvolvimento de código

Considere essas diretrizes ao desenvolver código para um aplicativo web do App Runner.

  • Crie código sem estado — Projete o aplicativo web que você implanta no serviço App Runner para ser sem estado. Seu código deve presumir que nenhum estado persiste além da duração do processamento de uma única solicitação da web recebida.

  • Excluir arquivos temporários — Quando você cria arquivos, eles são armazenados em um sistema de arquivos e ocupam parte da alocação de armazenamento do seu serviço. Para evitar out-of-storage erros, não mantenha arquivos temporários por longos períodos. Equilibre o tamanho do armazenamento com a velocidade de tratamento de solicitações ao tomar decisões de armazenamento em cache de arquivos.

  • Inicialização da instância — O App Runner fornece cinco minutos de tempo de inicialização da instância. Sua instância deve escutar as solicitações nas portas de escuta configuradas e estar íntegra dentro de cinco minutos após a inicialização. Durante o tempo de inicialização, as instâncias do App Runner recebem uma CPU virtual (vCPU) com base na configuração da sua vCPU. Para obter mais informações sobre a configuração de vCPU disponível, consulte. Configurações compatíveis com o App Runner

    Depois que a instância é inicializada com sucesso, ela entra em um estado ocioso e aguarda as solicitações. Você paga com base na duração da inicialização da instância, com a cobrança mínima de um minuto por início da instância. Para obter mais informações sobre preços, consulte Preços do AWS App Runner.