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.
Observação
Neste tutorial, você usará o Conector de Serviço para conectar um aplicativo Web a um serviço de banco de dados. Este tutorial é uma modificação do tutorial do Serviço de Aplicativo, portanto, você pode ver algumas semelhanças. Examine a seção Criar um conector sem senha para o banco de dados Postgres para ver onde o Service Connector entra em jogo e simplifica o processo de conexão fornecido no tutorial do Serviço de Aplicativo.
Este tutorial mostra como implantar um aplicativo Web Python Django baseado em dados para Azure App Service e conectá-lo a um servidor flexível Azure Database for PostgreSQL banco de dados.
Neste tutorial, você usará o Azure CLI para concluir as seguintes tarefas:
- Configurar seu ambiente inicial com Python e o Azure CLI
- Criar um banco de dados em servidor flexível do Azure Database for PostgreSQL
- Implantar código para Azure App Service e conectar-se ao servidor flexível do PostgreSQL
- Atualizar seu código e reimplantar
- Exibir logs de diagnóstico
- Gerenciar o aplicativo Web no portal do Azure
Configurar o seu ambiente inicial
Inicie a partir do Azure Cloud Shell no portal do Azure e instale a extensão para autenticação sem senha do conector de serviço para o Azure CLI.
az extension add --name serviceconnector-passwordless --upgrade
Clonar ou baixar o aplicativo de exemplo
Clonar o repositório de exemplo
git clone https://github.com/Azure-Samples/serviceconnector-webapp-postgresql-django-passwordless.git
Navegue até a seguinte pasta:
cd serviceconnector-webapp-postgresql-django-passwordless
Neste tutorial, você implantará um aplicativo Web Django para Azure App Service. O aplicativo Web usa uma identidade gerenciada atribuída pelo sistema (conexões sem senha) com controle de acesso baseado em função do Azure para acessar recursos do Azure Storage e do Azure Database for PostgreSQL - Servidor Flexível. O código usa a classe DefaultAzureCredential da biblioteca de clientes Azure Identity para Python. A classe DefaultAzureCredential detecta automaticamente que existe uma identidade gerenciada para o Serviço de Aplicativo e a usa para acessar outros recursos Azure.
- As configurações de produção estão no arquivo azuresite/production.py . As configurações de desenvolvimento estão em azuresite/settings.py.
- O aplicativo usa configurações de produção quando a variável de
WEBSITE_HOSTNAMEambiente é definida. Azure App Service define automaticamente essa variável como a URL do aplicativo Web, comomsdocs-django.azurewebsites.net.
Essas configurações de produção são específicas para configurar o Django para execução em qualquer ambiente de produção e não são específicas do Serviço de Aplicativo. 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 do Django no Azure para obter detalhes sobre algumas das alterações.
Está com problemas? Fale conosco.
Criar banco de dados postgres no Azure
Configurar as variáveis de ambiente necessárias para o tutorial.
LOCATION="eastus" 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="{your database password}"Importante
O
ADMIN_PWprecisa conter de 8 a 128 caracteres de três das seguintes categorias: letras maiúsculas em inglês, letras minúsculas em inglês, números e caracteres não alfanuméricos. Ao criar nomes de usuário ou senhas, não use o caractere$. Posteriormente, você cria variáveis de ambiente com esses valores em que o caractere$tem um significado específico dentro do contêiner do Linux usado para executar aplicativos Python.Crie um grupo de recursos (você pode alterar o nome, se desejado). O nome do grupo de recursos é armazenado em cache e aplicado automaticamente aos comandos subsequentes.
az group create --name $RESOURCE_GROUP_NAME --location $LOCATIONCriar o servidor do banco de dados. Se solicitado a habilitar o acesso ao endereço IP do cliente atual, digite
ysim. Esse processo leva alguns minutos: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 --active-directory-auth EnabledSe o comando
aznão for reconhecido, verifique se você tem o Azure CLI instalado conforme descrito em Constale seu ambiente inicial.O comando az postgres flexible-server create executa as seguintes ações, que levam alguns minutos:
- Crie um grupo de recursos padrão, caso ainda não haja um nome armazenado em cache.
- Crie um Servidor Flexível do PostgreSQL:
- Com o nome do servidor especificado com o
--nameparâmetro. O nome deve ser exclusivo em todo o Azure. - Com o SKU especificado pelo parâmetro
--sku-name.
- Com o nome do servidor especificado com o
- Crie uma conta de administrador com um nome de usuário e uma senha especificados pelos parâmetros
--admin-usere--admin-password. - Crie um banco de dados que nome é especificado com o
--database-nameparâmetro.
Configure uma regra de firewall no servidor usando o comando az postgres flexible-server firewall-rule create. Essa regra permite que seu ambiente local acesse o servidor. (Se for solicitado que você habilite o acesso a partir do endereço IP do cliente na etapa anterior, ignore esta etapa.)
IP_ADDRESS=<your IP> 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_ADDRESSUse qualquer ferramenta ou site que mostre seu endereço IP para substituir
<your IP>no comando. Por exemplo, você pode usar o site Qual é o Meu IP?.Crie um banco de dados chamado
restaurantusando 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;'
Implantar o código para Azure App Service
Nesta seção, você criará o host do aplicativo do Serviço de Aplicativo, conectará esse aplicativo ao banco de dados Postgres e implantará o código nesse host.
Criar o aplicativo do Serviço de Aplicativo
No terminal, verifique se você está na pasta do repositório serviceconnector-webapp-postgresql-django-passwordless que contém o código do aplicativo.
Execute o seguinte
az webapp upcomando para criar o host do Serviço de Aplicativo para o aplicativo:az webapp up \ --resource-group $RESOURCE_GROUP_NAME \ --location $LOCATION \ --name $APP_SERVICE_NAME \ --runtime PYTHON:3.9 \ --sku B1O sku define o tamanho (CPU, memória) e o custo do plano de serviço de aplicativo. O plano de serviço B1 (Básico) gera um pequeno custo em sua assinatura de Azure. Para obter uma lista completa dos planos do Serviço de Aplicativo, exiba a página de Preço do Serviço de Aplicativo.
Esse comando executa as seguintes ações, que podem levar alguns minutos, usando o grupo de recursos e o local armazenados em cache do comando anterior
az group create(o grupo$RESOURCE_GROUP_NAMEnaeastusregião neste exemplo).- Crie um plano do Serviço de Aplicativo na camada de preços Básica (B1). Você pode omitir
--skupara usar valores padrão. - Crie o aplicativo do Serviço de Apps.
- Habilite o registro em log padrão para o aplicativo.
- Carregar o repositório usando a implantação ZIP com a automação de compilação habilitada.
- Crie um plano do Serviço de Aplicativo na camada de preços Básica (B1). Você pode omitir
Configure o Serviço de Aplicativo para usar o start.sh no repositório com o comando az webapp config set.
az webapp config set \ --resource-group $RESOURCE_GROUP_NAME \ --name $APP_SERVICE_NAME \ --startup-file "start.sh"
Criar um conector sem senha para o banco de dados Postgres
Com o código agora implantado no Serviço de Aplicativo, a próxima etapa é conectar o aplicativo ao banco de dados Postgres no Azure. O código do aplicativo espera encontrar informações de banco de dados em uma variável de ambiente chamada AZURE_POSTGRESQL_CONNECTIONSTRING para o servidor flexível postgreSQL e uma variável de ambiente chamada AZURE_STORAGEBLOB_RESOURCEENDPOINT para Azure Storage conta.
Os comandos do Conector de Serviço configuram os recursos do Azure Storage e do Azure Database para PostgreSQL para utilizar identidade gerenciada e o controle de acesso baseado em funções do Azure. Os comandos criam configurações no Serviço de Aplicativo que conectam seu aplicativo Web a esses recursos. A saída dos comandos lista as ações do conector de serviço executadas para habilitar o recurso sem senha.
Adicione um conector de serviço PostgreSQL com o comando az webapp connection create postgres-flexible. A identidade gerenciada atribuída pelo sistema é usada para autenticar o aplicativo Web no recurso de destino, PostgreSQL, nesse caso.
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
Observação
Caso veja a mensagem de erro “A assinatura não está registrada para usar o Microsoft.ServiceLinker”, execute az provider register -n Microsoft.ServiceLinker para registrar o provedor de recursos do Conector de Serviço e execute o comando de conexão novamente.
No código Python, você acessa essas configurações como variáveis de ambiente com instruções como os.environ.get('AZURE_POSTGRESQL_HOST'). Para obter mais informações, consulte variáveis de ambiente do Access.
Está com problemas? Veja primeiro o Guia de solução de problemas. Caso contrário, fale conosco.
Criar uma conta de armazenamento e se conectar a ela
- Use o comando az webapp connection create storage-blob para criar uma conta de armazenamento e crie um conector de serviço que faça as seguintes configuraçõ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 à conta de armazenamento recém-criada.
Configure a rede da conta de armazenamento para aceitar o acesso do aplicativo Web.
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 acesso público aos blobs, permitindo que os usuários do aplicativo de restaurante acessem as imagens.
az storage account update \ --name $STORAGE_ACCOUNT_NAME \ --allow-blob-public-accessCrie um contêiner chamado
photosna conta de armazenamento com o comando az storage container create . Permitir o acesso de leitura anônimo (público) a blobs no contêiner recém-criado.# 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
O aplicativo Python de exemplo usa o pacote azure.identity e sua classe DefaultAzureCredential. Quando o aplicativo está em execução no Azure, DefaultAzureCredential detecta automaticamente se existe uma identidade gerenciada para o Serviço de Aplicativo e, nesse caso, usa-a para acessar outros recursos de Azure (armazenamento e PostgreSQL nesse caso). Não há necessidade de fornecer chaves de armazenamento, certificados ou credenciais para o Serviço de Aplicativo para acessar esses recursos.
Navegue até o aplicativo implantado no URL
http://$APP_SERVICE_NAME.azurewebsites.net.Pode levar um ou dois minutos para o aplicativo iniciar. Se você vir uma página de aplicativo padrão que não seja a página de aplicativo de exemplo padrão, aguarde um minuto e atualize o navegador.
Teste a funcionalidade do aplicativo de exemplo adicionando um restaurante e algumas avaliações com fotos do restaurante. As informações de restaurante e revisão são armazenadas em Azure Database for PostgreSQL e as fotos são armazenadas em Azure Storage. Aqui está um exemplo de captura de tela:
Limpar os recursos
Se você quiser manter o aplicativo ou continuar com mais tutoriais, vá para as próximas etapas. Caso contrário, para evitar incorrer em cobranças contínuas, exclua o grupo de recursos criado para este tutorial:
az group delete --name $RESOURCE_GROUP_NAME --no-wait
Ao excluir o grupo de recursos, você também desaloca e exclui todos os recursos contidos nele. Antes de usar o comando, verifique se os recursos contidos no grupo não serão mais necessários.
A exclusão de todos os recursos pode levar algum tempo. O --no-wait argumento permite que o comando retorne imediatamente.
Está com problemas? Fale conosco.