Implantar um aplicativo Web do FastAPI do Python com PostgreSQL no Azure
Neste tutorial, você implantará um aplicativo Web em Python controlado por dados (FastAPI) no Serviço de Aplicativo do Azure com 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. Se você quiser, em vez disso, consulte o Tutorial do Flask ou o Tutorial do Django.
Para concluir este tutorial, você precisará de:
- Uma conta do Azure com uma assinatura ativa. Se você ainda não tem uma conta do Azure, crie-a gratuitamente.
- Conhecimento do Python com desenvolvimento do FastAPI
- 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 localmente. 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 FastAPI
Ir para o final
Com o Azure Developer CLI instalado, pule para o final do tutorial executando os seguintes comandos em um diretório de trabalho vazio:
azd auth login
azd init --template msdocs-fastapi-postgresql-sample-app
azd up
Aplicativo de exemplo
Um aplicativo Python de exemplo usando a estrutura FastAPI é fornecido para ajudar você a acompanhar este tutorial. Para implantá-lo sem executá-lo localmente, ignore esta parte.
Para executar o aplicativo localmente, certifique-se de que você tenha o Python 3.8 ou superior e o PostgreSQL instalados localmente. Clone o branch starter-no-infra
do repositório de exemplo e altere para a raiz do repositório.
git clone -b starter-no-infra https://github.com/Azure-Samples/msdocs-fastapi-postgresql-sample-app
cd msdocs-fastapi-postgresql-sample-app
Crie um arquivo .env conforme mostrado abaixo usando o arquivo . env.sample como guia. Defina o valor de DBNAME
como o nome de um banco de dados existente em sua instância do PostgreSQL local. Defina os valores de DBHOST
, DBUSER
e DBPASS
conforme apropriado para sua instância do PostgreSQL local.
DBNAME=<database name>
DBHOST=<database-hostname>
DBUSER=<db-user-name>
DBPASS=<db-password>
Crie um ambiente virtual para o aplicativo:
py -m venv .venv
.venv\scripts\activate
Instalar as dependências:
python3 -m pip install -r src/requirements.txt
Instale o aplicativo como um pacote editável:
python3 -m pip install -e src
Execute o aplicativo de exemplo usando os seguintes comandos:
# Run database migration
python3 src/fastapi_app/seed_data.py
# Run the app at http://127.0.0.1:8000
python3 -m uvicorn fastapi_app:app --reload --port=8000
1. Criar Serviço de Aplicativo e PostgreSQL
Nesta etapa, você criará 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ê especificará:
- O Nome do aplicativo Web. Esse nome é usado como parte do nome DNS para seu aplicativo Web na forma de
https://<app-name>.azurewebsites.net
. - A Região para executar o aplicativo fisicamente no mundo.
- A pilha de runtime para o aplicativo. É aqui que você seleciona a versão do Python a ser usada para seu aplicativo.
- O plano de hospedagem para o aplicativo. É o tipo de preço que inclui o conjunto de recursos e a capacidade de colocação em escala do seu aplicativo.
- O Grupo de Recursos para o aplicativo. Um grupo de recursos permite agrupar (em um contêiner lógico) todos os recursos necessários do Azure 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:
- Insira “banco de dados do aplicativo Web” na caixa de pesquisa na parte superior do portal do Azure.
- Selecione o item Web App + Banco de Dados no 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 conforme mostrado a seguir.
- Grupo de recursos → selecione Criar novo e use um nome de msdocs-python-postgres-tutorial.
- Região → qualquer região do Azure próxima a você.
- Nome → msdocs-Python-postgres-XYZ, em que XYZ são três caracteres aleatórios. Esse nome deve ser exclusivo no Azure.
- Pilha de runtime → Python 3.12.
- O 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.
- Plano de hospedagem → Básico. Quando estiver pronto, você poderá escalar verticalmente até um tipo de preço de produção posteriormente.
- Selecione Examinar + criar.
- Depois de concluir a validação, selecione Criar.
Etapa 3: a implantação leva alguns minutos para ser concluída. Depois que 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. É criado um plano do Linux na camada Básico.
- Serviço de Aplicativo → Representa seu aplicativo e é executado no plano de Serviço de Aplicativo.
- Rede virtual → Integrada ao aplicativo do Serviço de Aplicativo e isola o tráfego de rede de back-end.
- Servidor flexível do Banco de Dados do Azure para PostgreSQL → Acessível somente da rede virtual. Um banco de dados e um usuário são criados para você no servidor.
- Zona DNS privada → Habilita a resolução de DNS do servidor PostgreSQL na rede virtual.
Etapa 4: para aplicativos FastAPI, você deve inserir um comando de inicialização para que o serviço de aplicativo possa iniciar o seu aplicativo. Na página do Serviço de Aplicativo:
- No menu à esquerda, em Configurações, selecione Configuração.
- Na guia Configurações gerais da página Configuração, insira
src/entrypoint.sh
no campo Comando de Inicialização nas Configurações de pilha. - Selecione Salvar. Quando solicitado, selecione Continuar. Para saber mais sobre a configuração e a inicialização do aplicativo no Serviço de Aplicativo, confira Configurar um aplicativo Python do Linux para o Serviço de Aplicativo do Azure.
2. Verificar as configurações de conexão
O assistente de criação gerou as variáveis de conectividade para você já como configurações de aplicativo. As configurações do aplicativo são uma maneira de manter os segredos de conexão fora do seu repositório de códigos. Quando você estiver pronto para mover seus segredos para um local mais seguro, aqui está um artigo sobre o armazenamento no Azure Key Vault.
Etapa 1: Na página Serviço de Aplicativo, no menu à esquerda, selecione Variáveis de ambiente.
Etapa 2: Na guia Configurações do aplicativo da página Variáveis de ambiente, verifique se AZURE_POSTGRESQL_CONNECTIONSTRING
está presente. A cadeia de conexão será injetada no ambiente de runtime como uma variável de ambiente.
3. Implantar código de exemplo
Nesta etapa, você configurará a implantação do GitHub usando o GitHub Actions. É 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
em seu repositório GitHub iniciará a ação de compilação e implantação.
Etapa 1: em uma nova janela do navegador:
- Entre em sua conta do GitHub.
- Navegue até https://github.com/Azure-Samples/msdocs-fastapi-postgresql-sample-app.
- Selecione Fork.
- Selecione Criar fork.
Etapa 2: na página do GitHub, abra o Visual Studio Code no navegador pressionando a tecla .
.
Etapa 3: No Visual Studio Code no navegador, abra src/fastapi/models.py no explorador. Consulte as variáveis de ambiente que estão sendo usadas no ambiente de produção, incluindo as configurações de aplicativo que você viu na página de configuração.
Etapa 4: De volta à página do Serviço de Aplicativo, no menu à esquerda, em Implantação, selecione Centro de Implantação.
Etapa 5: 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-fastapi-postgresql-sample-app.
- Em Branch, selecione main.
- Manter a opção padrão selecionada para Adicionar um fluxo de trabalho.
- Em Tipo de autenticação, selecione Identidade atribuída pelo usuário.
- No menu superior, selecione Salvar. O Serviço de Aplicativo confirma um arquivo de fluxo de trabalho no repositório GitHub escolhido, no diretório
.github/workflows
.
Etapa 6: na página Centro de Implantação:
- Selecione Logs. Uma execução de implantação já foi iniciada.
- No item de log para a execução da implantação, selecione Compilar/Implantar Logs.
Etapa 7: você será levado para o repositório do GitHub e verá que a ação do GitHub está em execução. O arquivo do fluxo de trabalho define dois estágios separados, compilar e implantar. Aguarde a execução do GitHub para mostrar um status de Concluído. Ela leva cerca de 5 minutos.
Está enfrentando problemas? Verifique o Guia de Solução de Problemas.
4. Gerar esquema de banco de dados
Na seção anterior, você adicionou src/entrypoint.sh como o comando de inicialização para o seu aplicativo.
entrypoint.sh contém a seguinte linha: python3 src/fastapi_app/seed_data.py
. Este comando migra o seu banco de dados. No aplicativo de exemplo, ele garante apenas que as tabelas corretas sejam criadas em seu banco de dados. Ele não preenche essas tabelas com nenhum dado.
Nesta seção, você executará este comando manualmente para fins de demonstração. Com o banco de dados PostgreSQL protegido pela rede virtual, a maneira mais fácil de executar o comando é em uma sessão SSH com o contêiner do Serviço de Aplicativo.
Etapa 1: de volta na página do Serviço de Aplicativo, no menu à esquerda,
- Selecione SSH.
- Selecione Ir.
Etapa 2: no terminal SSH, execute python3 src/fastapi_app/seed_data.py
. Se ele for bem-sucedido, o Serviço de Aplicativo está se conectando com êxito ao banco de dados.
Somente as alterações nos arquivos /home
podem persistir além das reinicializações do aplicativo. As alterações feitas fora de /home
não são persistentes.
5. 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. Você também pode navegar diretamente até
https://<app-name>.azurewebsites.net
.
Etapa 2: acrescente alguns restaurantes à lista. Parabéns, você está executando um aplicativo Web no Serviço de Aplicativo do Azure, com a conectividade segura do Banco de Dados do Azure para PostgreSQL.
6. Logs de diagnóstico de fluxo
O aplicativo de exemplo usa o módulo de log da Biblioteca Padrão do Python para ajudar você a diagnosticar problemas com o seu aplicativo. O aplicativo de exemplo inclui chamadas para o agente, conforme mostrado no código a seguir.
@app.get("/", response_class=HTMLResponse)
async def index(request: Request, session: Session = Depends(get_db_session)):
logger.info("root called")
statement = (
select(Restaurant, func.avg(Review.rating).label("avg_rating"), func.count(Review.id).label("review_count"))
.outerjoin(Review, Review.restaurant == Restaurant.id)
.group_by(Restaurant.id)
)
Etapa 1: na página Serviço de Aplicativo:
- No menu à esquerda, em Monitoramento, selecione 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.
Os eventos podem levar vários minutos para serem exibidos nos logs de diagnóstico. Saiba mais sobre como fazer logon em aplicativos Python na série configurando o Azure Monitor para seu aplicativo Python .
7. 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:
- Insira o nome do grupo de recursos para confirmar a exclusão.
- Selecione Excluir.
1. Criar recursos do Azure e implantar um aplicativo de amostra
Nesta etapa, você criará os recursos do Azure e implantará um aplicativo de amostra 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.
Caso ainda não tenha feito isso, clone o branch de
starter-no-infra
do repositório de amostra em um terminal local.git clone -b starter-no-infra https://github.com/Azure-Samples/msdocs-fastapi-postgresql-sample-app cd msdocs-fastapi-postgresql-sample-app
Esse branch clonado é o ponto de partida. Ele contém um aplicativo FastAPI de unidade de dados simples.
Na raiz do repositório, execute
azd init
.azd init --template msdocs-fastapi-postgresql-sample-app
Quando 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>.azurewebsites.net
). São permitidos caracteres alfanuméricos e hífens.Execute o comando
azd up
para provisionar os recursos necessários do Azure e implantar o código do aplicativo. Se você ainda não estiver conectado ao Azure, o navegador será iniciado e solicitará que você entre. O comandoazd up
também solicitará que você selecione a assinatura e o local desejados para implantar.azd up
O comando
azd up
pode levar vários minutos para ser concluído. Ele também compila e implanta o código do aplicativo. Durante a execução, o comando fornece mensagens sobre o processo de provisionamento e implantação, incluindo um link para a implantação no Azure. Quando ele é concluído, o comando também exibe um link para o aplicativo de implantação.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. É especificado um plano do Linux na camada B1.
- Serviço de Aplicativo → Representa seu aplicativo e é executado no plano de Serviço de Aplicativo.
- Rede virtual → Integrada ao aplicativo do Serviço de Aplicativo e isola o tráfego de rede de back-end.
- Servidor flexível do Banco de Dados do Azure para PostgreSQL → Acessível somente da rede virtual. Um banco de dados e um usuário são criados para você no servidor.
- Zona DNS privada → Habilita a resolução de DNS do servidor PostgreSQL na rede virtual.
- O workspace do Log Analytics → Atua como o contêiner de destino para seu aplicativo enviar seus logs, em que também poderá consultar os logs.
Quando o comando
azd up
for concluído, anote os valores da ID da Assinatura (Guid), do Serviço de Aplicativo e do Grupo de Recursos na saída. Você usará eles nas seções a seguir. A sua saída será semelhante à seguinte saída (parcial):Subscription: Your subscription name (1111111-1111-1111-1111-111111111111) Location: East US You can view detailed progress in the Azure Portal: https://portal.azure.com/#view/HubsExtension/DeploymentDetailsBlade/~/overview/id/%2Fsubscriptions%2F1111111-1111-1111-1111-111111111111%2Fproviders%2FMicrosoft.Resources%2Fdeployments%2Fyourenv-1721867673 (✓) Done: Resource group: yourenv-rg (✓) Done: Virtual Network: yourenv-e2najjk4vewf2-vnet (✓) Done: App Service plan: yourenv-e2najjk4vewf2-service-plan (✓) Done: Log Analytics workspace: yourenv-e2najjk4vewf2-workspace (✓) Done: Application Insights: yourenv-e2najjk4vewf2-appinsights (✓) Done: Portal dashboard: yourenv-e2najjk4vewf2-dashboard (✓) Done: App Service: yourenv-e2najjk4vewf2-app-service (✓) Done: Azure Database for PostgreSQL flexible server: yourenv-e2najjk4vewf2-postgres-server (✓) Done: Cache for Redis: yourenv-e2najjk4vewf2-redisCache (✓) Done: Private Endpoint: cache-privateEndpoint SUCCESS: Your application was provisioned in Azure in 32 minutes. You can view the resources created under the resource group yourenv-rg in Azure Portal: https://portal.azure.com/#@/resource/subscriptions/1111111-1111-1111-1111-111111111111/resourceGroups/yourenv-rg/overview Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: https://yourenv-e2najjk4vewf2-app-service.azurewebsites.net/
2. Examinar a cadeia de conexões de banco de dados
O modelo azd gera as variáveis de conectividade para você como configurações de aplicativo. As configurações do aplicativo são uma maneira de manter os segredos de conexão fora do seu repositório de códigos.
No arquivo
infra/resources.bicep
, localize as configurações do aplicativo e localize a configuração paraAZURE_POSTGRESQL_CONNECTIONSTRING
.resource appSettings 'config' = { name: 'appsettings' properties: { SCM_DO_BUILD_DURING_DEPLOYMENT: 'true' AZURE_POSTGRESQL_CONNECTIONSTRING: 'dbname=${pythonAppDatabase.name} host=${postgresServer.name}.postgres.database.azure.com port=5432 sslmode=require user=${postgresServer.properties.administratorLogin} password=${databasePassword}' SECRET_KEY: secretKey AZURE_REDIS_CONNECTIONSTRING: 'rediss://:${redisCache.listKeys().primaryKey}@${redisCache.name}.redis.cache.windows.net:6380/0' } }
AZURE_POSTGRESQL_CONNECTIONSTRING
contém a cadeia de conexão com o banco de dados Postgres no Azure. Você precisa usá-la em seu código para se conectar a ele. Você pode encontrar o código que usa esta variável de ambiente em src/fastapi/models.py:sql_url = "" if os.getenv("WEBSITE_HOSTNAME"): logger.info("Connecting to Azure PostgreSQL Flexible server based on AZURE_POSTGRESQL_CONNECTIONSTRING...") env_connection_string = os.getenv("AZURE_POSTGRESQL_CONNECTIONSTRING") if env_connection_string is None: logger.info("Missing environment variable AZURE_POSTGRESQL_CONNECTIONSTRING") else: # Parse the connection string details = dict(item.split('=') for item in env_connection_string.split()) # Properly format the URL for SQLAlchemy sql_url = ( f"postgresql://{quote_plus(details['user'])}:{quote_plus(details['password'])}" f"@{details['host']}:{details['port']}/{details['dbname']}?sslmode={details['sslmode']}" ) else: logger.info("Connecting to local PostgreSQL server based on .env file...") load_dotenv() POSTGRES_USERNAME = os.environ.get("DBUSER") POSTGRES_PASSWORD = os.environ.get("DBPASS") POSTGRES_HOST = os.environ.get("DBHOST") POSTGRES_DATABASE = os.environ.get("DBNAME") POSTGRES_PORT = os.environ.get("DBPORT", 5432) sql_url = f"postgresql://{POSTGRES_USERNAME}:{POSTGRES_PASSWORD}@{POSTGRES_HOST}:{POSTGRES_PORT}/{POSTGRES_DATABASE}" engine = create_engine(sql_url)
3. Examinar o comando de inicialização
O Serviço de Aplicativo do Azure requer um comando de inicialização para executar o seu aplicativo FastAPI. O modelo azd define este comando para você na instância do Serviço de Aplicativo.
No arquivo
infra/resources.bicep
, localize a declaração para seu site e, em seguida, localize a configuração paraappCommandLine
. Esta é a configuração para o comando de inicialização.resource web 'Microsoft.Web/sites@2022-03-01' = { name: '${prefix}-app-service' location: location tags: union(tags, { 'azd-service-name': 'web' }) kind: 'app,linux' properties: { serverFarmId: appServicePlan.id siteConfig: { alwaysOn: true linuxFxVersion: 'PYTHON|3.11' ftpsState: 'Disabled' appCommandLine: 'src/entrypoint.sh' minTlsVersion: '1.2' } httpsOnly: true } identity: { type: 'SystemAssigned' }
O comando de inicialização executa o arquivo src/entrypoint.sh. Examine o código nesse arquivo para entender os comandos executados pelo Serviço de Aplicativo para iniciar o seu aplicativo:
#!/bin/bash set -e python3 -m pip install --upgrade pip python3 -m pip install -e src python3 src/fastapi_app/seed_data.py python3 -m gunicorn fastapi_app:app -c src/gunicorn.conf.py
Para saber mais sobre a configuração e a inicialização do aplicativo no Serviço de Aplicativo, confira Configurar um aplicativo Python do Linux para o Serviço de Aplicativo do Azure.
4. Gerar esquema de banco de dados
Você deve ter notado na seção anterior que entrypoint.sh contém a seguinte linha: python3 src/fastapi_app/seed_data.py
. Este comando migra o seu banco de dados. No aplicativo de exemplo, ele garante apenas que as tabelas corretas sejam criadas em seu banco de dados. Ele não preenche essas tabelas com nenhum dado.
Nesta seção, você executará este comando manualmente para fins de demonstração. Com o banco de dados PostgreSQL protegido pela rede virtual, a maneira mais fácil de executar o comando é em uma sessão SSH com o contêiner do Serviço de Aplicativo.
Use o valor do Serviço de Aplicativo que você anotou anteriormente na saída do azd e o modelo mostrado abaixo, para construir a URL para a sessão SSH e navegar até ela no navegador:
https://<app-name>.scm.azurewebsites.net/webssh/host
No terminal SSH, execute
python3 src/fastapi_app/seed_data.py
. Se ele for bem-sucedido, o Serviço de Aplicativo está se conectando com êxito ao banco de dados.Observação
Somente as alterações nos arquivos
/home
podem persistir além das reinicializações do aplicativo. As alterações feitas fora de/home
não são persistentes.
5. Navegar até o aplicativo
Na saída do AZD, localize o URL do seu aplicativo e navegue até ele no navegador. O URL fica assim na saída do AZD:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: https://<app-name>.azurewebsites.net/
Acrescente alguns restaurantes à lista.
Parabéns, você está executando um aplicativo Web no Serviço de Aplicativo do Azure, com a conectividade segura do Banco de Dados do Azure para PostgreSQL.
6. Logs de diagnóstico de fluxo
O Serviço de Aplicativo do Azure pode capturar logs para ajudar você a diagnosticar problemas com o seu aplicativo. Por conveniência, o modelo azd já habilitou o registro em log no sistema de arquivos local.
O aplicativo de exemplo usa o módulo de log da Biblioteca Padrão do Python para gerar logs. O aplicativo de exemplo inclui chamadas para o agente, conforme mostrado abaixo.
@app.get("/", response_class=HTMLResponse)
async def index(request: Request, session: Session = Depends(get_db_session)):
logger.info("root called")
statement = (
select(Restaurant, func.avg(Review.rating).label("avg_rating"), func.count(Review.id).label("review_count"))
.outerjoin(Review, Review.restaurant == Restaurant.id)
.group_by(Restaurant.id)
)
Use os valores de ID da assinatura (Guid), Grupo de recursos e Serviço de aplicativo que você anotou anteriormente na saída do azd e o modelo mostrado abaixo, para construir a URL para transmitir logs do Serviço de Aplicativo e navegar até ele no navegador.
https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream
Os eventos podem levar vários minutos para serem exibidos nos logs de diagnóstico. Saiba mais sobre como fazer logon em aplicativos Python na série configurando o Azure Monitor para seu aplicativo Python .
7. Limpar os recursos
Para excluir todos os recursos do Azure no ambiente de implantação atual, execute azd down
.
azd down
Solução de problemas
Listados abaixo estão os problemas que poderá encontrar ao tentar trabalhar com esse tutorial e as etapas para resolvê-los.
Não consigo me conectar à sessão SSH
Se você não pode se conectar à sessão SSH, isso indica que não foi possível iniciar o aplicativo. Confira os logs de diagnóstico para obter detalhes. Por exemplo, se você vir um erro como KeyError: 'AZURE_POSTGRESQL_CONNECTIONSTRING'
, poderá 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 algum erro relacionado à conexão com o banco de dados, verifique se as configurações do aplicativo (AZURE_POSTGRESQL_CONNECTIONSTRING
) foram alteradas. 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?
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 acesso básico de uma ferramenta de linha comando, você pode executar
psql
no terminal 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 VM 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
Próximas etapas
Avance para o próximo tutorial para saber como proteger seu aplicativo com um domínio e um certificado personalizados.
Saiba como o Serviço de Aplicativo executa um aplicativo Python: