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ê aprenderá a implantar um aplicativo Web Python Django controlado por dados para Serviço de Aplicativo do Azure e usar o Service Connector para conectá-lo a outros serviços Azure. O aplicativo web de exemplo armazena informações de restaurante e avaliação em um banco de dados do Banco de Dados do Azure para PostgreSQL e armazena fotos em um contêiner do Armazenamento do Azure.
Você usa CLI do Azure para concluir as seguintes tarefas:
- Crie um aplicativo Web Python Django e implante-o em Serviço de Aplicativo do Azure.
- Crie um servidor e um banco de dados flexíveis Banco de Dados do Azure para PostgreSQL.
- Crie uma conta e um contêiner Armazenamento do Azure.
- Conecte o aplicativo Web ao banco de dados e ao contêiner de armazenamento usando o Service Connector com autenticação de identidade gerenciada .
- Interaja com o aplicativo Web.
Observação
Este tutorial é semelhante ao tutorial do Serviço de Aplicativo Implantar um aplicativo web Python Django com PostgreSQL no Azure, mas usa uma identidade gerenciada sem senha atribuída pelo sistema com controle de acesso baseado em função do Azure para acessar outros recursos do Azure. A seção Criar uma conexão de serviço sem senha deste artigo mostra como o Service Connector simplifica o processo de conexão.
O aplicativo Web usa a classe DefaultAzureCredential da biblioteca de clientes Python Azure Identity para detectar automaticamente quando uma identidade gerenciada existe e a usa para acessar os outros recursos.
Pré-requisitos
Uma assinatura do Azure com permissões de gravação e atribuição de função para os recursos do tutorial, em uma região do Azure que suporta o Conector de Serviço e tem suporte e cota suficientes para Serviço de Aplicativo.
Azure Cloud Shell para executar as etapas do tutorial ou se preferir executar localmente:
- Instale CLI do Azure 2.30.0 ou superior. Para verificar sua versão, execute
az --version. Para atualizar, executeaz upgrade. - Entre no Azure usando
az logine seguindo os prompts.
- Instale CLI do Azure 2.30.0 ou superior. Para verificar sua versão, execute
Configure seu ambiente
Verifique se sua assinatura está registrada para usar os provedores de recursos
Microsoft.ServiceLinkereMicrosoft.DBforPostgreSQL. Caso contrário, executeaz provider register -n Microsoft.[name of service]para registrar os provedores.Instale as seguintes extensões de CLI do Azure:
az extension add --name serviceconnector-passwordless --upgrade az extension add --name rdbms-connect
Clonar o aplicativo de exemplo
Clone o repositório do aplicativo de exemplo.
git clone https://github.com/Azure-Samples/serviceconnector-webapp-postgresql-django-passwordless.gitComo alternativa, você pode baixar o aplicativo de https://github.com/Azure-Samples/serviceconnector-webapp-postgresql-django-passwordless e descompactá-lo em uma pasta chamada serviceconnector-webapp-postgresql-django-passwordless.
Altere os diretórios para a pasta de repositório usando
cd serviceconnector-webapp-postgresql-django-passwordlesse execute todos os comandos restantes dessa pasta.
No aplicativo de exemplo, as configurações de produção do aplicativo Web estão no arquivo azuresite/production.py . As configurações de desenvolvimento estão em azuresite/settings.py. As configurações de produção configuram o Django para ser executado em qualquer ambiente de produção e não são específicas do Serviço de Aplicativo.
O aplicativo usa configurações de produção quando a variável de WEBSITE_HOSTNAME ambiente é definida. Para cadeias de conexão do Azure Postgres, o Serviço de Aplicativo configura automaticamente essa variável como a URL do aplicativo web, como https://msdocs-django.azurewebsites.net.
Para obter mais informações, consulte a lista de verificação de implantação do Django. Consulte também as configurações de Produção para o Django no Azure.
Definir variáveis de ambiente iniciais
O código a seguir define as variáveis de ambiente necessárias para este tutorial.
-
LOCATIONdeve ser uma região do Azure onde sua assinatura possui quota suficiente para a criação de recursos e não restrinja o uso do Banco de Dados do Azure para PostgreSQL para sua assinatura. - Deve
ADMIN_PWconter de 8 a 128 caracteres em pelo menos três das quatro categorias letras maiúsculas, letras minúsculas, numerais e caracteres não numéricos, excluindo$.
Configure as variáveis de ambiente a seguir, substituindo os placeholders
<region>e<database password>por valores válidos.LOCATION="<region>" RAND_ID=$RANDOM RESOURCE_GROUP_NAME="msdocs-mi-web-app" APP_SERVICE_NAME="msdocs-mi-web-$RAND_ID" DB_SERVER_NAME="msdocs-mi-postgres-$RAND_ID" ADMIN_USER="demoadmin" ADMIN_PW="<database password>"Crie um grupo de recursos para conter todos os recursos do projeto. O nome do grupo de recursos é armazenado em cache e aplicado automaticamente aos comandos subsequentes.
az group create --name $RESOURCE_GROUP_NAME --location $LOCATION
Implantar o código do aplicativo no Serviço de Aplicativo
Crie o host do aplicativo no Serviço de Aplicativo e implante o código de aplicativo de exemplo nesse host. O az webapp up comando executa as seguintes ações:
- Cria um plano do Serviço de Aplicativo na camada de preços Basic (B1).
- Cria o aplicativo do Serviço de Aplicativo.
- Habilita o log padrão para o aplicativo.
- Faz upload do repositório usando a implantação ZIP com a automação de build ativada.
- Constrói o aplicativo.
No código, o sku define a CPU, a memória e o custo do plano do Serviço de Aplicativo. O plano de serviço Básico (B1) gera um pequeno custo em sua assinatura Azure. Você pode omitir o --sku parâmetro para usar o SKU padrão, geralmente P1v3 (Premium v3). Para obter uma lista completa dos planos do Serviço de Aplicativo, consulte os preços do Serviço de Aplicativo.
Na pasta do repositório serviceconnector-webapp-postgresql-django-passwordless , execute o seguinte
az webapp upcomando:az webapp up \ --resource-group $RESOURCE_GROUP_NAME \ --location $LOCATION \ --name $APP_SERVICE_NAME \ --runtime PYTHON:3.10 \ --sku B1Observação
A implantação leva alguns minutos, e o comando pode travar ou expirar, especialmente em um SKU Básico. Depois que o aplicativo for compilado com êxito e a saída for exibida
Starting the site, você poderá sair do comando selecionando Ctrl+C.Configure o aplicativo para usar o arquivo start.sh do repositório executando o comando az webapp config set.
az webapp config set \ --resource-group $RESOURCE_GROUP_NAME \ --name $APP_SERVICE_NAME \ --startup-file "start.sh"
Criar o banco de dados Postgres no Azure
Crie o banco de dados Banco de Dados do Azure para PostgreSQL para armazenar informações do aplicativo. O comando az postgres flexible-server create cria um servidor Banco de Dados do Azure para PostgreSQL flexível no grupo de recursos especificado que tem:
- Nome do servidor especificado no
--nameparâmetro. O nome deve ser exclusivo em todo o Azure. - SKU especificada no
--sku-nameparâmetro. - Nome de usuário e senha da conta de administrador especificados nos parâmetros
--admin-usere--admin-password.
Crie o servidor Banco de Dados do Azure para PostgreSQL. Se solicitado a habilitar o acesso ao endereço IP do cliente atual, insira
ypara sim.az postgres flexible-server create \ --resource-group $RESOURCE_GROUP_NAME \ --name $DB_SERVER_NAME \ --location $LOCATION \ --admin-user $ADMIN_USER \ --admin-password $ADMIN_PW \ --sku-name Standard_D2ds_v4 \ --microsoft-entra-auth EnabledSe você não for solicitado a habilitar o acesso ao endereço IP do cliente atual, configure uma regra de firewall no servidor com o comando az postgres flexible-server firewall-rule create . Essa regra permite que seu ambiente local acesse o servidor.
IP_ADDRESS=<your IP address> az postgres flexible-server firewall-rule create \ --resource-group $RESOURCE_GROUP_NAME \ --name $DB_SERVER_NAME \ --rule-name AllowMyIP \ --start-ip-address $IP_ADDRESS \ --end-ip-address $IP_ADDRESSDica
Use qualquer ferramenta ou site que mostre seu endereço IP para substituir
<your IP address>no comando. Por exemplo, você pode usar O que é meu endereço IP?.Crie um banco de dados nomeado
restaurantno servidor usando o comando az postgres flexible-server execute .az postgres flexible-server execute \ --name $DB_SERVER_NAME \ --admin-user $ADMIN_USER \ --admin-password $ADMIN_PW \ --database-name postgres \ --querytext 'create database restaurant;'
Criar uma conexão de serviço sem senha
Use az webapp connection create postgres-flexible para adicionar um conector de serviço que conecta o aplicativo da web do Azure ao banco de dados Postgres usando autenticação de identidade gerenciada sem senha. O comando a seguir configura o Banco de Dados do Azure para PostgreSQL para usar a identidade gerenciada e o controle de acesso baseado em função do Azure. A saída do comando lista as ações que o Service Connector executa.
O comando cria uma variável de ambiente nomeada AZURE_POSTGRESQL_CONNECTIONSTRING que fornece as informações de conexão de banco de dados para o aplicativo. O código do aplicativo acessa variáveis de ambiente de aplicativo com instruções como os.environ.get('AZURE_POSTGRESQL_HOST'). Para obter mais informações, consulte variáveis de ambiente do Access.
az webapp connection create postgres-flexible \
--resource-group $RESOURCE_GROUP_NAME \
--name $APP_SERVICE_NAME \
--target-resource-group $RESOURCE_GROUP_NAME \
--server $DB_SERVER_NAME \
--database restaurant \
--client-type python \
--system-identity
Criar e conectar-se a uma conta de armazenamento
Use az webapp connection create storage-blob para criar uma conta de armazenamento do Azure e um conector de serviço. O comando executa as seguintes ações:
- Habilita a identidade gerenciada atribuída pelo sistema no aplicativo Web.
- Adiciona o aplicativo Web com a função Colaborador de Dados de Blobs de Armazenamento à nova conta de armazenamento.
- Configura a rede da conta de armazenamento para aceitar o acesso do aplicativo Web.
- Cria uma variável de ambiente chamada
AZURE_STORAGEBLOB_RESOURCEENDPOINTpara a conta Armazenamento do Azure.
Execute o seguinte comando para criar a conta de armazenamento e a conexão:
STORAGE_ACCOUNT_URL=$(az webapp connection create storage-blob \ --new true \ --resource-group $RESOURCE_GROUP_NAME \ --name $APP_SERVICE_NAME \ --target-resource-group $RESOURCE_GROUP_NAME \ --client-type python \ --system-identity \ --query configurations[].value \ --output tsv) STORAGE_ACCOUNT_NAME=$(cut -d . -f1 <<< $(cut -d / -f3 <<< $STORAGE_ACCOUNT_URL))Atualize a conta de armazenamento para permitir o acesso público a blobs, para que os usuários do aplicativo possam acessar fotos.
az storage account update \ --name $STORAGE_ACCOUNT_NAME \ --allow-blob-public-accessUse o comando az storage container create para criar um contêiner chamado
photosna conta de armazenamento e permitir acesso de leitura pública anônima aos blobs no novo contêiner.# Set the BLOB_ENDPOINT variable BLOB_ENDPOINT=$(az storage account show --name $STORAGE_ACCOUNT_NAME --query "primaryEndpoints.blob" | sed 's/"//g') echo $BLOB_ENDPOINT # Create the storage container using the BLOB_ENDPOINT variable az storage container create \ --account-name $STORAGE_ACCOUNT_NAME \ --name photos \ --public-access blob \ --auth-mode login \ --blob-endpoint $BLOB_ENDPOINT
Testar o aplicativo Web Python no Azure
Abra e teste o aplicativo Web Azure Restaurant Review. O aplicativo usa o pacote azure.identity e sua DefaultAzureCredential classe. Quando o aplicativo está em execução no Azure, o DefaultAzureCredential detecta automaticamente quando existe uma identidade gerenciada para o Serviço de Aplicativo e o usa para acessar os recursos de Armazenamento do Azure e Banco de Dados do Azure para PostgreSQL. O aplicativo não precisa fornecer chaves de armazenamento, certificados ou credenciais para acessar esses recursos.
Para uma instalação de CLI do Azure local, você pode usar
az webapp browsepara abrir o aplicativo no navegador padrão:az webapp browse --name $APP_SERVICE_NAME.azurewebsites.net --resource-group $RESOURCE_GROUP_NAMEAzure Cloud Shell não pode abrir um navegador local, portanto, ele não dá suporte ao comando
az webapp browse. Em Cloud Shell, a maneira mais fácil de abrir o aplicativo web é selecionar o link domínio padrão no canto superior direito da página do portal do Azure do aplicativo.
Pode levar um ou dois minutos para o aplicativo iniciar. Se você vir uma página de aplicativo padrão que não é o aplicativo de exemplo, aguarde um minuto e atualize o navegador.
Teste a funcionalidade do aplicativo de exemplo adicionando um restaurante e algumas avaliações com fotos. O aplicativo deve ser semelhante à seguinte captura de tela:
Limpar os recursos
Para evitar encargos contínuos, você pode excluir os recursos criados para este tutorial excluindo o grupo de recursos que os contém. Verifique se você não precisa mais do aplicativo ou dos recursos antes de executar o comando.
az group delete --name $RESOURCE_GROUP_NAME --no-wait
A exclusão de todos os recursos pode levar algum tempo. O --no-wait argumento permite que o comando retorne imediatamente.
Solução de problemas
Se você tiver problemas ao executar este tutorial, consulte os seguintes recursos:
- Solucionar problemas em aplicativos Python no Linux para o Serviço de Aplicativo do Azure
- Solicitar suporte