Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste tutorial, você implantará um aplicativo Web Python controlado por dados no Serviço de Aplicativo do Azure que usa o serviço de banco de dados relacional do Banco de Dados do Azure para PostgreSQL . O Serviço de Aplicativo do Azure tem suporte para Python em um ambiente de servidor Linux. Este artigo usa o Django. As alternativas incluem o Flask ou o tutorial do FastAPI.
Neste tutorial, você aprenderá a:
- Crie uma arquitetura de Serviço de Aplicativo, PostgreSQL e Cache Redis segura por padrão.
- Proteja segredos de conexão usando uma identidade gerenciada e referências do Key Vault.
- Implante um aplicativo de exemplo do Python no Serviço de Aplicativo a partir de um repositório do 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 o esquema de banco de dados executando migrações de banco de dados.
- Transmitir logs de diagnóstico do Azure.
- Gerencie o aplicativo no portal do Azure.
- Provisione a mesma arquitetura e implante usando o Azure Developer CLI.
- 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 você ainda não tem uma conta do Azure, crie-a gratuitamente.
- Uma conta do GitHub. você também pode obter uma gratuitamente.
- Conhecimento do Python com desenvolvimento do Django.
- (Opcional) Para experimentar o GitHub Copilot, uma conta do GitHub Copilot. Está disponível uma avaliação gratuita de 30 dias.
- Uma conta do Azure com uma assinatura ativa. Se você ainda não tem uma conta do Azure, crie-a gratuitamente.
- Azure Developer CLI instalada. Você pode seguir as etapas com o Azure Cloud Shell porque ele já tem a Azure Developer CLI instalada.
- Conhecimento do Python com desenvolvimento do Django.
- (Opcional) Para experimentar o GitHub Copilot, uma conta do GitHub Copilot. Está disponível uma avaliação gratuita de 30 dias.
Ir para o final
Se você quiser ver apenas o aplicativo de exemplo neste tutorial em execução no Azure, execute os seguintes comandos no Azure Cloud Shell e siga o prompt:
mkdir msdocs-django-postgresql-sample-app
cd msdocs-django-postgresql-sample-app
azd init --template msdocs-django-postgresql-sample-app
azd up
Executar o exemplo
Como ponto de partida, configure um aplicativo baseado em dados de exemplo. Para sua conveniência, o repositório de amostra 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 de que o aplicativo de exemplo precisa. O contêiner de desenvolvimento pode ser executado em um codespace do GitHub, para que você possa executar o exemplo em qualquer computador com um navegador da Web.
Observação
Se você acompanhar este tutorial com seu próprio aplicativo, verifique a descrição do arquivo requirements.txt no README.md para ver quais pacotes você precisa.
Etapa 1: em uma nova janela do navegador:
- Entre em sua conta do GitHub.
- Navegue até https://github.com/Azure-Samples/msdocs-django-postgresql-sample-app/fork.
- Desmarque Copiar somente a ramificação principal. Você quer todas as filiais.
- Selecione Criar fork.
Etapa 2: na bifurcação do GitHub:
- Selecione principal> starter-no-infra para a ramificação inicial. Essa ramificação contém apenas o projeto de amostra e nenhuma configuração ou arquivos relacionados ao Azure.
- Selecione Código>Criar um codespace no starter-no-infra.
O codespace leva alguns minutos para ser configurado. Executa
pip install -r requirements.txtno repositório. O arquivo .env fornecido já contém uma variável fictíciaSECRET_KEYque o Django precisa executar localmente.
Etapa 3: no terminal do codespace:
- Execute as migrações de banco de dados com
python manage.py migrate. - Execute o aplicativo com
python manage.py runserver. - Quando vir a notificação
Your application running on port 8000 is available., selecione Abrir no Navegador. Você deve ver o aplicativo de exemplo em uma nova guia do navegador. Para interromper o aplicativo, digiteCtrl+C.
Dica
Você pode perguntar ao GitHub Copilot sobre esse repositório. Por exemplo:
- @workspace O que esse projeto faz?
- @workspace O que a pasta .devcontainer faz?
Está enfrentando problemas? Confira a seção de Solução de problemas.
Criar o Serviço de Aplicativo, o banco de dados e o cache
Nesta etapa, crie os recursos do Azure. Este tutorial cria um conjunto de recursos seguros por padrão que incluem o Serviço de Aplicativo, o Banco de Dados do Azure para PostgreSQL e o Cache do Azure. Para o processo de criação, você especificará:
- O Nome do aplicativo Web. Ele é usado como parte do nome DNS para seu aplicativo.
- A Região para executar o aplicativo fisicamente no mundo. Ele também faz parte do nome DNS do seu aplicativo.
- A pilha de runtime para o aplicativo. Selecione a versão do Python a ser usada para seu aplicativo.
- O plano de hospedagem para o aplicativo. A camada de preços inclui o conjunto de recursos e a capacidade de dimensionamento para seu app.
- O Grupo de Recursos para o aplicativo. Um grupo de recursos permite agrupar todos os recursos do Azure necessários para o aplicativo em um contêiner lógico.
Entre no portal do Azure. Siga estas etapas para criar seus recursos do Serviço de Aplicativo do Azure.
Etapa 1: no portal do Azure:
- Na parte superior do portal do Azure, na caixa de pesquisa, insira o banco de dados do aplicativo Web.
- No cabeçalho do Marketplace, selecione o item rotulado Aplicativo Web + Banco de Dados. Você também pode navegar até Criar aplicativo Web diretamente.
Etapa 2: na página Criar aplicativo Web + Banco de dados, preencha o formulário conforme mostrado a seguir.
- Grupo de Recursos: selecione Criar novo e insira msdocs-django-postgres-tutorial.
- Região: qualquer região do Azure próxima a você.
- Nome: msdocs-python-postgres-XYZ.
- Pilha de runtime: 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 o Cache do Azure para Redis: Sim.
- Plano de hospedagem: Básico. Quando estiver pronto, você poderá escalar verticalmente até um tipo de preço de produção.
- Selecione Examinar + criar.
- Depois de concluir a validação, selecione Criar.
Etapa 3: a implantação leva alguns minutos para ser concluída. Após a conclusão da implantação, selecione Ir para o recurso. A implantaçã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. Essa instância é um plano do Linux na camada Básica .
- Serviço de Aplicativo: representa seu aplicativo e é executado no plano de Serviço de Aplicativo.
- Rede virtual: integrada ao App Service e isola o tráfego de rede do back-end.
- Ponto de extremidade privado: acessar o ponto de extremidade do Cache Redis na rede virtual.
- Interfaces de rede: endereços privados de IP, um para cada um dos endpoints privados.
- Servidor Flexível do Banco de Dados do Azure para PostgreSQL: Acessível somente de dentro da rede virtual. A implantação cria um banco de dados e um usuário no servidor.
- Cache do Azure para Redis: Acessível somente de sua rede privada.
- Zonas de DNS privado: habilitam a resolução DNS do servidor de banco de dados e o Cache Redis na rede virtual.
Proteger segredos de conexão e adicionar SECRET_KEY
O processo de implantação gera as variáveis de conectividade para você como configurações de aplicativo. A melhor prática de segurança é manter os segredos fora do Serviço de Aplicativo completamente. Mova seus segredos para um cofre de chaves e altere a configuração do aplicativo para Referências do Key Vault com a ajuda dos Service Connectors.
Etapa 1: Recuperar a cadeia de conexão existente
- No menu à esquerda da página App Service, selecione Configurações>Variáveis de Ambiente.
- Selecione AZURE_POSTGRESQL_CONNECTIONSTRING.
- Em Adicionar/Editar a configuração do aplicativo, no campo Valor, localize a parte password= no final da cadeia de caracteres.
- Copie a cadeia de caracteres de senha após password= para uso posterior.
Essa configuração de aplicativo permite conectar ao banco de dados PostgreSQL e ao cache do Redis, ambos protegidos atrás de endpoints privados. Os segredos são salvos diretamente no aplicativo App Service, o que não é uma abordagem ideal. Você alterará essa configuração. Você também adiciona uma
SECRET_KEYconfiguração, que seu aplicativo Django exige.
Etapa 2: Criar um cofre de chaves para o gerenciamento seguro de segredos
- Na barra de pesquisa superior, insira cofre de chaves, em seguida, selecione Marketplace>Cofre de Chaves.
- No Grupo de Recursos, selecione msdocs-python-postgres-tutorial.
- No nome do cofre de chaves, insira um nome que consiste apenas em letras e números.
- Em Região, selecione o mesmo local que o grupo de recursos.
Etapa 3: Proteger o cofre de chaves com um Endpoint Privado
- Selecione a guia Rede.
- Desmarque Habilitar acesso público.
- Selecione Criar um ponto de extremidade privado.
- No Grupo de Recursos, selecione msdocs-python-postgres-tutorial.
- No diálogo, em Localização, selecione o mesmo local do seu aplicativo do Serviço de Aplicativo.
- Em Nome, digite msdocs-python-postgres-XYZVaultEndpoint.
- Na Rede virtual, selecione msdocs-python-postgres-XYZVnet.
- Na Sub-rede, msdocs-python-postgres-XYZSubnet.
- Selecione OK.
- Selecione Examinar + criare Criar. Aguarde a conclusão da implantação do cofre de chaves. Você verá que sua implantação está concluída.
Etapa 4: Configurar o conector do PostgreSQL
- Na barra de pesquisa superior, insira msdocs-python-postgres e selecione o recurso do Serviço de Aplicativo msdocs-python-postgres-XYZ.
- Na página Serviço de Aplicativo, no menu à esquerda, selecione Configurações>Conector de Serviço. Já existem dois conectores, que o processo de criação do aplicativo criou para você.
- Marque a caixa de seleção ao lado do conector PostgreSQL e selecione Editar.
- Em Tipo de cliente, selecione Django. O Tipo de cliente Django no conector de serviço do 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 nas configurações de banco de dados do Django.
- Selecione Autenticação.
- Em Senha, cole a senha copiada anteriormente.
- Selecione Armazenar Segredo no Key Vault.
- Em Conexão do Key Vault, selecione Criar nova. Essa ação abre um diálogo Criar conexão sobre o diálogo de edição.
Etapa 5: Estabelecer a conexão do Key Vault
- Na caixa de diálogo Criar conexão para a conexão do Key Vault, no Key Vault, selecione o cofre de chaves que você criou anteriormente.
- Selecione Examinar + criar.
- Após a conclusão da validação, selecione Criar.
Etapa 6: Finalizar as configurações do conector do PostgreSQL
- Você está de volta à caixa de diálogo de edição para o defaultConnector. Em Autenticação, aguarde até que o conector do cofre de chaves seja criado. A lista suspensa Conexão do Key Vault a seleciona automaticamente.
- Selecione Avançar: Rede.
- Selecione Salvar. Aguarde até que a notificação Atualização bem-sucedida seja exibida.
Etapa 7: Configurar o conector Redis para usar segredos do Key Vault
- Na página Conectores de Serviço , marque a caixa de seleção ao lado do conector Cache para Redis e, em seguida, selecione Editar.
- Selecione Autenticação.
- Selecione Armazenar Segredo no Key Vault.
- Em Conexão do Key Vault, selecione o cofre de chaves que você criou.
- Selecione Avançar: Rede.
- Selecione Configurar regras de firewall para habilitar o acesso ao serviço de destino. O processo de criação do aplicativo já protegeu o banco de dados SQL com um endpoint privado.
- Selecione Salvar. Aguarde até que a notificação Atualização bem-sucedida seja exibida.
Etapa 8: Verificar a integração do Key Vault
- No menu do lado esquerdo, selecione Configurações > Variáveis de ambiente.
- 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 verificar a cadeia de conexão Redis, selecione Mostrar valor ao lado de AZURE_REDIS_CONNECTIONSTRING.
Etapa 9: O aplicativo de exemplo lê a variável de ambiente SECRET_KEY para definir a configuração de SECRET_KEY necessária. Você a criará como uma configuração de aplicativo nesta etapa.
- Na guia Configurações do aplicativo, selecione Adicionar.
- Defina o Nome como SECRET_KEY.
- Defina o Valor como uma cadeia de caracteres aleatória longa.
- Selecione Aplicar, depois Aplicar novamente e, em seguida, Confirmar.
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.
- Criando um cofre de chaves.
- Criação de uma conexão do Key Vault com a identidade gerenciada atribuída pelo sistema.
- Atualizando os conectores de serviço para armazenar os segredos no cofre de chaves.
Observação
O ideal é que a configuração do aplicativo SECRET_KEY também seja ajustada como uma referência do cofre de chaves, que é um processo de várias etapas. Para obter mais informações, veja Como alterar a configuração do aplicativo SECRET_KEY para uma referência do Key Vault?
Está enfrentando problemas? Confira a seção de Solução de problemas.
Implantar código de exemplo
Nesta seção, configure a implantação do GitHub usando o GitHub Actions. É uma das muitas maneiras de se realizar implantações no App Service. É uma ótima maneira de ter integração contínua em seu processo de implantação. Por padrão, cada git push em seu repositório GitHub inicia a ação de compilação e implantação.
Etapa 1: No menu à esquerda, selecione Implantação>Centro de implantação.
Etapa 2: Na página centro de implantação :
- Em Origem, selecione GitHub. Por padrão, o GitHub Actions é selecionado como o provedor de build.
- Entre em sua conta do GitHub e siga o prompt para autorizar o Azure.
- Em Organização, selecione sua conta.
- Em Repositório, selecione msdocs-django-postgresql-sample-app.
- Em Ramificação, selecione starter-no-infra. Esse branch é o mesmo em que você trabalhou com seu aplicativo de exemplo, sem nenhum arquivo ou configuração relacionada ao Azure.
- Para Tipo de autenticação, selecione Identidade atribuída pelo usuário.
- No menu superior, selecione Salvar.
O App Service comite um arquivo de fluxo de trabalho no repositório GitHub dentro do diretório
.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, consulte Implantar no Serviço de Aplicativo usando o GitHub Actions.
Etapa 3: De volta ao codespace do GitHub da sua bifurcação de exemplo, execute git pull origin starter-no-infra.
Esse comando puxa o arquivo de workflow recém-confirmado para o seu codespace.
Etapa 4 (Opção 1: com o GitHub Copilot):
- Inicie uma nova sessão de chat selecionando a exibição Chat e escolha +.
- Pergunte: "@workspace Como o aplicativo se conecta ao banco de dados e redis?". O Copilot pode fornecer uma explicação sobre as configurações em azureproject/development.py e azureproject/production.py.
- Pergunte: "@workspace No modo de produção, meu aplicativo está em execução em um aplicativo Web do Serviço de Aplicativo, que usa o Conector de Serviço do Azure para se conectar a um servidor flexível do PostgreSQL usando o tipo de cliente Django. Quais são os nomes de variáveis de ambiente que preciso usar?" O Copilot pode fornecer uma sugestão de código semelhante à da Opção 2: sem as etapas do GitHub Copilot a seguir e até mesmo dizer para você fazer a alteração no arquivo azureproject/production.py .
- Abra azureproject/production.py no explorer e adicione a sugestão de código.
- Pergunte: "@workspace O aplicativo Meu Serviço de Aplicativo também usa o Conector de Serviço do Azure para se conectar a um Cache para Redis usando o tipo de cliente Django. Quais são os nomes de variáveis de ambiente que preciso usar?" O Copilot pode fornecer uma sugestão de código semelhante à da Opção 2: sem as etapas do GitHub Copilot a seguir e até mesmo dizer para você fazer a alteração no arquivo azureproject/production.py .
- Adicione a sugestão de código. O GitHub Copilot não oferece a mesma resposta todas as vezes. As respostas nem sempre estão corretas. Talvez seja necessário fazer mais perguntas para ajustar sua resposta. Para obter dicas, confira O que posso fazer com o GitHub Copilot no meu codespace?
Etapa 4 (Opção 2: sem o GitHub Copilot):
- Abra azureproject/production.py no explorador de arquivos.
- Encontre o código comentado (linhas 29-48) e descomente-o.
Esse código cria conexões PostgreSQL e Redis usando
AZURE_POSTGRESQL_USER, ,AZURE_POSTGRESQL_PASSWORD,AZURE_POSTGRESQL_HOSTeAZURE_POSTGRESQL_NAMEAZURE_REDIS_CONNECTIONSTRING.
Etapa 5:
- Selecione a extensão Controle do código-fonte.
- Na caixa de texto, digite uma mensagem de commit, como
Configure Azure database and cache connections. Ou selecione
e permita que o GitHub Copilot gere uma mensagem de confirmação para você. - Selecione Confirmare confirme com Sim.
- Selecione Sincronizar alterações 1e confirme com OK.
Etapa 6: De volta ao Centro de Implantação no portal do Azure:
- Selecione Logs e, em seguida, selecione Atualizar para ver a nova execução de implantação.
- No item de log da execução da implantação, selecione a entrada Compilar/Implantar Logs com o carimbo de data/hora mais recente.
Etapa 7: Você é levado para o repositório GitHub. A ação do GitHub está em execução. O arquivo do fluxo de trabalho define dois estágios separados, compilar e implantar. Aguarde até que a execução do GitHub mostre um status de Sucesso. Ela leva cerca de 5 minutos.
Está enfrentando problemas? Verifique o Guia de Solução de Problemas.
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 do Django é em uma sessão SSH com o contêiner do Linux no Serviço de Aplicativo.
Etapa 1: De volta à página App Service, no menu à esquerda:
- Selecione Ferramentas de Desenvolvimento>SSH.
- Selecione Ir.
Etapa 2: Na sessão SSH, execute python manage.py migrate. Se ele for bem-sucedido, o Serviço de Aplicativo está se conectando com êxito ao banco de dados.
Dica
Na sessão SSH, somente as alterações nos arquivos em /home podem persistir além das reinicializações do aplicativo. As alterações feitas fora de /home não são persistentes.
A sessão SSH é útil para executar comandos comuns python manage.py, como a criação do usuário com o python manage.py createsuperuser. Para obter mais informações, consulte django django-admin e manage.py. Use a conta de superusuário para acessar a /admin parte do site da Web.
Está enfrentando problemas? Confira a seção de Solução de problemas.
Navegar até o aplicativo
Etapa 1: Na página serviço de aplicativo :
- No menu esquerdo, selecione Visão geral.
- Selecione a URL do aplicativo.
Etapa 2: acrescente alguns restaurantes à lista. Parabéns! Você está executando um aplicativo Web no Serviço de Aplicativo do Azure, com conectividade segura com o Banco de Dados do Azure para PostgreSQL.
Fazer streaming de logs de diagnóstico
O Serviço de Aplicativo do Azure captura todos os logs de console para ajudá-lo a diagnosticar problemas com o aplicativo. Os aplicativos de exemplo incluem as instruções print() a fim de demonstrar essa funcionalidade.
def index(request):
print('Request for index page received')
restaurants = Restaurant.objects.annotate(avg_rating=Avg('review__rating')).annotate(review_count=Count('review'))
lastViewedRestaurant = request.session.get("lastViewedRestaurant", False)
Etapa 1: Na página serviço de aplicativo :
- No menu à esquerda, selecione Monitoramento>Logs do Serviço de Aplicativo.
- Em Log do aplicativo, selecione Sistema de arquivos.
- No menu superior, selecione Salvar.
Etapa 2: no menu esquerdo, selecione Fluxo de log. Você verá os logs do seu aplicativo, incluindo os logs de plataforma e os logs de dentro do contêiner.
Para mais informações sobre logging em aplicativos Python, veja configurar o Azure Monitor para seu aplicativo Python.
Limpar os recursos
Quando tiver terminado, você poderá excluir todos os recursos de sua assinatura do Azure ao excluir o grupo de recursos.
Etapa 1: na barra de pesquisa, na parte superior do portal do Azure:
- Insira o nome do grupo de recursos.
- Selecione o grupo de recursos.
Etapa 2: na página Grupo de recursos, selecione Excluir grupo de recursos.
Etapa 3:
- Para confirmar sua exclusão, insira o nome do grupo de recursos.
- Selecione Excluir.
Criar recursos do Azure e implantar um aplicativo de exemplo
Nesta seção, crie os recursos do Azure e implante 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, o Banco de Dados do Azure para PostgreSQL e o Cache do Azure para Redis.
O contêiner de desenvolvimento já tem a CLI do Desenvolvedor do Azure (AZD).
Na raiz do repositório, execute
azd init.azd init --template python-app-service-postgresql-infraQuando solicitado, dê as seguintes respostas:
Pergunta Resposta O diretório atual não está vazio. Deseja inicializar um projeto aqui em “<seu diretório>”? S O que você gostaria de fazer com esses arquivos? Manter meus arquivos existentes inalterados Insira um novo nome do ambiente Digite um nome exclusivo. O modelo do 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ífens.Entre em sua conta do Azure usando o comando
azd auth logine seguindo o prompt:azd auth loginCrie os recursos necessários do Azure com o comando
azd provision. Siga o prompt para selecionar a assinatura e o local desejados para os recursos do Azure.azd provisionO
azd provisioncomando leva cerca de 15 minutos para ser concluído. O cache Redis leva mais tempo. Posteriormente, modifique seu código para trabalhar com o Serviço de Aplicativo e implante as alterações comazd deploy. Durante a execução, o comando fornece mensagens sobre o processo de provisionamento e implantação. A saída inclui um link para a implantação no Azure.Esse modelo do 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. Ele cria um plano do Linux na camada Básica .
- Serviço de Aplicativo: representa seu aplicativo e é executado no plano de Serviço de Aplicativo.
- Rede virtual: integrada ao App Service e isola o tráfego de rede do back-end.
- Pontos de extremidade privados: acesse os pontos de extremidade para o cofre de chaves e o Cache Redis na rede virtual.
- Interfaces de rede: IPs privados, um para cada ponto de extremidade privado.
- Servidor flexível do Banco de Dados do Azure para PostgreSQL: acessível somente na rede virtual. Ele cria um banco de dados e um usuário no servidor.
- Zona DNS privada: Permite a resolução de DNS do servidor PostgreSQL na rede virtual.
- Área 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 somente por trás de seu ponto de extremidade privado.
- Cofre de chaves: acessível somente a partir e por trás do seu ponto de extremidade privado. Usado para gerenciar segredos para o aplicativo do Serviço de Aplicativo.
Depois que o comando terminar de criar recursos e implantar o código do aplicativo na primeira vez, o aplicativo de exemplo implantado ainda não funcionará. Você deve fazer pequenas alterações para fazer com que ele se conecte ao banco de dados no Azure.
Está enfrentando problemas? Confira a seção de Solução de problemas.
Usar a cadeia de conexão de banco de dados
O modelo do AZD que você usa gerou as variáveis de conectividade para você como configurações de aplicativo. Ele os envia 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ódigos.
Na saída do AZD, localize as configurações
AZURE_POSTGRESQL_USER,AZURE_POSTGRESQL_PASSWORD,AZURE_POSTGRESQL_HOST,AZURE_POSTGRESQL_NAMEeAZURE_REDIS_CONNECTIONSTRING. Para manter os segredos seguros, somente os nomes de configuração são exibidos. Elas têm esta aparência na saída do 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 do AZD mostra o link direto para a página de configurações do aplicativo. Localize o link e abra-o em uma nova guia do navegador.
Está enfrentando problemas? Confira a seção de Solução de problemas.
Modificar código de exemplo e redeployar
No codespace do GitHub, inicie uma nova sessão de chat selecionando o modo de exibição de Chat e selecionando +.
Pergunte: "@workspace Como o aplicativo se conecta ao banco de dados?". O Copilot pode fornecer uma explicação sobre as configurações de conexão em azureproject/development.py e azureproject/production.py.
Pergunte: "@workspace No modo de produção, meu aplicativo está em execução em um aplicativo Web do Serviço de Aplicativo, que usa o Conector de Serviço do Azure para se conectar a um servidor flexível do PostgreSQL usando o tipo de cliente Django. Quais são os nomes de variáveis de ambiente que preciso usar?" O Copilot pode fornecer uma sugestão de código semelhante à da Opção 2: sem as etapas do GitHub Copilot a seguir e até mesmo dizer para você fazer a alteração no arquivo azureproject/production.py .
Abra azureproject/production.py no explorer e adicione a sugestão de código.
O GitHub Copilot não oferece a mesma resposta todas as vezes. As respostas nem sempre estão corretas. Talvez seja necessário fazer mais perguntas para ajustar sua resposta. Para obter dicas, confira O que posso fazer com o GitHub Copilot no meu codespace?
No terminal, execute o comando
azd deploy.azd deploy
Está enfrentando problemas? Confira a seção de Solução de problemas.
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 do Django é em uma sessão SSH com o contêiner Linux no Serviço de Aplicativo do Azure.
Na saída do AZD, localize a URL da sessão SSH e navegue até ela no navegador. Fica assim na saída:
Open SSH session to App Service container at: <URL>Na sessão SSH, execute
python manage.py migrate. Se o comando for bem-sucedido, o Serviço de Aplicativo estará se conectando com êxito ao banco de dados.Observação
Somente as alterações nos arquivos
/homepodem persistir além das reinicializações do aplicativo. As alterações feitas fora de/homenão são persistentes.
Está enfrentando problemas? Confira a seção de Solução de problemas.
Navegar até o aplicativo
Na saída do AZD, localize a URL do seu aplicativo e navegue até ela no navegador. O URL fica assim na saída do AZD:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <URL>Acrescente alguns restaurantes à lista.
Parabéns! Você está executando um aplicativo Web no Serviço de Aplicativo do Azure, com conectividade segura com o Banco de Dados do Azure para PostgreSQL.
Está enfrentando problemas? Confira a seção de Solução de problemas.
Fazer streaming de logs de diagnóstico
O Serviço de Aplicativo do Azure pode capturar logs de console para ajudá-lo a diagnosticar problemas com o aplicativo. Por conveniência, o modelo do AZD já habilita o registro de logs no sistema de arquivos local e está enviando os logs para um espaço de trabalho do Log Analytics.
O aplicativo de amostra inclui instruções print() para demonstrar esse recurso, conforme mostrado no trecho a seguir.
def index(request):
print('Request for index page received')
restaurants = Restaurant.objects.annotate(avg_rating=Avg('review__rating')).annotate(review_count=Count('review'))
lastViewedRestaurant = request.session.get("lastViewedRestaurant", False)
Na saída do AZD, localize o link para acessar os logs do App Service e navegue até ele no navegador.
Stream App Service logs at: <URL>
Saiba mais sobre como fazer logon em aplicativos Python na série configurando o Azure Monitor para seu aplicativo Python .
Está enfrentando problemas? Confira a seção de Solução de problemas.
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
Solução de problemas
Aqui estão os problemas que você pode encontrar ao tentar trabalhar neste tutorial e 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 não será iniciado. Confira 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.
Obtenho um erro ao executar migrações de banco de dados
Se você encontrar erros relacionados à conexão com o banco de dados, verifique se as configurações do aplicativo (AZURE_POSTGRESQL_USER, AZURE_POSTGRESQL_PASSWORD, AZURE_POSTGRESQL_HOST e AZURE_POSTGRESQL_NAME) foram alteradas ou excluídas. Sem essa cadeia de conexão, o comando migrar não pode se comunicar com o banco de dados.
Perguntas frequentes
- Quanto custa essa configuração?
- Como se conectar ao servidor PostgreSQL que está protegido por trás da rede virtual com outras ferramentas?
- Como o desenvolvimento de aplicativos local funciona com o GitHub Actions?
- De que modo o exemplo do Django está configurado para ser executado no Serviço de Aplicativo do Azure?
- Como alterar a configuração do aplicativo SECRET_KEY para uma referência do Key Vault?
- Como fazer depuração de erros durante a implantação do GitHub Actions?
- Não tenho permissões para criar uma identidade atribuída pelo usuário
- O que posso fazer com o GitHub Copilot no meu codespace?
- Quanto custa essa configuração?
- Como se conectar ao servidor PostgreSQL que está protegido por trás da rede virtual com outras ferramentas?
- Como o desenvolvimento de aplicativos local funciona com o GitHub Actions?
- De que modo o exemplo do Django está configurado para ser executado no Serviço de Aplicativo do Azure?
- Como fazer depuração de erros durante a implantação do GitHub Actions?
- Não tenho permissões para criar uma identidade atribuída pelo usuário
- O que posso fazer com o GitHub Copilot no meu codespace?
Quanto custa essa configuração?
O preço dos recursos criados são os seguintes:
- O plano do Serviço de Aplicativo é criado na camada Básica e pode ser ampliado ou reduzido. Confira Preço do Serviço de Aplicativo.
- O servidor flexível do PostgreSQL é criado na camada mais baixa com capacidade de intermitência Standard_B1ms, com o mínimo do tamanho do armazenamento, que pode ser dimensionado para cima ou para baixo. Confira o Preço do Banco de Dados do Azure para PostgreSQL.
- A rede virtual não incorre em cobrança, a menos que você configure uma funcionalidade extra, como emparelhamento. Consulte os Preços da Rede Virtual do Azure.
- A zona DNS privada incorre em uma pequena cobrança. Consulte os Preços do DNS do Azure.
Como se conectar ao servidor PostgreSQL que está protegido por trás da rede virtual com outras ferramentas?
- Para o acesso básico de uma ferramenta de linha de comando, você pode executar
psqlna sessão SSH do aplicativo. - Para se conectar a partir de uma ferramenta de área de trabalho, seu computador precisa estar dentro da rede virtual. Por exemplo, pode ser uma máquina virtual do Azure conectada a uma das sub-redes ou um computador 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 o desenvolvimento de aplicativos local funciona com o GitHub Actions?
Usando como exemplo o arquivo de fluxo de trabalho gerado automaticamente do Serviço de Aplicativo, cada git push inicia uma nova compilação e execução de implantação. A partir de um clone local do repositório do GitHub, você faz as atualizações desejadas e efetua push para o GitHub. Por exemplo:
git add .
git commit -m "<some-message>"
git push origin main
De que modo o exemplo do Django está configurado para ser executado no Serviço de Aplicativo do Azure?
O aplicativo de exemplo do Django define as configurações no arquivo azureproject/production.py para que ele possa ser executado no Serviço de Aplicativo do Azure. Essas alterações são comuns à implantação do Django na produção e não são específicas para o Serviço de Aplicativo.
O Django valida o cabeçalho HTTP_HOST em solicitações de entrada. O código de exemplo usa a variável de ambiente
WEBSITE_HOSTNAMEno Serviço de Aplicativo para adicionar o nome de domínio do aplicativo à configuração ALLOWED_HOSTS do Django.# Configure the domain name using the environment variable # that Azure automatically creates for us. ALLOWED_HOSTS = [os.environ['WEBSITE_HOSTNAME']] if 'WEBSITE_HOSTNAME' in os.environ else []O Django não dá suporte à disponibilização de arquivos estáticos em produção. Para este tutorial, você usa o WhiteNoise para habilitar o fornecimento dos arquivos. O pacote WhiteNoise já foi instalado com o arquivo requirements.txt, e seu middleware é adicionado à lista.
# WhiteNoise configuration MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', # Add whitenoise middleware after the security middleware 'whitenoise.middleware.WhiteNoiseMiddleware',Em seguida, as configurações de arquivo estático são configuradas de acordo com a documentação do Django.
SESSION_ENGINE = "django.contrib.sessions.backends.cache" STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
Para obter mais informações, confira as Configurações de produção para aplicativos Django.
Como alterar a configuração do aplicativo SECRET_KEY para uma referência do Key Vault?
Nas etapas do portal do Azure descritas, você pode alterar SECRET_KEY para uma referência do Key Vault executando os seguintes comandos da CLI do Azure no cloud shell:
# Change the following variables to match your environment
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
KEY_VAULT_NAME=<key-vault-name>
APP_SERVICE_NAME=<app-name>
SECRET_NAME=djangoSecretKey
# Set the subscription ID
az account set --subscription $SUBSCRIPTION_ID
# Assign 'Key Vault Secrets Officer' role to your user at the scope of the key vault
az role assignment create \
--assignee $(az ad signed-in-user show --query id -o tsv) \
--role $(az role definition list --name "Key Vault Secrets Officer" --query "[].id" -o tsv) \
--scope $(az keyvault show --name $KEY_VAULT_NAME --resource-group $RESOURCE_GROUP --query id --output tsv)
# Add the secret to the key vault
az keyvault secret set \
--vault-name $KEY_VAULT_NAME \
--name $SECRET_NAME \
--value $(python -c 'import secrets; print(secrets.token_hex())')
# Add Key Vault reference to the App Service configuration
az webapp config appsettings set \
--resource-group $RESOURCE_GROUP \
--name $APP_SERVICE_NAME \
--settings "SECRET_KEY=@Microsoft.KeyVault(SecretUri=https://$KEY_VAULT_NAME.vault.azure.net/secrets/$SECRET_NAME)"
Você também pode fazer a mesma coisa no portal. Para saber mais, veja:
Como debugar erros na implantação do GitHub Actions?
Se uma etapa falhar no arquivo de fluxo de trabalho do GitHub gerado automaticamente, tente modificar o comando com falha para gerar uma saída mais detalhada. Por exemplo, você pode obter mais saída de um dos comandos python adicionando a opção -d. Confirme e efetue push das suas alterações para disparar outra implantação para Serviço de Aplicativo.
Não tenho permissões para criar uma identidade atribuída pelo usuário
Consulte Configurar a implantação do GitHub Actions no Centro de Implantação.
O que posso fazer com o GitHub Copilot em meu codespace?
A visão de chat do GitHub Copilot já estava disponível para você quando você criou o codespace. Para sua conveniência, incluímos a extensão de chat do GitHub Copilot na definição de contêiner (confira .devcontainer/devcontainer.json). No entanto, você precisa de uma conta do GitHub Copilot (avaliação gratuita de 30 dias disponível).
Algumas dicas para você ao falar com o GitHub Copilot:
- Em uma única sessão de chat, as perguntas e respostas se baseiam umas nas outras e você pode ajustar suas perguntas para ajustar a resposta que receber.
- 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, consulte 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 tem permissão para fazer as alterações para você. 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 um certificado personalizados.
Ou saiba como o Serviço de Aplicativo executa um aplicativo Python: