Ler em inglês

Partilhar via


Implantar um aplicativo Web Python (Flask) com PostgreSQL no Azure

Neste tutorial, você implantará um aplicativo Web Python orientado por dados (Flask) no Serviço de Aplicativo do Azure com o serviço de banco de dados relacional Banco de Dados do Azure para PostgreSQL. O Serviço de Aplicativo do Azure dá suporte ao Python em um ambiente de servidor Linux. Se desejar, consulte o tutorial do Django ou o tutorial da FastAPI.

Um diagrama de arquitetura mostrando um Serviço de Aplicativo com um banco de dados PostgreSQL no Azure.

Neste tutorial, irá aprender a:

  • Crie uma arquitetura segura por padrão do Serviço de Aplicativo, PostgreSQL e cache Redis.
  • Proteja segredos de conexão usando uma identidade gerenciada e referências do Cofre de Chaves.
  • Implante um aplicativo Python de exemplo no Serviço de Aplicativo a partir de um repositório GitHub.
  • Acesse as cadeias de conexão do Serviço de Aplicativo e as configurações do aplicativo no código do aplicativo.
  • Faça atualizações e reimplante o código do aplicativo.
  • Gere esquema de banco de dados executando migrações de banco de dados.
  • Transmita logs de diagnóstico do Azure.
  • Gerencie o aplicativo no portal do Azure.
  • Provisione a mesma arquitetura e implante usando a CLI do Azure Developer.
  • Otimize seu fluxo de trabalho de desenvolvimento com o GitHub Codespaces e o GitHub Copilot.

Pré-requisitos

  • Uma conta do Azure com uma subscrição ativa. Se não tiver uma conta do Azure, pode criar uma gratuitamente.
  • Uma conta GitHub. Você também pode obter um gratuitamente.
  • Conhecimento de Python com desenvolvimento Flask.
  • (Opcional) Para experimentar o GitHub Copilot, uma conta do GitHub Copilot. Está disponível uma versão experimental gratuita de 30 dias.
  • Uma conta do Azure com uma subscrição ativa. Se não tiver uma conta do Azure, pode criar uma gratuitamente.
  • CLI do Desenvolvedor do Azure instalada. Você pode seguir as etapas com o Azure Cloud Shell porque ele já tem a CLI do Desenvolvedor do Azure instalada.
  • Conhecimento de Python com desenvolvimento Flask.
  • (Opcional) Para experimentar o GitHub Copilot, uma conta do GitHub Copilot. Está disponível uma versão experimental gratuita de 30 dias.

Saltar para o fim

Se você quiser apenas ver o aplicativo de exemplo neste tutorial em execução no Azure, basta executar os seguintes comandos no Azure Cloud Shell e seguir o prompt:

mkdir msdocs-flask-postgresql-sample-app
cd msdocs-flask-postgresql-sample-app
azd init --template msdocs-flask-postgresql-sample-app
azd up

1. Execute o exemplo

Primeiro, você configura um aplicativo controlado por dados de exemplo como ponto de partida. Para sua conveniência, o repositório de exemplo inclui uma configuração de contêiner de desenvolvimento. O contêiner de desenvolvimento tem tudo o que você precisa para desenvolver um aplicativo, incluindo o banco de dados, o cache e todas as variáveis de ambiente necessárias para o aplicativo de exemplo. O contêiner de desenvolvimento pode ser executado em um espaço de código GitHub, o que significa que você pode executar o exemplo em qualquer computador com um navegador da Web.

Nota

Se você estiver acompanhando este tutorial com seu próprio aplicativo, veja a descrição do arquivo requirements.txt em README.md para ver quais pacotes você precisará.

Passo 1: Em uma nova janela do navegador:

  1. Iniciar sessão na sua conta do GitHub.
  2. Navegar para https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app/fork.
  3. Desmarque Copiar somente a ramificação principal. Você quer todos os ramos.
  4. Selecione Criar bifurcação.

Passo 2: Na bifurcação do GitHub:

  1. Selecione o starter-no-infra principal>para o ramo inicial. Esta ramificação contém apenas o projeto de exemplo e nenhum arquivo ou configuração relacionados ao Azure.
  2. Selecione Code>Create codespace on starter-no-infra. O espaço de código leva alguns minutos para ser configurado e é executado pip install -r requirements.txt para o repositório no final.

Passo 3: No terminal codespace:

  1. Execute migrações de banco de dados com flask db upgradeo .
  2. Execute o aplicativo com flask runo .
  3. Quando vir a notificação Your application running on port 5000 is available., selecione Abrir no navegador. Você deve ver o aplicativo de exemplo em uma nova guia do navegador. Para parar o aplicativo, digite Ctrl+C.

Gorjeta

Você pode perguntar ao GitHub Copilot sobre este repositório. Por exemplo:

  • @workspace O que faz este projeto?
  • @workspace O que faz a pasta .devcontainer?

Tem problemas? Verifique a seção Solução de problemas.

2. Criar Serviço de Aplicativo e PostgreSQL

Nesta etapa, você cria os recursos do Azure. As etapas usadas neste tutorial criam um conjunto de recursos seguros por padrão que incluem o Serviço de Aplicativo e o Banco de Dados do Azure para PostgreSQL. Para o processo de criação, você especifica:

  • O Nome do aplicativo Web. Ele é usado como parte do nome DNS do seu aplicativo na forma de https://<app-name>-<hash>.<region>.azurewebsites.net.
  • A região para executar o aplicativo fisicamente no mundo. Ele também é usado como parte do nome DNS do seu aplicativo.
  • A pilha de tempo de execução para o aplicativo. É onde você seleciona a versão do Python a ser usada para seu aplicativo.
  • O plano de hospedagem para o aplicativo. É a camada de preço que inclui o conjunto de recursos e a capacidade de dimensionamento para seu aplicativo.
  • O Grupo de Recursos para o aplicativo. Um grupo de recursos permite agrupar (em um contêiner lógico) todos os recursos do Azure necessários para o aplicativo.

Entre no portal do Azure e siga estas etapas para criar seus recursos do Serviço de Aplicativo do Azure.

Etapa 1: No portal do Azure:

  1. Insira "banco de dados de aplicativo Web" na barra de pesquisa na parte superior do portal do Azure.
  2. Selecione o item rotulado Web App + Database sob o título Marketplace . Você também pode navegar diretamente para o assistente de criação.

Etapa 2: Na página Criar Aplicativo Web + Banco de Dados , preencha o formulário da seguinte maneira.

  1. Grupo de recursos: Selecione Criar novo e use um nome de msdocs-flask-postgres-tutorial.
  2. Região: qualquer região do Azure perto de você.
  3. Nome: msdocs-python-postgres-XYZ.
  4. Pilha de tempo de execução: Python 3.12.
  5. Banco de dados: PostgreSQL - Servidor flexível é selecionado por padrão como o mecanismo de banco de dados. O nome do servidor e o nome do banco de dados também são definidos por padrão como valores apropriados.
  6. Adicionar Cache do Azure para Redis?: Não.
  7. Plano de hospedagem: Básico. Quando estiver pronto, você poderá escalar para um nível de preço de produção.
  8. Selecione Rever + criar.
  9. Após a conclusão da validação, selecione Criar.

Etapa 3: A implantação leva alguns minutos para ser concluída. Quando a implantação for concluída, selecione o botão Ir para o recurso . Você é levado diretamente para o aplicativo do Serviço de Aplicativo, mas os seguintes recursos são criados:

  • Grupo de recursos: o contêiner para todos os recursos criados.
  • Plano do Serviço de Aplicativo: define os recursos de computação para o Serviço de Aplicativo. Um plano Linux na camada Basic é criado.
  • Serviço de Aplicativo: representa seu aplicativo e é executado no plano do Serviço de Aplicativo.
  • Rede virtual: integrada ao aplicativo Serviço de Aplicativo e isola o tráfego de rede back-end.
  • Interfaces de rede: Representa endereços IP privados, um para cada um dos pontos de extremidade privados.
  • Banco de Dados do Azure para servidor flexível PostgreSQL: Acessível somente de dentro da rede virtual. Um banco de dados e um usuário são criados para você no servidor.
  • Zonas DNS privadas: Permite a resolução DNS do cofre de chaves e do servidor de banco de dados na rede virtual.

3. Segredos de conexão seguros

O assistente de criação gerou as variáveis de conectividade para você já como configurações do aplicativo. No entanto, a prática recomendada de segurança é manter os segredos completamente fora do Serviço de Aplicativo. Você moverá seus segredos para um cofre de chaves e alterará a configuração do aplicativo para referências do Cofre de Chaves com a ajuda dos Conectores de Serviço.

Etapa 1: Recuperar a cadeia de conexão existente

  1. No menu esquerdo da página Serviço de Aplicativo, selecione Configurações > Variáveis de ambiente.
  2. Selecione AZURE_POSTGRESQL_CONNECTIONSTRING.
  3. Na configuração Adicionar/Editar aplicativo, no campo Valor , localize a parte password= no final da cadeia de caracteres.
  4. Copie a cadeia de caracteres de senha após Password= para uso posterior. Esta configuração do aplicativo permite que você se conecte ao banco de dados Postgres protegido por trás de um ponto de extremidade privado. No entanto, o segredo é salvo diretamente no aplicativo do Serviço de Aplicativo, o que não é o melhor. Você vai mudar isso.

Etapa 2: Criar um cofre de chaves para gerenciamento seguro de segredos

  1. Na barra de pesquisa superior, digite "cofre de chaves" e selecione Cofre de chaves do Marketplace>.
  2. Em Grupo de Recursos, selecione msdocs-python-postgres-tutorial.
  3. Em Nome do cofre de chaves, digite um nome que consista apenas em letras e números.
  4. Em Região, defina-o para o mesmo local que o grupo de recursos.

Etapa 3: Proteger o cofre de chaves com um ponto de extremidade privado

  1. Selecione o separador Rede.
  2. Desmarque Ativar acesso público.
  3. Selecione Criar um ponto de extremidade privado.
  4. Em Grupo de Recursos, selecione msdocs-python-postgres-tutorial.
  5. Na caixa de diálogo, em Local, selecione o mesmo local do seu aplicativo do Serviço de Aplicativo.
  6. Em Nome, digite msdocs-python-postgres-XYZVaultEndpoint.
  7. Em Rede virtual, selecione msdocs-python-postgres-XYZVnet.
  8. Em Sub-rede, msdocs-python-postgres-XYZSubnet.
  9. Selecione OK.
  10. Selecione Rever + criar e, em seguida, selecione Criar. Aguarde a conclusão da implantação do cofre de chaves. Você deve ver "Sua implantação está concluída".

Etapa 4: Configurar o conector PostgreSQL

  1. Na barra de pesquisa superior, digite msdocs-python-postgres e selecione o recurso do Serviço de Aplicativo chamado msdocs-python-postgres-XYZ.
  2. Na página Serviço de Aplicativo, no menu à esquerda, selecione Configurações > do Conector de Serviço. Já existe um conector, que o assistente de criação de aplicativos criou para você.
  3. Marque a caixa de seleção ao lado do conector PostgreSQL e selecione Editar.
  4. Em Tipo de cliente, selecione Django. Mesmo que você tenha um aplicativo Flask, o tipo de cliente Django no conector de serviço PostgreSQL fornece variáveis de banco de dados em configurações separadas em vez de uma cadeia de conexão. As variáveis separadas são mais fáceis de usar no código do aplicativo, que usa SQLAlchemy para se conectar ao banco de dados.
  5. Selecione a guia Autenticação .
  6. Em Senha, cole a senha copiada anteriormente.
  7. Selecione Armazenar segredo no Cofre da chave.
  8. Em Conexão do Cofre da Chave, selecione Criar novo. Uma caixa de diálogo Criar conexão é aberta na parte superior da caixa de diálogo de edição.

Etapa 5: Estabelecer a conexão do Cofre da Chave

  1. Na caixa de diálogo Criar conexão para a conexão do Cofre da Chave, no Cofre da Chave, selecione o cofre da chave criado anteriormente.
  2. Selecione Rever + Criar.
  3. Quando a validação for concluída, selecione Criar.

Etapa 6: Finalizar as configurações do conector PostgreSQL

  1. Você está de volta na caixa de diálogo de edição para defaultConnector. Na guia Autenticação, aguarde até que o conector do cofre de chaves seja criado. Quando terminar, a lista suspensa Conexão do Cofre da Chave selecioná-la-á automaticamente.
  2. Selecione Next: Networking.
  3. Selecione Guardar. Aguarde até que a notificação Atualização bem-sucedida seja exibida.

Etapa 7: Verificar a integração do Key Vault

  1. No menu à esquerda, selecione Configurações > Variáveis de ambiente novamente.
  2. Ao lado de AZURE_POSTGRESQL_PASSWORD, selecione Mostrar valor. O valor deve ser @Microsoft.KeyVault(...), o que significa que é uma referência do cofre de chaves porque o segredo agora é gerenciado no cofre de chaves.

Para resumir, o processo para proteger seus segredos de conexão envolveu:

  • Recuperando os segredos de conexão das variáveis de ambiente do aplicativo do Serviço de Aplicativo.
  • Criação de um cofre de chaves.
  • Criação de uma conexão do Cofre da Chave com a identidade gerenciada atribuída ao sistema.
  • Atualizar os conectores de serviço para armazenar os segredos no cofre de chaves.

Tem problemas? Verifique a seção Solução de problemas.


4. Implantar código de exemplo

Nesta etapa, você configura a implantação do GitHub usando as Ações do GitHub. É apenas uma das muitas maneiras de implantar no Serviço de Aplicativo, mas também uma ótima maneira de ter integração contínua em seu processo de implantação. Por padrão, cada git push um no repositório do GitHub inicia a ação de compilação e implantação.

Etapa 1: no menu à esquerda, selecione Deployment>Deployment Center.

Etapa 2: Na página Centro de Implantação:

  1. Em Source, selecione GitHub. Por padrão, as Ações do GitHub são selecionadas como o provedor de compilação.
  2. Entre na sua conta do GitHub e siga o prompt para autorizar o Azure.
  3. Em Organização, selecione sua conta.
  4. Em Repositório, selecione msdocs-flask-postgresql-sample-app.
  5. Em Ramo, selecione starter-no-infra. Essa é a mesma ramificação em que você trabalhou com seu aplicativo de exemplo, sem nenhum arquivo ou configuração relacionada ao Azure.
  6. Em Tipo de autenticação, selecione Identidade atribuída pelo usuário.
  7. No menu superior, selecione Salvar. O Serviço de Aplicativo confirma um arquivo de fluxo de trabalho no repositório GitHub escolhido, no .github/workflows diretório. Por padrão, o centro de implantação cria uma identidade atribuída pelo usuário para que o fluxo de trabalho seja autenticado usando o Microsoft Entra (autenticação OIDC). Para obter opções de autenticação alternativas, consulte Implantar no Serviço de Aplicativo usando ações do GitHub.

Passo 3: De volta ao espaço de código do GitHub da sua bifurcação de exemplo, execute git pull origin starter-no-infra. Isso extrai o arquivo de fluxo de trabalho recém-confirmado para seu espaço de código.

Passo 4 (Opção 1: com o GitHub Copilot):

  1. Inicie uma nova sessão de chat selecionando a vista Chat e, em seguida, selecionando +.
  2. Pergunte: "@workspace Como o aplicativo se conecta ao banco de dados?" O Copilot pode fornecer alguma explicação sobre SQLAlchemy como o URI de conexão é configurado no azureproject/development.py e azureproject/production.py.
  3. Pergunte: "@workspace No modo de produção, meu aplicativo está sendo executado em um aplicativo Web do Serviço de Aplicativo, que usa o Azure Service Connector para se conectar a um servidor flexível PostgreSQL usando o tipo de cliente Django. Quais são os nomes das variáveis de ambiente que preciso usar?" O Copilot pode lhe dar uma sugestão de código semelhante à da Opção 2: sem as etapas do Copilot do GitHub abaixo e até mesmo dizer para você fazer a alteração no arquivo azureproject/production.py.
  4. Abra azureproject/production.py no explorador e adicione a sugestão de código. O GitHub Copilot não lhe dá a mesma resposta todas as vezes, e nem sempre é correto. Talvez seja necessário fazer mais perguntas para ajustar a resposta. Para obter dicas, consulte O que posso fazer com o GitHub Copilot no meu codespace?.

Passo 4 (Opção 2: sem o Copilot do GitHub):

  1. Abra Program.cs no explorador.
  2. Encontre o código comentado (linhas 3-8) e descomente-o. Isso cria uma cadeia de conexão para SQLAlchemy usando AZURE_POSTGRESQL_USER, AZURE_POSTGRESQL_PASSWORD, AZURE_POSTGRESQL_HOSTe AZURE_POSTGRESQL_NAME.

Passo 5:

  1. Selecione a extensão Controle do código-fonte.
  2. Na caixa de texto, digite uma mensagem de confirmação como Configure Azure database connecton. Ou selecione e deixe o GitHub Copilot gerar uma mensagem de confirmação para você.
  3. Selecione Confirmar e, em seguida, confirme com Sim.
  4. Selecione Sincronizar alterações 1 e, em seguida, confirme com OK.

Etapa 6: De volta à página Centro de Implantação no portal do Azure:

  1. Selecione a guia Logs e, em seguida, selecione Atualizar para ver a nova implantação ser executada.
  2. No item de log para a execução da implantação, selecione a entrada Compilar/Implantar Logs com o carimbo de data/hora mais recente.

Etapa 7: Você é levado ao repositório do GitHub e vê que a ação do GitHub está em execução. O arquivo de fluxo de trabalho define dois estágios separados, build e deploy. Aguarde até que a execução do GitHub mostre um status de Sucesso. Demora cerca de 5 minutos.

Tem problemas? Consulte o Guia de resolução de problemas.

5. Gerar esquema de banco de dados

Com o banco de dados PostgreSQL protegido pela rede virtual, a maneira mais fácil de executar migrações de banco de dados Flask é em uma sessão SSH com o contêiner Linux no Serviço de Aplicativo.

Etapa 1: De volta à página do Serviço de Aplicativo, no menu à esquerda,

  1. Selecione Ferramentas>de desenvolvimento SSH.
  2. Selecione Ir.

Passo 2: Na sessão SSH, execute flask db upgrade. Se for bem-sucedido, o Serviço de Aplicativo está se conectando com êxito ao banco de dados.

Gorjeta

Na sessão SSH, apenas as alterações nos arquivos podem /home persistir além das reinicializações do aplicativo. As mudanças fora do /home não são persistentes.

Tem problemas? Verifique a seção Solução de problemas.

6. Navegue até o aplicativo

Etapa 1: Na página Serviço de Aplicativo:

  1. No menu à esquerda, selecione Visão geral.
  2. Selecione o URL do seu aplicativo.

Passo 2: Adicione alguns restaurantes à lista. Parabéns, você está executando um aplicativo Web no Serviço de Aplicativo do Azure, com conectividade segura ao Banco de Dados do Azure para PostgreSQL.

7. Logs de diagnóstico de fluxo

O Serviço de Aplicativo do Azure captura todos os logs do console para ajudá-lo a diagnosticar problemas com seu aplicativo. O aplicativo de exemplo inclui print() instruções para demonstrar esse recurso, conforme mostrado abaixo.

@app.route('/', methods=['GET'])
def index():
    print('Request for index page received')
    restaurants = Restaurant.query.all()
    return render_template('index.html', restaurants=restaurants)

Etapa 1: Na página Serviço de Aplicativo:

  1. No menu à esquerda, selecione Monitoramento>de logs do Serviço de Aplicativo.
  2. Em Registo de aplicações, selecione Sistema de ficheiros.
  3. No menu superior, selecione Salvar.

Passo 2: No menu à esquerda, selecione Log stream. Você vê os logs do seu aplicativo, incluindo logs da plataforma e logs de dentro do contêiner.

Saiba mais sobre como iniciar sessão em aplicações Python na série sobre como configurar o Azure Monitor para a sua aplicação Python.

8. Limpar os recursos

Quando terminar, pode eliminar todos os recursos da sua subscrição do Azure eliminando o grupo de recursos.

Etapa 1: Na barra de pesquisa na parte superior do portal do Azure:

  1. Insira o nome do grupo de recursos.
  2. Selecione o grupo de recursos.

Etapa 2: na página do grupo de recursos, selecione Excluir grupo de recursos.

Passo 3:

  1. Introduza o nome do grupo de recursos para confirmar a sua eliminação.
  2. Selecione Eliminar.

Uma captura de tela da caixa de diálogo de confirmação para excluir um grupo de recursos no portal do Azure. :

2. Crie recursos do Azure e implante um aplicativo de exemplo

Nesta etapa, você cria os recursos do Azure e implanta um aplicativo de exemplo no Serviço de Aplicativo no Linux. As etapas usadas neste tutorial criam um conjunto de recursos seguros por padrão que incluem o Serviço de Aplicativo e o Banco de Dados do Azure para PostgreSQL.

O contêiner de desenvolvimento já tem a CLI do Desenvolvedor do Azure (AZD).

  1. A partir da raiz do repositório, execute azd init.

    azd init --template python-app-service-postgresql-infra
    
  2. Quando solicitado, dê as seguintes respostas:

    Pergunta Resposta
    O diretório atual não está vazio. Gostaria de inicializar um projeto aqui no '<seu-diretório>'? Y
    O que você gostaria de fazer com esses arquivos? Manter os meus ficheiros existentes inalterados
    Insira um novo nome de ambiente Escreva um nome exclusivo. O modelo AZD usa esse nome como parte do nome DNS do seu aplicativo Web no Azure (<app-name>-<hash>.azurewebsites.net). São permitidos caracteres alfanuméricos e hífenes.
  3. Entre no Azure executando o azd auth login comando e seguindo o prompt:

    azd auth login
    
  4. Crie os recursos necessários do Azure com o azd provision comando. Siga o prompt para selecionar a assinatura desejada e o local para os recursos do Azure.

    azd provision
    

    O azd provision comando leva cerca de 15 minutos para ser concluído (o cache Redis leva mais tempo). Mais tarde, você modificará seu código para trabalhar com o Serviço de Aplicativo e implantar as alterações com azd deployo . Enquanto está em execução, o comando fornece mensagens sobre o processo de provisionamento e implantação, incluindo um link para a implantação no Azure.

    Este modelo AZD contém arquivos (azure.yaml e o diretório infra ) que geram uma arquitetura segura por padrão com os seguintes recursos do Azure:

    • Grupo de recursos: o contêiner para todos os recursos criados.
    • Plano do Serviço de Aplicativo: define os recursos de computação para o Serviço de Aplicativo. Um plano Linux na camada Basic é criado.
    • Serviço de Aplicativo: representa seu aplicativo e é executado no plano do Serviço de Aplicativo.
    • Rede virtual: integrada ao aplicativo Serviço de Aplicativo e isola o tráfego de rede back-end.
    • Pontos de extremidade privados: pontos de extremidade de acesso para o cofre de chaves e o cache Redis na rede virtual.
    • Interfaces de rede: Representa endereços IP privados, um para cada um dos pontos de extremidade privados.
    • Banco de Dados do Azure para servidor flexível PostgreSQL: Acessível somente de dentro da rede virtual. Um banco de dados e um usuário são criados para você no servidor.
    • Zona DNS privada: Permite a resolução DNS do servidor PostgreSQL na rede virtual.
    • Espaço de trabalho do Log Analytics: atua como o contêiner de destino para seu aplicativo enviar seus logs, onde você também pode consultar os logs.
    • Cache do Azure para Redis: acessível apenas por trás de seu ponto de extremidade privado.
    • Cofre de chaves: acessível apenas por trás de seu ponto de extremidade privado. Usado para gerenciar segredos para o aplicativo Serviço de Aplicativo.

    Quando o comando terminar de criar recursos e implantar o código do aplicativo pela primeira vez, o aplicativo de exemplo implantado ainda não funcionará porque você deve fazer pequenas alterações para que ele se conecte ao banco de dados no Azure.

Tem problemas? Verifique a seção Solução de problemas.

3. Use a cadeia de conexão do banco de dados

O modelo AZD que você usa gerou as variáveis de conectividade para você já como configurações do aplicativo e as envia para o terminal para sua conveniência. As configurações do aplicativo são uma maneira de manter os segredos de conexão fora do seu repositório de código.

  1. Na saída AZD, localize as configurações AZURE_POSTGRESQL_USER, AZURE_POSTGRESQL_PASSWORD, AZURE_POSTGRESQL_HOSTe AZURE_POSTGRESQL_NAME. Para manter os segredos seguros, apenas os nomes das configurações são exibidos. Eles se parecem com isso na saída AZD:

     App Service app has the following connection settings:
             - AZURE_POSTGRESQL_NAME
             - AZURE_POSTGRESQL_HOST
             - AZURE_POSTGRESQL_USER
             - AZURE_POSTGRESQL_PASSWORD
             - AZURE_REDIS_CONNECTIONSTRING
             - AZURE_KEYVAULT_RESOURCEENDPOINT
             - AZURE_KEYVAULT_SCOPE
     
  2. Para sua conveniência, o modelo AZD mostra o link direto para a página de configurações do aplicativo. Encontre o link e abra-o em uma nova guia do navegador.

Tem problemas? Verifique a seção Solução de problemas.

4. Modifique o código de exemplo e reimplante

  1. No espaço de código do GitHub, inicie uma nova sessão de chat selecionando a visualização Chat e, em seguida, selecionando +.

  2. Pergunte: "@workspace Como o aplicativo se conecta ao banco de dados?" O Copilot pode fornecer alguma explicação sobre SQLAlchemy como o URI de conexão é configurado no azureproject/development.py e azureproject/production.py.

  3. Pergunte: "@workspace No modo de produção, meu aplicativo está sendo executado em um aplicativo Web do Serviço de Aplicativo, que usa o Azure Service Connector para se conectar a um servidor flexível PostgreSQL usando o tipo de cliente Django. Quais são os nomes das variáveis de ambiente que preciso usar?" O Copilot pode lhe dar uma sugestão de código semelhante à da Opção 2: sem as etapas do Copilot do GitHub abaixo e até mesmo dizer para você fazer a alteração no arquivo azureproject/production.py.

  4. Abra azureproject/production.py no explorador e adicione a sugestão de código.

    O GitHub Copilot não lhe dá a mesma resposta todas as vezes, e nem sempre é correto. Talvez seja necessário fazer mais perguntas para ajustar a resposta. Para obter dicas, consulte O que posso fazer com o GitHub Copilot no meu codespace?.

  5. No terminal, execute azd deploy.

    azd deploy
    

Tem problemas? Verifique a seção Solução de problemas.

5. Gerar esquema de banco de dados

Com o banco de dados PostgreSQL protegido pela rede virtual, a maneira mais fácil de executar migrações de banco de dados Flask é em uma sessão SSH com o contêiner Linux no Serviço de Aplicativo.

  1. Na saída AZD, localize o URL da sessão SSH e navegue até ele no navegador. Tem esta aparência na saída:

     Open SSH session to App Service container at: https://<app-name>.scm.azurewebsites.net/webssh/host
     
  2. Na sessão SSH, execute flask db upgrade. Se for bem-sucedido, o Serviço de Aplicativo está se conectando com êxito ao banco de dados.

    Uma captura de tela mostrando os comandos a serem executados no shell SSH e sua saída.

    Nota

    Somente as alterações nos /home arquivos podem persistir além das reinicializações do aplicativo. As mudanças fora do /home não são persistentes.

Tem problemas? Verifique a seção Solução de problemas.

6. Navegue até o aplicativo

  1. Na saída AZD, localize a URL do seu aplicativo e navegue até ela no navegador. O URL tem esta aparência na saída AZD:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: https://<app-name>.azurewebsites.net/
     
  2. Adicione alguns restaurantes à lista.

    Uma captura de tela do aplicativo Web Flask com PostgreSQL em execução no Azure mostrando avaliações de restaurantes e restaurantes.

    Parabéns, você está executando um aplicativo Web no Serviço de Aplicativo do Azure, com conectividade segura ao Banco de Dados do Azure para PostgreSQL.

Tem problemas? Verifique a seção Solução de problemas.

7. Logs de diagnóstico de fluxo

O Serviço de Aplicativo do Azure pode capturar logs do console para ajudá-lo a diagnosticar problemas com seu aplicativo. Por conveniência, o modelo AZD já permite o registro em log no sistema de arquivos local e está enviando os logs para um espaço de trabalho do Log Analytics.

O aplicativo de exemplo inclui print() instruções para demonstrar essa capacidade, conforme mostrado no trecho a seguir.

@app.route('/', methods=['GET'])
def index():
    print('Request for index page received')
    restaurants = Restaurant.query.all()
    return render_template('index.html', restaurants=restaurants)

Na saída AZD, localize o link para transmitir logs do Serviço de Aplicativo e navegue até ele no navegador. O link tem esta aparência na saída AZD:

Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream

Saiba mais sobre como iniciar sessão em aplicações Python na série sobre como configurar o Azure Monitor para a sua aplicação Python.

Tem problemas? Verifique a seção Solução de problemas.

8. Limpar os recursos

Para excluir todos os recursos do Azure no ambiente de implantação atual, execute azd down e siga os prompts.

azd down

Resolução de Problemas

Abaixo estão listados os problemas que você pode encontrar ao tentar trabalhar neste tutorial e as etapas para resolvê-los.

Não consigo me conectar à sessão SSH

Se você não conseguir se conectar à sessão SSH, o próprio aplicativo falhou ao iniciar. Verifique os logs de diagnóstico para obter detalhes. Por exemplo, se você vir um erro como KeyError: 'AZURE_POSTGRESQL_HOST', isso pode significar que a variável de ambiente está ausente (você pode ter removido a configuração do aplicativo).

Recebo um erro ao executar migrações de banco de dados

Se você encontrar algum erro relacionado à conexão com o banco de dados, verifique se as configurações do aplicativo (AZURE_POSTGRESQL_USER, AZURE_POSTGRESQL_PASSWORD, AZURE_POSTGRESQL_HOSTe AZURE_POSTGRESQL_NAME) foram alteradas ou excluídas. Sem essa cadeia de conexão, o comando migrate não pode se comunicar com o banco de dados.

Perguntas mais frequentes

Quanto custa esta configuração?

O preço dos recursos criados é o seguinte:

  • O plano do Serviço de Aplicativo é criado na camada Básica e pode ser dimensionado para cima ou para baixo. Consulte Preços do Serviço de Aplicativo.
  • O servidor flexível PostgreSQL é criado na camada burstable mais baixa Standard_B1ms, com o tamanho mínimo de armazenamento, que pode ser dimensionado para cima ou para baixo. Consulte Banco de Dados do Azure para obter preços do PostgreSQL.
  • A rede virtual não incorre em cobrança, a menos que você configure uma funcionalidade extra, como emparelhamento. Consulte Preços da Rede Virtual do Azure.
  • A zona DNS privada incorre em uma pequena cobrança. Consulte Preços do DNS do Azure.

Como faço para me conectar ao servidor PostgreSQL que está protegido atrás da rede virtual com outras ferramentas?

  • Para acesso básico a partir de uma ferramenta de linha de comando, você pode executar psql a partir da sessão SSH do aplicativo.
  • Para se conectar a partir de uma ferramenta de área de trabalho, sua máquina deve estar dentro da rede virtual. Por exemplo, pode ser uma VM do Azure conectada a uma das sub-redes ou uma máquina em uma rede local que tenha uma conexão VPN site a site com a rede virtual do Azure.
  • Você também pode integrar o Azure Cloud Shell à rede virtual.

Como funciona o desenvolvimento de aplicativos locais com o GitHub Actions?

Usando o arquivo de fluxo de trabalho gerado automaticamente do Serviço de Aplicativo como exemplo, cada git push um inicia uma nova compilação e execução de implantação. A partir de um clone local do repositório GitHub, você faz as atualizações desejadas e envia por push para o GitHub. Por exemplo:

git add .
git commit -m "<some-message>"
git push origin main

Como depuro erros durante a implantação das Ações do GitHub?

Se uma etapa falhar no arquivo de fluxo de trabalho GitHub gerado automaticamente, tente modificar o comando failed para gerar uma saída mais detalhada. Por exemplo, você pode obter mais saída do python comando adicionando a -d opção. Confirme e envie suas alterações por push para disparar outra implantação no Serviço de Aplicativo.

Não tenho permissões para criar uma identidade atribuída pelo utilizador

Consulte Configurar a implantação de ações do GitHub a partir do Centro de Implantação.

O que posso fazer com o GitHub Copilot no meu codespace?

Você deve ter notado que a visualização de bate-papo do GitHub Copilot já estava lá para você quando você criou o espaço de código. Para sua conveniência, incluímos a extensão de chat do GitHub Copilot na definição de contêiner (consulte .devcontainer/devcontainer.json). No entanto, você precisa de uma conta GitHub Copilot (teste gratuito de 30 dias disponível).

Algumas dicas para você quando falar com o GitHub Copilot:

  • Em uma única sessão de bate-papo, as perguntas e respostas se baseiam umas nas outras e você pode ajustar suas perguntas para ajustar a resposta obtida.
  • Por padrão, o GitHub Copilot não tem acesso a nenhum arquivo em seu repositório. Para fazer perguntas sobre um arquivo, abra o arquivo no editor primeiro.
  • Para permitir que o GitHub Copilot tenha acesso a todos os arquivos no repositório ao preparar suas respostas, comece sua pergunta com @workspace. Para obter mais informações, veja Use the @workspace agent.
  • Na sessão de chat, o GitHub Copilot pode sugerir alterações e (com @workspace) até mesmo onde fazer as alterações, mas não é permitido fazer as alterações para você. Cabe a você adicionar as alterações sugeridas e testá-las.

Próximos passos

Avance para o próximo tutorial para saber como proteger seu aplicativo com um domínio e certificado personalizados.

Saiba como o Serviço de Aplicativo executa um aplicativo Python: