Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Neste tutorial, publica uma aplicação web Python baseada em dados no Azure App Service com o serviço relacional de base de dados Azure Database for PostgreSQL. O Serviço de Aplicativo do Azure dá suporte ao Python em um ambiente de servidor Linux. Este artigo utiliza uma aplicação Flask . Alternativas incluem o Django ou o tutorial do FastAPI.
Neste tutorial, aprenderás como:
- 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 volte a implementar o código da aplicação.
- 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 assinatura 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 desenvolvimento em Python com Flask.
- (Opcional) Para experimentar o GitHub Copilot, uma conta do GitHub Copilot. Está disponível uma experiência gratuita de 30 dias.
- Uma conta do Azure com uma assinatura ativa. Se não tiver uma conta do Azure, pode criar uma gratuitamente.
- Uma conta GitHub. Você também pode obter um 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 desenvolvimento em Python com Flask.
- (Opcional) Para experimentar o GitHub Copilot, uma conta do GitHub Copilot. Está disponível uma experiência gratuita de 30 dias.
Saltar para o fim
Se quiser apenas ver a aplicação de exemplo neste tutorial a correr no Azure, execute os seguintes comandos no Azure Cloud Shell e siga o prompt:
mkdir msdocs-flask-postgresql-sample-app
cd msdocs-flask-postgresql-sample-app
azd init --template msdocs-flask-postgresql-sample-app
azd up
Executar o exemplo
Como ponto de partida, configura uma aplicação baseada em dados de exemplo. Para sua conveniência, o repositório de exemplos inclui uma configuração de contentor de desenvolvimento . O contentor de desenvolvimento tem tudo o que precisas para desenvolver uma aplicação. Inclui a base de dados, a cache e todas as variáveis de ambiente necessárias à aplicação de exemplo. O contentor de desenvolvimento pode correr num espaço de código do GitHub, por isso podes executar o exemplo em qualquer computador com um navegador web.
Observação
Se estás a seguir este tutorial com a tua própria aplicação, vê a descrição do ficheirorequirements.txtno README.md para veres que pacotes precisas.
1º Passo: Em uma nova janela do navegador:
- Inicie sessão na sua conta do GitHub.
- Navegue até https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app/fork.
- Deseleccione Copiar somente a ramificação principal. Você quer todos os ramos.
- Selecione Criar bifurcação.
2º Passo: No repositório bifurcado do GitHub:
- Selecione principal>starter-no-infra para o ramo inicial. Este ramo contém apenas o projeto de exemplo, sem ficheiros ou configurações relacionadas com Azure.
- Selecione Código. No separador de espaços de código , selecione Criar espaço de código em starter-no-infra.
O codespace leva alguns minutos para ser configurado. Executa
pip install -r requirements.txtpara o teu repositório.
Passo 3: No terminal do codespace:
- Execute migrações de banco de dados com
flask db upgrade. - Execute a aplicação com
flask run. - 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, digiteCtrl+C.
Sugestão
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.
Criar App Service e PostgreSQL
Nesta secção, crias os recursos Azure. Este tutorial cria um conjunto de recursos seguros por defeito que incluem App Service e Azure Database 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.
- A região para executar o aplicativo fisicamente no mundo. Também faz parte do nome DNS da tua aplicação.
- A pilha de tempo de execução para o aplicativo. A versão do Python para usar na tua aplicação.
- O plano de hospedagem para o aplicativo. O escalão de preços que inclui o conjunto de funcionalidades e a capacidade de escalabilidade da sua aplicação.
- O Grupo de Recursos para o aplicativo. Um grupo de recursos permite-lhe agrupar os recursos Azure para a aplicação num contentor lógico.
Entre no portal do Azure e siga estas etapas para criar seus recursos do Serviço de Aplicativo do Azure.
1º Passo: No portal do Azure:
- No topo do portal Azure, introduza a base de dados da aplicação web na barra de pesquisa.
- No título Marketplace, selecione o item rotulado Web App + Base de Dados. Também pode navegar diretamente para Criar Aplicação Web .
2º Passo: Na página Criar Aplicativo Web + Banco de Dados , preencha o formulário da seguinte maneira.
- Grupo de recursos: Selecione Criar novo e use um nome de msdocs-flask-postgres-tutorial.
- Região: qualquer região do Azure perto de você.
- Nome: msdocs-python-postgres-XYZ.
- Pilha de execução: Python 3.14.
- 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.
- Adicionar Cache do Azure para Redis?: Não.
- Plano de hospedagem: Básico. Quando estiver pronto, você poderá escalar para um nível de preço de produção.
- Selecione Rever e criar.
- Após a conclusão da validação, selecione Criar.
Passo 3: A implantação demora alguns minutos. Depois de concluída a implantação, selecione Ir para o recurso. A implementação cria os seguintes recursos:
- 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. A implementação cria um plano Linux no nível Básico .
- Serviço de Aplicativo: representa seu aplicativo e é executado no plano do Serviço de Aplicativo.
- Rede virtual: integrada à aplicação App Service e isola o tráfego de rede de 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. Uma base de dados e um utilizador são criados para si no servidor.
- Zonas DNS privadas: Permite a resolução DNS do cofre de chaves e do servidor de banco de dados na rede virtual.
Segredos de ligação segura
O processo de implementação gera as variáveis de conectividade para si como definições da aplicação. A melhor prática de segurança é manter os segredos fora do App Service completamente. Mude os seus segredos para um cofre de chaves e altere as definições da aplicação para referências ao Cofre de Chaves com a ajuda dos Conectores de Serviço.
Passo 1: Recuperar a cadeia de ligação existente:
- No menu esquerdo da página do App Service, selecione Definições>Variáveis de Ambiente.
- Selecione AZURE_POSTGRESQL_CONNECTIONSTRING.
- Na definição de Adicionar/Editar a aplicação, no campo Valor , encontre password= no final da cadeia.
- Copie a cadeia de caracteres de senha após password= para uso posterior. Esta definição da aplicação permite ligar-se ao banco de dados Postgres, protegido atrás de um endpoint privado. O segredo está guardado diretamente na aplicação do App Service, o que não é a melhor prática. Mais tarde, mudas esta configuração.
Passo 2: Crie um cofre de chaves para uma gestão segura de segredos:
- Na barra de pesquisa superior, digite "cofre de chaves", e em seguida selecione Marketplace>Cofre de Chaves.
- Em Grupo de Recursos, selecione msdocs-python-postgres-tutorial.
- Em Nome do cofre de chaves, digite um nome que consista apenas em letras e números.
- Em Região, defina-o para o mesmo local que o grupo de recursos.
Passo 3: Proteja o cofre de chaves com um Endpoint Privado:
- Selecione Rede.
- Desmarque Ativar acesso público.
- Selecione Criar um ponto de extremidade privado.
- Em Grupo de Recursos, selecione msdocs-python-postgres-tutorial.
- Na caixa de diálogo, em Local, selecione o mesmo local da sua aplicação do Serviço de Aplicações.
- Em Nome, digite msdocs-python-postgres-XYZVaultEndpoint.
- Em Rede virtual, selecione msdocs-python-postgres-XYZVnet.
- Na Subnet, selecione msdocs-python-postgres-XYZSubnet.
- Selecione OK.
- Selecione Rever + criar e, em seguida, selecione Criar. Aguarde a conclusão da implantação do cofre de chaves. Deves ver que a tua missão está concluída.
Passo 4: Configure o conector PostgreSQL:
- Na barra de pesquisa superior, digite msdocs-python-postgres e selecione o recurso do Serviço de Aplicativo chamado msdocs-python-postgres-XYZ.
- Na página Serviço de Aplicações, no menu à esquerda, selecione Definições>Conector de Serviço. Já existe um conector, que o processo de implementação criou para si.
- Marque a caixa de seleção ao lado do conector PostgreSQL e selecione Editar.
- 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.
- Selecione Autenticação.
- Em Senha, cole a senha copiada anteriormente.
- Selecione Armazenar segredo no Cofre da chave.
- Em Conexão do Cofre de Chaves, selecione Criar nova. Um diálogo de Criar ligação abre-se por cima do diálogo de edição.
Passo 5: Estabelecer a ligação ao Cofre de Chaves:
- 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.
- Selecione Avaliar + Criar.
- Quando a validação for concluída, selecione Criar.
Passo 6: Finalize as definições do conector PostgreSQL:
- 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 a criação termina, a lista pendente Key Vault Connection seleciona-o automaticamente.
- Selecione Next: Networking.
- Selecione Salvar. Aguarde até que a notificação Atualização bem-sucedida seja exibida.
Passo 7: Verifique a integração com o Key Vault
- No menu esquerdo, selecione Definições>Variáveis de Ambiente novamente.
- Ao lado de AZURE_POSTGRESQL_PASSWORD, selecione Mostrar valor. O valor deve ser
@Microsoft.KeyVault(...), o que significa que é uma referência de cofre chave. O segredo está agora administrado 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 da aplicação do App Service.
- Criação de um cofre de chaves.
- Criação de uma conexão com o Cofre de Chaves usando a identidade gerenciada atribuída pelo 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.
Implementar código de exemplo
Nesta secção, configura a implementação do GitHub usando GitHub Actions. É uma das várias maneiras de desenvolver no App Service. É uma ótima forma de ter uma integração contínua no seu processo de implementação. Por padrão, cada git push no seu repositório do GitHub inicia a ação de compilação e implantação.
1º Passo: No menu à esquerda, selecione Deployment>Deployment Center.
Passo 2: Na página do Centro de Desdobramento :
- Em Source, selecione GitHub. Por padrão, as Ações do GitHub são selecionadas como o provedor de compilação.
- Entre na sua conta do GitHub e siga o prompt para autorizar o Azure.
- Em Organização, selecione sua conta.
- Em Repositório, selecione msdocs-flask-postgresql-sample-app.
- Em Ramo, selecione starter-no-infra. Este ramo é o mesmo em que trabalhaste com a tua aplicação de exemplo, sem quaisquer ficheiros ou configurações relacionadas com o Azure.
- Em Tipo de autenticação, selecione Identidade atribuída pelo usuário.
- No menu superior, selecione Salvar.
O App Service comete um ficheiro de workflow para o repositório GitHub escolhido, na pasta
.github/workflows. 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 outras opções de autenticação, veja Deploy to App Service using GitHub Actions.
3º Passo: De volta ao espaço de código do GitHub da bifurcação de exemplo, execute git pull origin starter-no-infra.
Este comando puxa o novo ficheiro de workflow confirmado para o seu espaço de código.
Passo 4 (Opção 1: com o GitHub Copilot):
- Inicie uma nova sessão de chat selecionando a vista de chat e depois selecione +.
- Pergunte, @workspace Como é que a aplicação se liga à base de dados? O Copilot pode dar-te alguma explicação sobre
SQLAlchemy, como como o URI de ligação está configurado no Azureproject/development.py e no azureproject/production.py. - Pergunte, @workspace Em modo de produção, a minha aplicação está a correr numa aplicação web App Service, que usa o Azure Service Connector para se ligar a um servidor flexível PostgreSQL usando o tipo cliente Django. Quais são os nomes das variáveis de ambiente que preciso de usar? O Copilot pode dar-te uma sugestão de código semelhante à da Opção 2: sem passos do GitHub Copilot e até dizer-te para fazer a alteração no ficheiro azureproject/production.py .
- Abra azureproject/production.py no explorador e adicione a sugestão de código. O GitHub Copilot não te dá sempre a mesma resposta. As respostas nem sempre estão corretas. Talvez seja necessário fazer mais perguntas para ajustar a resposta. Para dicas, veja O que posso fazer com o GitHub Copilot no meu espaço de código?
Passo 4 (Opção 2: sem o Copilot do GitHub):
- Abra azureproject/production.py no explorador.
- Encontre o código comentado (linhas 3-8) e descomente-o.
Esta alteração cria uma cadeia de ligação para SQLAlchemy usando
AZURE_POSTGRESQL_USER,AZURE_POSTGRESQL_PASSWORD,AZURE_POSTGRESQL_HOST, eAZURE_POSTGRESQL_NAME.
5º Passo:
- Selecione a extensão Controle do código-fonte .
- Na caixa de texto, digite uma mensagem de confirmação como
Configure Azure database connection. Ou selecione
e deixe o GitHub Copilot gerar uma mensagem de confirmação para você. - Selecione Confirmar e, em seguida, confirme com Sim.
- Selecione Sincronizar alterações 1 e, em seguida, confirme com OK.
6º Passo: De volta à página Centro de Implementação no portal do Azure:
- Selecione Logs, depois selecione Atualizar para ver a nova implementação a correr.
- No item de log para a execução de implementação, selecione a entrada Compilação/Implementação Logs com a marca temporal mais recente.
Passo 7: És levado para o teu repositório do GitHub. A ação do GitHub está a correr. O ficheiro de workflow define duas fases separadas, build e deployment. 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.
Gerar esquema de base 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.
Passo 1: De volta à página do App Service , no menu esquerdo,
- Selecione Ferramentas>de desenvolvimento SSH.
- Selecione Ir.
2º Passo: 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.
Sugestão
Na sessão SSH, apenas as alterações feitas em arquivos dentro de /home 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.
Navegue até a aplicação
Passo 1: Na página do App Service :
- No menu à esquerda, selecione Visão geral.
- Selecione o URL da sua aplicação.
2º Passo: 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.
Transmitir registos de diagnóstico em tempo real
O Serviço de Aplicativo do Azure captura todos os logs do console para ajudá-lo a diagnosticar problemas com seu aplicativo. A aplicação de exemplo inclui print() declarações para demonstrar esta capacidade, como mostrado aqui.
@app.route('/', methods=['GET'])
def index():
print('Request for index page received')
restaurants = Restaurant.query.all()
return render_template('index.html', restaurants=restaurants)
Passo 1: Na página do App Service :
- No menu à esquerda, selecione Monitorização>registos do Serviço de Aplicações.
- Em Registo de aplicações, selecione Sistema de ficheiros.
- No menu superior, selecione Salvar.
2º Passo: No menu à esquerda, selecione Fluxo de log. Você vê os registos da sua aplicação, incluindo registos da plataforma e registos de dentro do contentor.
Para saber mais sobre como iniciar sessão em aplicações Python, consulte Configurar Azure Monitor para a sua aplicação Python.
Limpeza de recursos
Quando terminar, pode eliminar todos os recursos da sua subscrição do Azure eliminando o grupo de recursos.
1º Passo: Na barra de pesquisa na parte superior do portal do Azure:
- Insira o nome do grupo de recursos.
- Selecione o grupo de recursos.
2º Passo: Na página do grupo de recursos, selecione Excluir grupo de recursos.
3º Passo:
- Para confirmar a sua eliminação, introduza o nome do grupo de recursos.
- Selecione Excluir.
- Confirme com Excluir novamente.
Crie recursos Azure e implemente uma aplicação de exemplo
Neste passo, você cria os recursos do Azure e implementa uma aplicação de exemplo no App Service 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).
A partir do diretório raiz do repositório, execute
azd init.azd init --template python-app-service-postgresql-infraQuando solicitado, forneça as seguintes respostas:
Pergunta Resposta O diretório atual não está vazio. Gostaria de iniciar um projeto aqui em '<your-directory>'? Y O que gostaria de fazer com estes ficheiros? 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). Caracteres alfanuméricos e hífens são permitidos.Inicie sessão no Azure executando o comando
azd auth logine seguindo as instruções.azd auth loginCrie os recursos necessários do Azure com o
azd provisioncomando. Siga as instruções para selecionar a subscrição e a localização desejadas para os recursos do Azure.azd provisionO
azd provisioncomando demora cerca de 15 minutos a ser concluído. A cache Redis é a que demora mais tempo. Mais tarde, modifique o seu código para funcionar com o App Service e implemente as alterações comazd deploy. Durante a execução, o comando fornece mensagens sobre o processo de provisionamento e implementação, incluindo um link para a implementaçã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. Cria um plano Linux no nível Básico .
- Serviço de Aplicativo: representa seu aplicativo e é executado no plano do Serviço de Aplicativo.
- Rede virtual: integrada à aplicação App Service e isola o tráfego de rede de 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.
- Azure Database para PostgreSQL servidor flexível: acessível apenas a partir da rede virtual. Uma base de dados e um utilizador são criados para si 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 através do seu ponto de extremidade privado.
- Cofre de chaves: acessível apenas por trás de seu ponto de extremidade privado. Usado para gerir segredos para a aplicação App Service.
Depois de o comando terminar de criar recursos e de implementar o código da aplicação pela primeira vez, a aplicação de exemplo implementada ainda não funciona. Tens de fazer pequenas alterações para que se ligue à base de dados no Azure.
Tem problemas? Verifique a seção Solução de problemas.
Utilize a string de conexão à base de dados
O modelo AZD que usas já gerava as variáveis de conectividade para ti como definições da aplicação. Envia-os para o terminal. As configurações do aplicativo são uma maneira de manter os segredos de conexão fora do seu repositório de código.
Na saída AZD, localize as configurações
AZURE_POSTGRESQL_USER,AZURE_POSTGRESQL_PASSWORD,AZURE_POSTGRESQL_HOSTeAZURE_POSTGRESQL_NAME. Para manter os segredos seguros, apenas os nomes das configurações são exibidos. Eles são apresentados assim 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_SCOPEPara sua conveniência, o modelo AZD mostra-lhe o link direto para a página de configurações da aplicação. Encontre o link e abra-o numa nova aba do navegador.
Tem problemas? Verifique a seção Solução de problemas.
Modificar código de exemplo e redistribuir
- Com o Copilot do GitHub
- Sem o Copilot do GitHub
No espaço de código do GitHub, inicie uma nova sessão de chat selecionando a vista Chat e depois selecione +.
Pergunte, @workspace Como é que a aplicação se liga à base de dados? O Copilot pode dar-te alguma explicação sobre
SQLAlchemy, como como o URI de ligação está configurado no Azureproject/development.py e no azureproject/production.py.Pergunte, @workspace Em modo de produção, a minha aplicação está a correr numa aplicação web App Service, que usa o Azure Service Connector para se ligar a um servidor flexível PostgreSQL usando o tipo cliente Django. Quais são os nomes das variáveis de ambiente que preciso de usar? O Copilot pode dar-te uma sugestão de código semelhante à da Opção 2: sem passos do GitHub Copilot e até dizer-te para fazer a alteração no ficheiro azureproject/production.py .
Abra azureproject/production.py no explorador e adicione a sugestão de código.
O GitHub Copilot não te dá sempre a mesma resposta. As respostas nem sempre estão corretas. 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?.
No terminal, execute
azd deploy.azd deploy
Tem problemas? Verifique a seção Solução de problemas.
Gerar esquema de base 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.
Na saída AZD, localize o URL da sessão SSH e navegue até ele no navegador. É assim que aparece no resultado:
Open SSH session to App Service container at: <URL>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.Observação
Somente as alterações nos
/homearquivos podem persistir além das reinicializações do aplicativo. As mudanças fora do/homenão são persistentes.
Tem problemas? Verifique a seção Solução de problemas.
Navegue até a aplicação
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: <URL>Adicione alguns restaurantes à lista.
Parabéns! Está a correr uma aplicação web no Azure App Service, com conectividade segura ao Azure Database para PostgreSQL.
Tem problemas? Verifique a seção Solução de problemas.
Transmitir registos de diagnóstico em tempo real
O Serviço de Aplicativo do Azure pode capturar logs do console para ajudá-lo a diagnosticar problemas com seu aplicativo. O modelo AZD já permite o registo no sistema de ficheiros local e está a enviar os registos para um espaço de trabalho de Log Analytics.
A aplicação de exemplo inclui print() declaraçõ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 do AZD, encontre o link para transmitir os registos do Serviço de Aplicações e aceda a ele através do navegador.
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.
Limpeza de recursos
Para eliminar todos os recursos do Azure no ambiente de implementação atual, execute azd down e siga as instruções.
azd down
Solução de problemas
Aqui estão alguns problemas que pode encontrar enquanto tenta avançar neste tutorial e os passos para os resolver.
Não consigo me conectar à sessão SSH
Se não conseguires ligar-te à sessão SSH, então a própria aplicação falhou ao início. Verifique os logs de diagnóstico para obter detalhes. Por exemplo, se vir um erro como KeyError: 'AZURE_POSTGRESQL_HOST', pode significar que a variável ambiente está em falta. Pode ser que tenhas removido a configuração da aplicação.
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 frequentes
- Quanto custa esta configuração?
- Como faço para me conectar ao servidor PostgreSQL que está protegido atrás da rede virtual com outras ferramentas?
- Como funciona o desenvolvimento de aplicativos locais com o GitHub Actions?
- Como depuro erros durante a implantação das Ações do GitHub?
- Não tenho permissões para criar uma identidade atribuída pelo utilizador
- O que posso fazer com o GitHub Copilot no meu codespace?
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 configure funcionalidades adicionais, como o peering. Consulte Preços da Rede Virtual do Azure.
- A zona privada de DNS acarreta um pequeno custo. 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
psqla partir da sessão SSH do aplicativo. - Para se ligar a partir de uma ferramenta de ambiente de trabalho, o seu computador tem de estar na rede virtual. Por exemplo, pode ser uma máquina virtual Azure ligada a uma das subredes ou um computador numa rede local que tem uma ligação VPN site-to-site com a rede virtual Azure.
- Você também pode integrar o Azure Cloud Shell à rede virtual.
Como funciona o desenvolvimento de aplicativos locais com o GitHub Actions?
Para o ficheiro de workflow gerado automaticamente pelo App Service, por exemplo, cada git push inicia uma nova execução de compilação e implementaçã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 ficheiro de fluxo de trabalho do GitHub gerado automaticamente, tente modificar o comando que falhou para gerar uma saída mais detalhada. Por exemplo, podes obter uma saída verbosa a partir do python comando ao adicionar a -d opção. Cometa e envie as suas alterações por push para disparar outra implantação no App Service.
Não tenho permissões para criar uma identidade atribuída pelo utilizador
Ver Configurar a implantação das ações do GitHub desde o Centro de Implantação.
O que posso fazer com o GitHub Copilot no meu espaço de código?
Você pode notar 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 GitHub Copilot na definição do contentor. Veja .devcontainer/devcontainer.json. Precisas de uma conta no GitHub Copilot. Está disponível uma experiência gratuita de 30 dias.
Algumas dicas para si quando fala com o GitHub Copilot:
- Numa única sessão de chat, as perguntas e respostas constroem-se umas sobre as outras. Pode ajustar as suas perguntas para afinar a resposta que recebe.
- Por padrão, o GitHub Copilot não tem acesso a nenhum ficheiro no seu repositório. Para fazer perguntas sobre um ficheiro, abra primeiro o ficheiro no editor.
- 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, consulte Use the @workspace agent. - Na sessão de chat, o GitHub Copilot pode sugerir alterações e, com
@workspace, até indicar onde fazê-las, mas não lhe é permitido efetuar as alterações por si. Cabe a você adicionar as alterações sugeridas e testá-las.
Conteúdo relacionado
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: