Escolar Documentos
Profissional Documentos
Cultura Documentos
O Azure App Service é um serviço baseado em HTTP para hospedar aplicações web, APIs REST e back
ends móveis. Pode desenvolver no seu idioma favorito, seja .NET, .NET Core, Java, Ruby, Node.js, PHP ou
Python. As aplicações funcionam e escalam com facilidade tanto em ambientes baseados em Windows
como em Linux. Para ambientes baseados em Linux, veja Serviço de Aplicações no Linux.
O Serviço de Aplicações não só adiciona a potência do Microsoft Azure à sua aplicação, como segurança,
equilíbrio de carga, autoscalcificação e gestão automatizada. Também pode tirar partido das suas
capacidades de DevOps, tais como a implantação contínua da Azure DevOps, GitHub, Docker Hub, e
outras fontes, gestão de pacotes, ambientes de encenação, domínio personalizado e certificados TLS/SSL.
Com o Serviço de Aplicações, paga pelos recursos de computação do Azure que utilizar. Os recursos
computacionais que utiliza são determinados pelo plano de Serviço de Aplicações em que executa as
suas aplicações. Para mais informações, consulte a visão geral dos planos do Azure App Service.
Passos seguintes
Crie a sua primeira aplicação Web.
ASP.NET Core
ASP.NET
PHP
Ruby (no Linux)
Node.js
Java
Python (no Linux)
HTML
Introdução ao Serviço de Aplicações do Azure no
Linux
30/04/2020 • 4 minutes to read • Edit Online
O Azure App Service é uma plataforma computacional totalmente gerida que está otimizada para hospedar
websites e aplicações web. Os clientes podem utilizar o Serviço de Aplicações no Linux para alojar aplicações
Web nativamente no Linux para pilhas de aplicações suportadas.
Linguagens
O Serviço de Aplicações no Linux suporta um número de imagens Incorporadas para aumentar a produtividade
do programador. As línguas incluem: Node.js, Java (JRE 8 & JRE 11), PHP, Python, .NET Core e Ruby. Corra
az webapp list-runtimes --linux para ver as últimas línguas e versões suportadas. Se o runtime pedido pela sua
aplicação não for suportado nas imagens incorporadas, existem instruções sobre como criar a sua própria
imagem do Docker para implementar a Aplicação Web para Contentores.
Implementações
FTP
Git Local
GitHub
Bitbucket
DevOps
Ambientes de teste
Azure Container Registry e DockerHub CI/CD
Dimensionamento
Os clientes podem aumentar ou reduzir aplicações Web ao alterar o escalão do respetivo plano do Serviço de
Aplicações
Localizações
Verifique o Dashboard de Estado do Azure.
Limitações
O portal do Azure mostra apenas as funcionalidades que funcionam atualmente para a Aplicação Web para
Contentores. À medida que ativamos mais funcionalidades, estas tornam-se visíveis no portal.
O Serviço de Aplicações no Linux só é suportado com planos de serviço de aplicação Gratuito, Básico, Standard e
Premium e não tem um nível Partilhado. Não é possível criar uma Aplicação Web Linux num plano de Serviço de
Aplicações que já acolhe aplicações web não linux.
Com base numa limitação atual, para o mesmo grupo de recursos não é possível misturar aplicações Windows e
Linux na mesma região.
Resolução de problemas
NOTE
Há uma nova capacidade integrada de exploração madeireira com a Monitorização Azure (pré-visualização) .
Quando a aplicação não consegue iniciar ou pretende verificar o registo da sua aplicação, verifique os registos do
Docker no diretório LogFiles. Pode aceder a este diretório através do seu site SCM ou do FTP. Para registar
stdout stderr o e a partir do seu recipiente, é necessário ativar o registo de registos de aplicações em
registos de serviços de aplicações . A regulação entra em vigor imediatamente. O Serviço de Aplicações deteta a
alteração e reinicia automaticamente o recipiente.
Pode aceder ao site do SCM através das Ferramentas Avançadas no menu Ferramentas de
Desenvolvimento .
Passos seguintes
Os artigos seguintes ajudam-no a começar a utilizar o Serviço de Aplicações no Linux com aplicações Web
escritas em várias linguagens:
.NET Core
PHP
Node.js
Java
Python
Ruby
Ir
Aplicação com vários contentores
Para mais informações sobre o Serviço de Aplicações no Linux, consulte:
FAQ do Serviço de Aplicações para Linux
Suporte SSH para o Serviço de Aplicações no Linux
Configurar ambientes de teste no Serviço de Aplicações
Implementação contínua do Hub do Docker
Pode publicar perguntas e problemas no nosso fórum.
Introdução aos Ambientes de Serviço de Aplicações
30/04/2020 • 9 minutes to read • Edit Online
Descrição geral
O Ambiente de Serviço de Aplicações do Azure é uma funcionalidade do Serviço de Aplicações do Azure que
fornece um ambiente totalmente isolado e dedicado para executar com segurança as aplicações do Serviço de
Aplicações em grande escala. Esta capacidade pode alojar:
Aplicações Web do Windows
Aplicações Web do Linux
Contentores do Docker
Aplicações móveis
Funções
Os ambientes de Serviço de Aplicações (ASEs) são adequados para cargas de trabalho de aplicações que
exigem:
Dimensionamento muito elevado.
Isolamento e acesso a uma rede segura.
Utilização de memória elevada.
Os clientes podem criar vários ASEs numa única região do Azure ou em várias regiões do Azure. Esta
flexibilidade torna os ASEs ideais para dimensionar horizontalmente camadas de aplicações sem monitorização
de estado para suportar cargas de trabalho RPS elevadas.
AsEs acolhe aplicações de apenas um cliente e fazê-lo num dos seus VNets. Os clientes têm um controlo
otimizado sobre o tráfego de rede de aplicações de entrada e saída. As aplicações podem estabelecer ligações
seguras de alta velocidade em VPNs aos recursos da empresa no local.
O ASE vem com o seu próprio escalão de preço. Saiba como a Oferta isolada ajuda a orientar a segurança e
a hiperescala.
Os Ambientes do Serviço de Aplicações v2 fornecem um ambiente para proteger as aplicações numa sub-
rede da sua rede e fornece a sua própria implementação privada do Serviço de Aplicações do Azure.
É possível utilizar múltiplos ASEs para dimensionar horizontalmente. Para obter mais informações, veja
como configurar requisitos de espaço de uma aplicação geodistribuída.
Os ASEs podem ser utilizados para configurar a arquitetura de segurança, conforme apresentado no
AzureCon Deep Dive. Para ver como a arquitetura de segurança apresentada no AzureCon Deep Dive foi
configurada, veja o artigo sobre como implementar uma arquitetura de segurança por camadas com
ambientes de Serviço de Aplicações.
As aplicações em execução em ASEs podem ter o seu acesso protegido por dispositivos a montante, tais
como firewalls de aplicações Web (WAFs). Para obter mais informações, veja Firewall de aplicações Web
(WAF).
Os ambientes de serviço de aplicações podem ser implantados em Zonas de Disponibilidade (AZ) utilizando
a fixação de zona. Consulte o Suporte ambiental do serviço de aplicações para as zonas de disponibilidade
para obter mais detalhes.
Ambiente dedicado
Um ASE é dedicado exclusivamente a uma subscrição individual e pode alojar 100 instâncias do Plano do
Serviço de Aplicações. O intervalo pode abranger de 100 instâncias num único plano do Serviço de Aplicações
até 100 planos do Serviço de Aplicações de instância única, e tudo o que está dentro deste intervalo.
Um ASE é composto por front-ends e trabalhos. Os front-ends são responsáveis pela terminação de
HTTP/HTTPS e pelo balanceamento de carga automático de pedidos de aplicações num ASE. Os front-ends são
adicionados automaticamente à medida que os planos do Serviço de Aplicações no ASE são aumentados
horizontalmente.
Os trabalhos são funções que alojam aplicações de cliente. Os trabalhos estão disponíveis em três tamanhos
fixos:
Uma vCPU/3,5 GB de RAM
Duas vCPU/7 GB de RAM
Quatro vCPU/14 GB de RAM
Os clientes não precisam de gerir os front-ends e os trabalhos. Toda a infraestrutura é automaticamente
adicionada à medida que os clientes aumentam horizontalmente os respetivos planos do Serviço de Aplicações.
À medida que os planos do Serviço de Aplicações são criados ou reduzidos verticalmente num ASE, a
infraestrutura necessária é adicionada ou removida, conforme adequado.
Existe uma tarifa mensal fixa para um ASE que paga a infraestrutura e não muda com base no tamanho do ASE.
Além disso, existe um custo por vCPU do plano do Serviço de Aplicações. Todas as aplicações alojadas num ASE
estão na SKU de preços Isolada. Para obter informações sobre os preços de um ASE, veja a página Preços de
Serviço de Aplicações e consulte as opções disponíveis para ASEs.
Neste arranque rápido, aprenderá a criar e implementar a sua primeira ASP.NET aplicação web Core para o Azure
App Service.
Quando terminar, terá um grupo de recursos Azure composto por um plano de hospedagem do Serviço de
Aplicações e um Serviço de Aplicações com uma aplicação web implementada.
Pré-requisitos
Uma conta Azure com uma subscrição ativa. Crie uma conta gratuitamente.
Este quickstart implementa uma aplicação para o Serviço de Aplicações no Windows. Para implementar um
Serviço de Aplicações no Linux, consulte Criar uma aplicação Web .NET Core no Serviço de Aplicações no
Linux.
Instale o Visual Studio 2019 com a carga de trabalho de ASP.NET e desenvolvimento web.
Se já instalou o Visual Studio 2019:
Instale as últimas atualizações no Estúdio Visual selecionando A Verificação de Ajuda > para
Atualizações .
Adicione a carga de trabalho selecionando ferramentas > obter ferramentas e funcionalidades .
5. A partir do menu do Estúdio Visual, selecione Debug > Star t Without Debugging para executar a sua
aplicação web localmente.
Publique a sua aplicação web
Para publicar a sua aplicação web, primeiro tem de criar e configurar um novo Serviço de Aplicações para o que
pode publicar a sua aplicação.
Como parte da configuração do Serviço de Aplicações, irá criar:
Um novo grupo de recursos para conter todos os recursos do Azure para o serviço.
Um novo Plano de Hospedagem que especifica a localização, tamanho e funcionalidades da quinta do servidor
web que acolhe a sua aplicação.
Siga estes passos para criar o seu Serviço de Aplicações e publique a sua aplicação web:
1. No Solution Explorer, clique à direita no projeto myFirstAzureWebApp e selecione Publish . Se ainda
não se inscreveu na sua conta Azure do Visual Studio, selecione adicionar uma conta ou iniciar sessão .
Também pode criar uma conta Azure gratuita.
2. Na caixa de diálogo de alvo Pick , escolha o Ser viço de Aplicações, selecione Criar Novo e, em seguida,
selecione Criar Perfil .
3. No Serviço de Aplicações: Crie um novo diálogo, forneça um Nome globalmente único para a sua
aplicação, aceitando o nome predefinido ou inserindo um novo nome. Os caracteres a-z válidos são: , A-Z ,
0-9 e - . Este Nome é usado como prefixo URL para http://<app_name>.azurewebsites.net a sua aplicação
web no formato .
4. Para Subscrição , aceite a subscrição listada ou selecione uma nova da lista de drop-down.
5. No grupo Recursos, selecione New . Em novo nome de grupo de recursos, insira o myResourceGroup e
selecione OK .
6. Para plano de hospedagem, selecione New .
7. No Plano de Acolhimento: Criar um novo diálogo, introduza os valores especificados no quadro
seguinte:
Parabéns! A sua aplicação web ASP.NET Core está a funcionar ao vivo no Azure App Service.
<div class="jumbotron">
<h1>ASP.NET in Azure!</h1>
<p class="lead">This is a simple app that we've built that demonstrates how to deploy a .NET app to
Azure App Service.</p>
</div>
3. Para voltar a implementar no Azure, clique com o botão direito do rato no projeto myFirstAzureWebApp ,
no Explorador de Soluções e selecione Publicar .
4. Na página resumo da Publicação, selecione Publicar .
Quando a publicação estiver concluída, o Visual Studio inicia um browser para o URL da aplicação Web.
Limpar recursos
Nos passos anteriores, criou os recursos do Azure num grupo de recursos. Se provavelmente não necessitar
desses recursos no futuro, pode eliminá-los ao eliminar o grupo de recursos.
A partir do menu do portal Azure ou página inicial, selecione Grupos de Recursos, e na página dos grupos
de Recursos, selecione myResourceGroup .
Na página myResourceGroup, certifique-se de que os recursos listados são os que pretende eliminar.
Selecione Eliminar o grupo de recursos, digite o myResourceGroup na caixa de texto para confirmar e, em
seguida, selecione Eliminar .
Passos seguintes
Neste arranque rápido, usou o Visual Studio para criar e implementar uma aplicação web ASP.NET Core para o
Azure App Service.
Avançar para o próximo artigo para aprender a criar uma aplicação .NET Core e conectá-la a uma Base de Dados
SQL:
ASP.NET Core com a Base de Dados SQL
Criar uma aplicação Web ASP.NET Framework no
Azure
01/05/2020 • 8 minutes to read • Edit Online
O Serviço de Aplicações do Azure oferece um serviço de alojamento na Web altamente dimensionável e com
correção automática.
Este quickstart mostra como implementar a sua primeira aplicação web ASP.NET para o Azure App Service.
Quando terminar, terá um plano de Serviço de Aplicações. Você também terá uma app de Serviço de Aplicações
com uma aplicação web implementada.
Se não tiver uma subscrição do Azure,crie uma conta gratuita antes de começar.
Pré-requisitos
Para completar este tutorial, instale o Visual Studio 2019 com a ASP.NET e a carga de trabalho de
desenvolvimento web.
Se já instalou o Visual Studio 2019:
Instale as últimas atualizações no Estúdio Visual selecionando A Verificação de Ajuda > para
Atualizações .
Adicione a carga de trabalho selecionando ferramentas > obter ferramentas e funcionalidades .
6. A partir do menu do Estúdio Visual, selecione Debug > Star t Without Debugging para executar a
aplicação web localmente.
Publique a sua aplicação web
1. No Solution Explorer, clique à direita no projeto myFirstAzureWebApp e selecione Publish .
2. Escolha o Ser viço de Aplicações e selecione Criar o perfil .
3. No Ser viço de Aplicações Criar novas , as suas opções dependem se já está inscrito no Azure e se tem
uma conta visual studio ligada a uma conta Azure. Selecione Adicionar uma conta ou iniciar sessão
para iniciar sessão na subscrição do Azure. Se já assinou, selecione a conta que deseja.
NOTE
Se já tiver sessão iniciada, não selecione ainda Criar .
Um grupo de recursos é um contentor lógico em que os recursos do Azure, como aplicações Web, bases
de dados e contas de armazenamento são implementados e geridos. Por exemplo, pode optar por eliminar
todo o grupo de recursos num único passo simples mais tarde.
4. Para o grupo Recursos, selecione New .
5. Em novo nome de grupo de recursos, insira o myResourceGroup e selecione OK .
Um plano do serviço de aplicações especifica o local, tamanho e funcionalidades da farm de servidores
Web que aloja a aplicação. Pode economizar dinheiro ao alojar várias aplicações, configurando as
aplicações Web para partilhar um único plano do serviço de aplicações.
Os planos do Serviço de Aplicações definem:
Região (por exemplo: Europa do Norte, E.U.A. Leste, Ásia Sudeste)
Tamanho da instância (pequena, média, grande)
Contagem do dimensionamento (1 a 20 instâncias)
SKU (Gratuito, Partilhado, Básico, Standard ou Premium)
6. Para o Plano de Hospedagem, selecione New .
7. No diálogo do Plano de Hospedagem Configurar, introduza os valores a partir da tabela seguinte e, em
seguida, selecione OK .
8. Em Nome, introduza um nome de aplicação A-Z 0-9 único - que inclua apenas os caracteres válidos,
a-z e . Pode aceitar o nome único gerado automaticamente. O URL da aplicação Web é
http://<app-name>.azurewebsites.net , em que <app-name> é o nome da aplicação.
O nome da aplicação especificado no Ser viço de Aplicações Criar nova página é usado como prefixo URL no
formato http://<app-name>.azurewebsites.net .
Parabéns! A sua ASP.NET aplicação web está a funcionar ao vivo no Azure App Service.
<div class="jumbotron">
<h1>ASP.NET in Azure!</h1>
<p class="lead">This is a simple app that we've built that demonstrates how to deploy a .NET app
to Azure App Service.</p>
</div>
3. Para voltar a implementar no Azure, clique com o botão direito do rato no projeto
myFirstAzureWebApp , no Explorador de Soluções e selecione Publicar . Em seguida, selecione
Publicar .
Quando a publicação estiver concluída, o Visual Studio inicia um browser para o URL da aplicação Web.
É apresentada a página de descrição geral da sua aplicação Web. Aqui, pode fazer gestão básica como
navegar, parar, começar, reiniciar e apagar.
O menu à esquerda fornece diferentes páginas para configurar a sua aplicação.
Limpar recursos
Nos passos anteriores, criou os recursos do Azure num grupo de recursos. Se provavelmente não necessitar
desses recursos no futuro, pode eliminá-los ao eliminar o grupo de recursos.
A partir do menu do portal Azure ou página inicial, selecione Grupos de Recursos, e na página dos grupos
de Recursos, selecione myResourceGroup .
Na página myResourceGroup, certifique-se de que os recursos listados são os que pretende eliminar.
Selecione Eliminar o grupo de recursos, digite o myResourceGroup na caixa de texto para confirmar e, em
seguida, selecione Eliminar .
Passos seguintes
ASP.NET com Base de Dados SQL
Criar uma aplicação Web Node.js no Azure
17/06/2020 • 9 minutes to read • Edit Online
Começa com o Azure App Service criando uma aplicação Node.js/Express localmente usando o Código do Estúdio
Visual e, em seguida, implementando a app para a nuvem. Como utiliza um nível de Serviço de Aplicações
gratuito, não tem custos para completar este arranque rápido.
Pré-requisitos
Uma conta Azure com uma subscrição ativa. Crie uma conta gratuita.
Nó.js e npm. Verifique o comando node --version para verificar se o Node.js está instalado.
Visual Studio Code.
A extensão do Serviço de Aplicações Azure para Código de Estúdio Visual.
cd nodejs-docs-hello-world
npm start
4. Abra o seu navegador e navegue para http://localhost:1337 . O navegador deve exibir "Hello World!".
5. Pressione ctrl + C no terminal para parar o servidor.
Dei conta de um problema.
code .
2. Na barra de atividade do Código VS, selecione o logótipo Azure para mostrar o explorador do Ser viço
app AZURE. Selecione Iniciar súm em Azure... e siga as instruções. (Ver resolução de problemas Azure
abaixo se encontrar erros.) Uma vez assinado, o explorador deve mostrar o nome da sua subscrição Azure.
3. No explorador de SERVIÇO DE APLICAÇÃO AZURE do Código VS, selecione o ícone de seta azul para
cima para implementar a sua aplicação para o Azure. (Também pode invocar o mesmo comando a partir da
Paleta de Comando (Ctrl + Shift + P) digitando 'implementar para a web app' e escolhendo o Serviço de
Aplicações Azure: Implementar para a Web App).
e. Clique no nó para o serviço de aplicações mais uma vez e selecione Browse Website .
Dei conta de um problema.
Resolução de problemas Azure sign-in
Se vir o erro "Não é possível encontrar subscrição com nome [ID de subscrição]" ao iniciar sessão no
Azure, pode ser porque está por detrás de um representante e não consegue chegar à API Azure. Configure
HTTP_PROXY HTTPS_PROXY variáveis e ambientais com a sua informação de procuração no seu terminal utilizando
export .
export HTTPS_PROXY=https://username:password@proxy:8080
export HTTP_PROXY=http://username:password@proxy:8080
Se a definição das variáveis ambientais não corrigir o problema, contacte-nos selecionando o I deparar-se com
um botão de problema acima.
Atualizar a aplicação
Pode implementar alterações nesta aplicação, fazendo edições no Código VS, guardando os seus ficheiros e, em
seguida, usando o mesmo processo que antes apenas de escolher a app existente em vez de criar uma nova.
Visualização de registos
Pode visualizar a saída de registo (chamadas console.log para) a partir da aplicação diretamente na janela de
saída do Código VS.
1. No explorador do Ser viço de APLICAÇÕES AZURE, clique com o nó da aplicação e escolha Iniciar
Registos de Streaming.
2. Quando solicitado, opte por ativar a registo e reiniciar a aplicação. Uma vez reiniciada a aplicação, a janela
de saída do Código VS abre-se com uma ligação ao fluxo de registo.
3. Após alguns segundos, a janela de saída mostra uma mensagem indicando que está ligado ao serviço de
streaming de registos. Pode gerar mais atividade de saída refrescando a página no navegador.
Passos seguintes
Parabéns, conseguiste completar esta rapidinha!
Em seguida, confira as outras extensões do Azure.
BD do Cosmos
Funções do Azure
Ferramentas do Docker
Ferramentas Azure CLI
Ferramentas de gestor de recursos Azure
Ou obtenha-os todos instalando o pacote de extensões Node para Azure.
Criar uma aplicação Web PHP no Azure
17/06/2020 • 14 minutes to read • Edit Online
NOTE
Este artigo implementa uma aplicação no Serviço de Aplicações no Windows. Para implementar um Serviço de Aplicações no
Linux, consulte Criar uma aplicação Web PHP no Serviço de Aplicações no Linux.
O Serviço de Aplicações do Azure oferece um serviço de alojamento na Web altamente dimensionável e com
correção automática. Este tutorial de arranque rápido mostra como implementar uma aplicação PHP para o Azure
App Service. Crie a aplicação Web com a CLI do Azure no Cloud Shell e utilize o Git para implementar o código
PHP de exemplo para a aplicação Web.
Pode seguir os passos aqui indicados num computador Mac, Windows ou Linux. Depois de instalados os pré-
requisitos, demora cerca de cinco minutos a concluir todos os passos.
Se não tiver uma subscrição do Azure,crie uma conta gratuita antes de começar.
Pré-requisitos
Para concluir este guia de início rápido:
Instalar o Git
Instalar PHP
php -S localhost:8080
Abra um browser e navegue para a aplicação de exemplo em http://localhost:8080 .
Pode ver a mensagem Olá, mundo! da aplicação de exemplo apresentada na página.
A saída JSON mostra null a palavra-passe como . Se obtiver o erro 'Conflict'. Details: 409 , altere o nome de
utilizador. Se obtiver o 'Bad Request'. Details: 400 erro, utilize uma palavra-passe mais forte.
Grave o seu nome de utilizador e palavra-passe para utilizar para implementar as suas aplicações web.
Geralmente, o grupo de recursos e os recursos são criados numa região perto de si.
Quando o comando for concluído, uma saída JSON mostra as propriedades do grupo de recursos.
Quando o plano do Serviço de Aplicações tiver sido criado, a CLI do Azure mostra informações semelhantes ao
seguinte exemplo:
{
"adminSiteName": null,
"appServicePlanName": "myAppServicePlan",
"geoRegion": "West Europe",
"hostingEnvironmentProfile": null,
"id": "/subscriptions/0000-
0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan",
"kind": "app",
"location": "West Europe",
"maximumNumberOfWorkers": 1,
"name": "myAppServicePlan",
< JSON data removed for brevity. >
"targetWorkerSizeId": 0,
"type": "Microsoft.Web/serverfarms",
"workerTierName": null
}
No exemplo a seguir, substitua <app-name> com um nome de aplicação globalmente exclusivo (os carateres válidos
são a-z , 0-9 e - ). O runtime está definido como PHP|7.0 . Para ver todos os tempos de corrida suportados,
az webapp list-runtimes corra.
# Bash
az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime
"PHP|7.4" --deployment-local-git
# PowerShell
az --% webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime
"PHP|7.4" --deployment-local-git
NOTE
O símbolo de stop-parsing, (--%) introduzido no PowerShell 3.0, direciona a PowerShell a abster-se de interpretar a
entrada como comandos ou expressões PowerShell.
Quando a aplicação Web tiver sido criada, a CLI do Azure mostra informações semelhantes ao seguinte exemplo:
Navegue para a sua aplicação Web recentemente criada. Substitua _ < o nome da aplicação>_ pelo nome único da
aplicação criado no passo anterior.
http://<app name>.azurewebsites.net
Envie para o remoto do Azure para implementar a sua aplicação com o comando seguinte. Quando o Git
Credential Manager lhe pedir credenciais, certifique-se de introduzir as credenciais que criou na Configuração de
um utilizadorde implementação , e não as credenciais que utiliza para iniciar sessão no portal Azure.
Este comando pode demorar alguns minutos a ser executado. Ao executar, apresenta informações semelhantes ao
exemplo seguinte:
Counting objects: 2, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 352 bytes | 0 bytes/s, done.
Total 2 (delta 1), reused 0 (delta 0)
remote: Updating branch 'master'.
remote: Updating submodules.
remote: Preparing deployment for commit id '25f18051e9'.
remote: Generating deployment script.
remote: Running deployment command...
remote: Handling Basic Web Site deployment.
remote: Kudu sync from: '/home/site/repository' to: '/home/site/wwwroot'
remote: Copying file: '.gitignore'
remote: Copying file: 'LICENSE'
remote: Copying file: 'README.md'
remote: Copying file: 'index.php'
remote: Ignoring: .git
remote: Finished successfully.
remote: Running post deployment command(s)...
remote: Deployment successful.
To https://<app-name>.scm.azurewebsites.net/<app-name>.git
cc39b1e..25f1805 master -> master
http://<app-name>.azurewebsites.net
O código PHP de exemplo está em execução numa aplicação Web do serviço de aplicações do Azure.
Na janela terminal local, consolide as suas alterações no Git e envie as alterações ao código para o Azure.
Será exibida a página de visão geral da sua aplicação web. Aqui, pode executar tarefas básicas de gestão
como Navegar, Parar, Reiniciar e Excluir.
O menu de aplicações web fornece diferentes opções para configurar a sua aplicação.
Limpar recursos
Nos passos anteriores, criou os recursos do Azure num grupo de recursos. Se achar que não vai precisar destes
recursos no futuro, execute o seguinte comando no Cloud Shell para eliminar o grupo de recursos:
Passos seguintes
PHP com MySQL
Quickstart: Criar uma aplicação Java no Azure App
Service no Windows
17/06/2020 • 8 minutes to read • Edit Online
NOTE
Este artigo implementa uma aplicação no Serviço de Aplicações no Windows. Para implementar no Serviço de Aplicações em
Linux, consulte a aplicação Web Create Java no Linux.
O Serviço de Aplicações do Azure oferece um serviço de alojamento na Web altamente dimensionável e com
correção automática. Este quickstart mostra como usar o CLI Azure com o Azure Web App Plugin para Maven
implementar um ficheiro java web archive (WAR).
NOTE
O mesmo também pode ser feito usando IDEs populares como IntelliJ e Eclipse. Consulte os nossos documentos
semelhantes no Azure Toolkit para IntelliJ Quickstart ou Azure Toolkit para Eclipse Quickstart.
Se não tiver uma subscrição do Azure,crie uma conta gratuita antes de começar.
cd helloworld
mvn com.microsoft.azure:azure-webapp-maven-plugin:1.9.1:config
NOTE
Neste artigo, estamos a trabalhar apenas com aplicações Java em pacotes de ficheiros WAR. O plug-in também suporta
aplicações Web JAR, visite Implementar um ficheiro JAR do Java SE no Serviço de Aplicações no Linux para experimentar.
Aberto pom.xml para ver a configuração atualizada.
code pom.xml
Pode modificar as configurações do Serviço de Aplicações diretamente no seu ficheiro pom, se necessário,
algumas comuns estão listadas abaixo:
Implementar a aplicação
O processo de implantação para o Azure App Service utiliza credenciais de conta do Azure CLI. Inscreva-se com o
CLI Azure antes de continuar.
az login
Em seguida, pode implementar a sua aplicação Java para Azure utilizando o seguinte comando:
Uma vez concluída a implementação, navegue para a aplicação implementada com o seguinte URL no seu browser,
por exemplo http://<webapp>.azurewebsites.net/ .
Parabéns! Implementou a sua primeira aplicação Java para o Serviço de Aplicações no Windows.
Limpar recursos
Nos passos anteriores, criou os recursos do Azure num grupo de recursos. Se achar que não vai precisar destes
recursos no futuro, execute o seguinte comando no Cloud Shell para eliminar o grupo de recursos:
Passos seguintes
Ligue à base de dados Azure SQL com a Java
Ligue-se ao Azure DB para o MySQL com o Java
Ligue-se ao Azure DB para PostgreSQL com Java
Azure para Java Developers Resources
Mapear domínio personalizado
Saiba mais sobre os plugins maven para Azure
Criar uma aplicação Web HTML estática no Azure
30/04/2020 • 6 minutes to read • Edit Online
O Serviço de Aplicações do Azure oferece um serviço de alojamento na Web altamente dimensionável e com
correção automática. Este quickstart mostra como implementar um site básico HTML+CSS para o Serviço de
Aplicações Azure. Você completará este quickstart em Cloud Shell,mas também pode executar estes comandos
localmente com Azure CLI.
Se não tiver uma subscrição do Azure,crie uma conta gratuita antes de começar.
Transferir o exemplo
No Cloud Shell, crie um diretório de início rápido e, em seguida, altere-o.
mkdir quickstart
cd $HOME/quickstart
Em seguida, execute o seguinte comando para clonar o repositório da aplicação de exemplo para o seu diretório
de início rápido.
cd html-docs-hello-world
{
"app_url": "https://<app_name>.azurewebsites.net",
"location": "westeurope",
"name": "<app_name>",
"os": "Windows",
"resourcegroup": "appsvc_rg_Windows_westeurope",
"serverfarm": "appsvc_asp_Windows_westeurope",
"sku": "FREE",
"src_path": "/home/<username>/quickstart/html-docs-hello-world ",
< JSON data removed for brevity. >
}
Anote o valor resourceGroup . Vai precisar dele na secção limpar recursos.
Guarde as alterações e feche o nano. Utilize o comando ^O para guardar e ^X para sair.
Agora irá implementar novamente a aplicação com o mesmo comando az webapp up .
az webapp up --location westeurope --name <app_name> --html
Depois de concluída a implementação, volte para a janela do browser aberta que abriu no passo Navegar para a
aplicação e atualize a página.
Limpar recursos
Nos passos anteriores, criou os recursos do Azure num grupo de recursos. Se achar que não vai precisar destes
recursos no futuro, execute o seguinte comando no Cloud Shell para eliminar o grupo de recursos. Lembre-se de
que o nome do grupo de recursos foi gerado automaticamente para si no passo criar uma aplicação Web.
O Serviço de Aplicações do Azure disponibiliza pilhas de aplicações predefinidas no Windows, como ASP.NET ou
Node.js, em execução no IIS. O ambiente do Windows reconfigurado bloqueia o sistema operativo a partir de
acesso administrativo, instalações de software, alterações na cache de montagem global, e assim por diante. Para
mais informações, consulte a funcionalidade do sistema operativo no Serviço de Aplicações Azure. Se a sua
aplicação precisar de mais acesso do que aquele que o ambiente pré-configurado permite, pode implementar um
contentor do Windows personalizado.
Este quickstart mostra como implementar uma aplicação ASP.NET, numa imagem do Windows, para Docker Hub
do Visual Studio. Executa a aplicação num contentor personalizado no Serviço de Aplicações Azure.
Pré-requisitos
Para concluir este tutorial:
Inscrever numa conta do Docker Hub
Instale o Docker para Windows.
Mude o Docker para executar contentores do Windows.
Instale o Visual Studio 2019 com o ASP.NET e desenvolvimento web e cargas de trabalho de
desenvolvimento azure. Se já instalou o Visual Studio 2019:
Instale as últimas atualizações no Estúdio Visual selecionando A Verificação de Ajuda > para
Atualizações .
Adicione as cargas de trabalho no Estúdio Visual selecionando Ferramentas > Get Tools e Recursos .
8. A partir do menu do Estúdio Visual, selecione Debug > Star t Without Debugging para executar a
aplicação web localmente.
6. Para Fonte de Imagem , escolha Docker Hub e para Imagem e etiqueta, introduza o nome de repositório
copiado em Publish to Docker Hub.
Se tiver uma imagem personalizada noutra localização para a sua aplicação Web, como no Azure Container
Registry ou noutro repositório privado, pode configurá-la aí.
7. Selecione Rever e Criar e, em seguida, Criar e esperar que o Azure crie os recursos necessários.
Parabéns! Está a executar o seu primeiro contentor do Windows personalizado no Serviço de Aplicações do
Azure.
https://<app_name>.scm.azurewebsites.net/api/logstream
<div class="jumbotron">
<h1>ASP.NET in Azure!</h1>
<p class="lead">This is a simple app that we've built that demonstrates how to deploy a .NET app to
Azure App Service.</p>
</div>
3. Para reimplantar para o Azure, clique à direita no projeto myFirstAzureWebApp no Solution Explorer e
escolha Publicar .
4. Na página de publicação, selecione Publicar e aguarde até a publicação estar concluída.
5. Para dizer ao Serviço de Aplicações para obter a nova imagem do Hub do Docker, reinicie a aplicação. De
volta à página da aplicação no portal, clique em Reiniciar > Sim .
Navegue novamente para a aplicação de contentor. Quando atualiza a página Web, primeiro, a aplicação deve
reverter para a página "A Iniciar" e, em seguida, volta a apresentar a página Web atualizada ao fim de alguns
minutos.
Utilizar uma imagem principal diferente
Você é livre de usar uma imagem personalizada do Docker diferente para executar a sua aplicação. No entanto,
deve escolher a imagem dos pais (imagem base) certa para o quadro que deseja:
Para implementar aplicações .NET Framework, utilize uma imagem dos pais com base na versão do Canal de
Manutenção de Longo Prazo (LTSC) do Windows Server Core 2019.
Para implementar aplicações .NET Core, utilize uma imagem dos pais com base na versão do Canal de
Assistência Semi-Anual (SAC) do Windows Server Nano 1809.
O carregamento das imagens principais durante o arranque da aplicação demora algum tempo. No entanto, pode
utilizar uma das seguintes imagens principais que já estão em cache no Serviço de Aplicações do Azure para
reduzir o tempo de arranque:
mcr.microsoft.com/dotnet/framework/aspnet:4.7.2 windowsservercore-ltsc2019
mcr.microsoft.com/windows/nanoserver:1809 - esta imagem é o recipiente base utilizado em imagens do
Microsoft ASP.NET Core Microsoft Windows Nano Server.
Passos seguintes
Migrar para o contentor do Windows no Azure
Tutorial: Construir uma aplicação de base de dados
core e SQL de ASP.NET no Azure App Service
17/06/2020 • 26 minutes to read • Edit Online
NOTE
Este artigo implementa uma aplicação no Serviço de Aplicações no Windows. Para implementar no Serviço de Aplicações
em Linux, consulte construir uma aplicação de base de dados .NET Core e SQL em Azure App Service no Linux.
O Serviço de Aplicações oferece um serviço de alojamento na Web altamente dimensionável e com correção
automática no Azure. Este tutorial mostra como criar uma aplicação .NET Core e conectá-la à Base de Dados SQL.
Quando terminar, terá uma aplicação de MVC .NET Core em execução no Serviço de Aplicações.
Pré-requisitos
Para concluir este tutorial:
Instalar o Git
Instale o mais recente .NET Core 3.1 SDK
Criar uma aplicação .NET Core local
Neste passo, vai configurar o projeto .NET Core local.
Clonar a aplicação de exemplo
Na janela de terminal, cd num diretório de trabalho.
Execute os seguintes comandos para clonar o repositório de exemplo e alterar para a respetiva raiz.
O projeto de exemplo contém uma aplicação CRUD (create-read-update-delete) básica com o Entity Framework
Core.
Executar a aplicação
Execute os seguintes comandos para instalar os pacotes necessários, executar migrações de base de dados e
iniciar a aplicação.
Navegue para http://localhost:5000 num browser. Selecione a ligação Criar Novo e criar alguns itens a fazer.
Geralmente, o grupo de recursos e os recursos são criados numa região perto de si.
Quando o comando for concluído, uma saída JSON mostra as propriedades do grupo de recursos.
Criar um servidor na Base de Dados Azure SQL
Na Cloud Shell, crie um servidor na Base de Dados Azure SQL com o az sql server create comando. Um
servidor é uma construção lógica que contém um grupo de bases de dados geridas como um grupo.
Substitua o <server-name> espaço reservado por um nome único. Este nome é usado como parte do ponto final
globalmente único SQL Database, <server-name>.database.windows.net . Os caracteres válidos a - z 0 - 9
são, . - . . Além disso, substitua <db-username> e por um nome de utilizador e senha à sua <db-password>
escolha.
az sql server create --name <server-name> --resource-group myResourceGroup --location "West Europe" --admin-
user <db-username> --admin-password <db-password>
Quando o servidor é criado, o Azure CLI mostra informações semelhantes ao seguinte exemplo:
{
"administratorLogin": "<db-username>",
"administratorLoginPassword": null,
"fullyQualifiedDomainName": "<server-name>.database.windows.net",
"id": "/subscriptions/00000000-0000-0000-0000-
000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Sql/servers/<server-name>",
"identity": null,
"kind": "v12.0",
"location": "westeurope",
"name": "<server-name>",
"resourceGroup": "myResourceGroup",
"state": "Ready",
"tags": null,
"type": "Microsoft.Sql/servers",
"version": "12.0"
}
TIP
Pode ser ainda mais restritivo na sua regra de firewall ao utilizar apenas os endereços IP de saída que a aplicação utiliza.
Na Cloud Shell, volte a executar o comando para permitir o acesso a partir do seu computador local, substituindo
<your-ip-address> o seu endereço IP IPv4 local.
services.AddDbContext<MyDatabaseContext>(options =>
options.UseSqlite("Data Source=localdatabase.db"));
services.AddDbContext<MyDatabaseContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MyDbConnection")));
IMPORTANT
Para aplicações de produção que precisam de escalar, siga as melhores práticas na aplicação de migrações na produção.
# Run migrations
dotnet ef database update
dotnet run
Navegue para http://localhost:5000 num browser. Selecione a ligação Criar Novo e criar alguns itens a fazer. A
sua aplicação está agora a ler e a escrever dados para a base de dados de produção.
Cometa as suas mudanças locais e, em seguida, comprometa-a no seu repositório git.
git add .
git commit -m "connect to SQLDB in Azure"
Está pronto para implementar o seu código.
A saída JSON mostra null a palavra-passe como . Se obtiver o erro 'Conflict'. Details: 409 , altere o nome de
utilizador. Se obtiver o 'Bad Request'. Details: 400 erro, utilize uma palavra-passe mais forte.
Grave o seu nome de utilizador e palavra-passe para utilizar para implementar as suas aplicações web.
Crie um plano do Serviço de Aplicações
Na Cloud Shell, crie um az appservice plan create plano de Serviço de Aplicações com o comando.
O exemplo seguinte cria um plano do Serviço de Aplicações com o nome myAppServicePlan , que utiliza o escalão
de preços Gratuito .
Quando o plano do Serviço de Aplicações tiver sido criado, a CLI do Azure mostra informações semelhantes ao
seguinte exemplo:
{
"adminSiteName": null,
"appServicePlanName": "myAppServicePlan",
"geoRegion": "West Europe",
"hostingEnvironmentProfile": null,
"id": "/subscriptions/0000-
0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan",
"kind": "app",
"location": "West Europe",
"maximumNumberOfWorkers": 1,
"name": "myAppServicePlan",
< JSON data removed for brevity. >
"targetWorkerSizeId": 0,
"type": "Microsoft.Web/serverfarms",
"workerTierName": null
}
Criar uma aplicação Web
Crie uma aplicação web no plano de myAppServicePlan Serviço de Aplicações.
Na Cloud Shell, podes az webapp create usar o comando. No exemplo a seguir, substitua <app-name> com um
nome de aplicação globalmente exclusivo (os carateres válidos são a-z , 0-9 e - ).
Quando a aplicação Web tiver sido criada, a CLI do Azure mostra informações semelhantes ao seguinte exemplo:
NOTE
O URL do Git remoto é apresentado na propriedade deploymentLocalGitUrl , com o formato
https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git . Guarde este URL, uma vez que vai precisar
dele mais tarde.
Em ASP.NET Core, pode utilizar esta cadeia de conexão denominada ( MyDbConnection ) utilizando o padrão
padrão, como qualquer cadeia de conexão especificada em appsettings.json. Neste caso, MyDbConnection também
é definido no seu appsettings.json. Ao executar no Serviço de Aplicações, a cadeia de ligação definida no Serviço
de Aplicações tem precedência sobre a cadeia de ligação definida nas suas appsettings.json. O código utiliza o
valor appsettings.json durante o desenvolvimento local, e o mesmo código utiliza o valor do Serviço de
Aplicações quando implementado.
Para ver como a cadeia de ligação é referenciada no seu código, consulte a aplicação Configure para ligar à base
de dados de produção.
Enviar para o Azure a partir do Git
Regresse à janela de terminal local e adicione um remoto do Azure ao seu repositório Git local. Substitua * <a
implementaçãoLocalGitUrl-from-create-step>* com o URL do comando Git que guardou de Criar uma aplicação
web.
Envie para o remoto do Azure para implementar a sua aplicação com o comando seguinte. Quando o Git
Credential Manager lhe pedir credenciais, certifique-se de introduzir as credenciais que criou na Configuração de
um utilizadorde implementação , e não as credenciais que utiliza para iniciar sessão no portal Azure.
Este comando pode demorar alguns minutos a ser executado. Ao executar, apresenta informações semelhantes ao
exemplo seguinte:
http://<app-name>.azurewebsites.net
Abra Views\Todos\Create.cshtml.
No código Razor, deverá ver um elemento <div class="form-group"> para Description e outro elemento
<div class="form-group"> para CreatedDate . Imediatamente a seguir a estes dois elementos, adicione outro
elemento <div class="form-group"> para Done :
<div class="form-group">
<label asp-for="Done" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="Done" class="form-control" />
<span asp-validation-for="Done" class="text-danger"></span>
</div>
</div>
Abra Views\Todos\Index.cshtml.
Procure o elemento <th></th> vazio. Imediatamente acima deste elemento, adicione o seguinte código Razor:
<th>
@Html.DisplayNameFor(model => model.Done)
</th>
Localize o elemento <td> que contém os programas auxiliares da etiqueta asp-action . Imediatamente acima
deste elemento, adicione o seguinte código Razor:
<td>
@Html.DisplayFor(modelItem => item.Done)
</td>
É tudo o que precisa para ver as alterações nas vistas Index e Create .
Testar as alterações localmente
Execute a aplicação localmente.
dotnet run
No seu browser, navegue até http://localhost:5000/ . Agora, pode adicionar um item a fazer e marcar
Concluído . Em seguida, deve ser apresentado na sua home page como um item concluído. Lembre-se de que a
vista Edit não apresenta o campo Done , porque a vista Edit não foi alterada.
Publicar alterações no Azure
git add .
git commit -m "added done field"
git push azure master
Uma vez git push concluída, navegue na sua aplicação De Serviço de Aplicações e tente adicionar um item a
fazer e verifique 'Feito'.
Todos os itens a fazer existentes continuam a ser apresentados. Quando republicar a sua aplicação Core ASP.NET,
os dados existentes na base de dados SQL não se perdem. Além disso, as Migrações do Entity Framework Core
apenas alteram o esquema de dados e mantêm os dados existentes intactos.
az webapp log config --name <app-name> --resource-group myResourceGroup --application-logging true --level
information
NOTE
O nível de registo do projeto já está definido para Information appsettings.json.
Para iniciar o streaming de registos, utilize o az webapp log tail comando na Cloud Shell.
Uma vez iniciado o streaming de registos, refresque a app Azure no navegador para obter algum tráfego web.
Verá então os registos da consola direcionados para o terminal. Se não vir os registos da consola imediatamente,
volte a consultar dentro de 30 segundos.
Para parar o streaming de registo a qualquer momento, escreva Ctrl + C .
Para obter mais informações sobre a personalização dos registos do Núcleo de ASP.NET, consulte iniciar sessão no
ASP.NET Core.
Limpar recursos
Nos passos anteriores, criou os recursos do Azure num grupo de recursos. Se achar que não vai precisar destes
recursos no futuro, execute o seguinte comando no Cloud Shell para eliminar o grupo de recursos:
az group delete --name myResourceGroup
Passos seguintes
O que aprendeu:
Criar uma base de dados na Base de Dados Azure SQL
Ligar uma aplicação .NET Core à Base de Dados SQL
Implementar a aplicação no Azure
Atualizar o modelo de dados e voltar a implementar a aplicação
Transmitir os registos do Azure para o seu terminal
Gerir a aplicação no portal do Azure
Avance para o próximo tutorial para aprender a mapear um nome DNS personalizado para a sua aplicação.
Tutorial: Mapeie o nome DNS personalizado para a sua aplicação
Tutorial: Implemente uma app ASP.NET para O
Azure com base de dados Azure SQL
17/06/2020 • 24 minutes to read • Edit Online
O Serviço de Aplicações do Azure oferece um serviço de alojamento na Web altamente dimensionável e com
correção automática. Este tutorial mostra-lhe como implementar uma aplicação de ASP.NET baseada em dados no
Serviço de Aplicações e conectá-la à Base de Dados Azure SQL. Quando terminar, tem uma aplicação ASP.NET em
funcionamento em Azure e ligada à Base de Dados SQL.
Pré-requisitos
Para concluir este tutorial:
Instale o Visual Studio 2019 com a carga de trabalho de ASP.NET e desenvolvimento web.
Se já instalou o Estúdio Visual, adicione as cargas Tools de trabalho no Estúdio Visual clicando em >
Ferramentas Get Tools e Recursos .
Transferir o exemplo
Transfira o projeto de exemplo.
Extrato (unzip) o ficheiro dotnet-sqldb-tutorial-master.zip.
O projeto de exemplo contém uma aplicação básica ASP.NET MVC create-read-update-delete - criar-ler-atualizar-
eliminar (CRUD) que utiliza o Entity Framework Code First.
Executar a aplicação
Abra o ficheiro dotnet-sqldb-tutorial-master/DotNetAppSqlDb.sln no Visual Studio.
Escreva Ctrl+F5 para executar a aplicação sem a depurar. A aplicação é apresentada no browser predefinido.
Selecione a ligação Criar Novo e criar alguns itens a fazer.
A publicação abre o diálogo Create App Ser vice, que o ajuda a criar todos os recursos Azure que precisa para
executar a sua app ASP.NET em Azure.
Iniciar sessão no Azure
Na caixa de diálogo Criar Ser viço de Aplicações , clique em Adicionar uma conta e inicie sessão na sua
subscrição do Azure. Se já tiver sessão iniciada numa conta Microsoft, confirme que esta inclui a sua subscrição do
Azure. Se a subscrição do Azure não estiver na conta Microsoft em que tem sessão iniciada, clique nesta para
adicionar a conta correta.
NOTE
Se já tiver sessão iniciada, não selecione ainda Criar .
Configurar o nome da aplicação Web
Pode manter o nome da aplicação Web gerado ou alterá-lo para outro nome exclusivo (os carateres válidos são
a-z , 0-9 e - ). O nome da aplicação Web é utilizado como parte do URL predefinido da sua aplicação (
<app_name>.azurewebsites.net , onde <app_name> é o nome da aplicação Web). O nome da aplicação Web tem de
ser exclusivo em todas as aplicações no Azure.
Criar um grupo de recursos
Um grupo de recursos é um contentor lógico em que os recursos do Azure, como aplicações Web, bases de dados
e contas de armazenamento são implementados e geridos. Por exemplo, pode optar por eliminar todo o grupo de
recursos num único passo simples mais tarde.
1. Junto a Grupo de recursos , clique em Novo .
2. Dê o nome myResourceGroup ao grupo de recursos.
Crie um plano do Serviço de Aplicações
Um plano do serviço de aplicações especifica o local, tamanho e funcionalidades da farm de servidores Web que
aloja a aplicação. Pode economizar dinheiro ao alojar várias aplicações, configurando as aplicações Web para
partilhar um único plano do serviço de aplicações.
Os planos do Serviço de Aplicações definem:
Região (por exemplo: Europa do Norte, E.U.A. Leste, Ásia Sudeste)
Tamanho da instância (pequena, média, grande)
Contagem do dimensionamento (1 a 20 instâncias)
SKU (Gratuito, Partilhado, Básico, Standard ou Premium)
1. Junto a Plano do Ser viço de Aplicações , clique em Novo .
2. Na caixa de diálogo Configurar o Plano do Ser viço de Aplicações , configure o plano novo com as
definições seguintes:
DEF IN IÇ Ã O VA LO R SUGERIDO PA RA O BT ER M A IS IN F O RM A Ç Õ ES:
Criar um servidor
Antes de criar uma base de dados, precisa de um servidor SQL lógico. Um servidor lógico SQL é uma construção
lógica que contém um grupo de bases de dados geridas como um grupo.
1. Clique em Criar uma Base de Dados SQL .
2. Na caixa de diálogo Configurar Base de Dados SQL , clique em Nova junto a SQL Ser ver .
É gerado um nome de servidor exclusivo. Este nome é usado como parte do URL predefinido para o seu
servidor, <server_name>.database.windows.net . Deve ser único em todos os servidores do Azure SQL. Pode
alterar o nome do servidor, mas, para este tutorial, mantenha o valor gerado.
3. Adicione um nome de utilizador e uma palavra-passe de administrador. Para saber os requisitos de
complexidade das palavras-passe, veja Password Policy (Política de Palavras-passe).
Memorize o nome de utilizador e a palavra-passe. Precisas deles para gerir o servidor mais tarde.
IMPORTANT
Embora a palavra-passe nas cadeias de ligação esteja ocultada (no Visual Studio e também no Serviço de
Aplicações), o facto de ser mantida algures aumenta a superfície de ataque da sua aplicação. O Serviço de Aplicações
pode utilizar identidades de serviço geridas para eliminar este risco ao remover a necessidade de manter segredos
na configuração do código ou da aplicação. Para obter mais informações, veja Passos seguintes.
4. Clique em OK . Não feche já a caixa de diálogo Configurar Base de Dados SQL .
Criar uma base de dados na Base de Dados Azure SQL
1. Na caixa de diálogo Configurar Base de Dados SQL :
Mantenha o Nome da Base de Dados predefinido gerado.
Em Nome da Cadeia de Ligação , escreva MyDbConnection. Este nome tem de corresponder à cadeia
de ligação que é referenciada em Models/MyDatabaseContext.cs.
Selecione OK .
2. A caixa de diálogo Criar Ser viço de Aplicações mostra os recursos que configurou. Clique em Criar .
Quando o assistente concluir a criação dos recursos do Azure, publica a aplicação ASP.NET no Azure. O seu
browser é iniciado com o URL para a aplicação implementada.
Adicione alguns itens a fazer.
Parabéns! A aplicação ASP.NET condicionada por dados está em execução no Serviço de Aplicações do Azure.
Quando o Visual Studio concluir a criação da definição de firewall para a sua instância da Base de Dados SQL, a
ligação aparece em SQL Ser ver Object Explorer .
Aqui, pode realizar as operações mais comuns de bases de dados, como executar consultas, criar vistas e
procedimentos armazenados, entre outras.
Expandir a sua ligação > Bases de dados a sua base de dados > ** <>** > Tabelas . Clique com o botão direito
do rato na tabela Todoes e selecione Ver Dados .
Add-Migration AddProperty
Update-Database
Escreva Ctrl+F5 para executar a aplicação. Teste as ligações Editar, Detalhes e Criar.
Se a aplicação for carregada sem erros, as Migrações First Code foram bem-sucedidas. No entanto, a página
continua igual, porque a lógica da aplicação ainda não está a utilizar esta propriedade.
Utilizar a nova propriedade
Faça algumas alterações no seu código para utilizar a propriedade Done . Para simplificar, neste tutorial, apenas vai
alterar as vistas Index e Create para ver a propriedade em ação.
Abra Controllers\TodosController.cs.
Localize o método Create() na linha 52 e adicione Done à lista de propriedades no atributo Bind . Quando
terminar, a assinatura do método Create() é semelhante ao seguinte código:
Abra Views\Todos\Create.cshtml.
No código Razor, deverá ver um elemento <div class="form-group"> que utiliza model.Description e outro
elemento <div class="form-group"> que utiliza model.CreatedDate . Imediatamente a seguir a estes dois
elementos, adicione outro elemento <div class="form-group"> que utilize model.Done :
<div class="form-group">
@Html.LabelFor(model => model.Done, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<div class="checkbox">
@Html.EditorFor(model => model.Done)
@Html.ValidationMessageFor(model => model.Done, "", new { @class = "text-danger" })
</div>
</div>
</div>
Abra Views\Todos\Index.cshtml.
Procure o elemento <th></th> vazio. Imediatamente acima deste elemento, adicione o seguinte código Razor:
<th>
@Html.DisplayNameFor(model => model.Done)
</th>
Localize o elemento <td> que contém os métodos do programa auxiliar Html.ActionLink() . Acima deste
elemento <td> , adicione outro elemento <td> com o código Razor seguinte:
<td>
@Html.DisplayFor(modelItem => item.Done)
</td>
É tudo o que precisa para ver as alterações nas vistas Index e Create .
Escreva Ctrl+F5 para executar a aplicação.
Agora, pode adicionar um item a fazer e marcar Concluído . Em seguida, deve ser apresentado na sua home page
como um item concluído. Lembre-se de que a vista Edit não apresenta o campo Done , porque a vista Edit não
foi alterada.
Ativar Migrações First Code no Azure
Agora que a mudança de código funciona, incluindo a migração da base de dados, publica-a na sua aplicação
Azure e atualiza também a sua Base de Dados SQL com código first migrations.
Tal como anteriormente, clique com o botão direito do rato no projeto e selecione Publicar .
Clique em Configurar para abrir as definições de publicação.
Todos os itens a fazer existentes continuam a ser apresentados. Quando voltar a publicar a aplicação ASP.NET, os
dados existentes na Base de Dados SQL não são perdidos. Além disso, as Migrações Code First apenas alteram o
esquema de dados e mantêm os dados existentes intactos.
No entanto, ainda não vai ver nenhuma das mensagens de rastreio. Isto porque, quando seleciona pela primeira
vez os Registos de Streaming de Visualização, a sua aplicação Azure define o nível de rastreio Error para , que
apenas regista eventos de erro (com o Trace.TraceError() método).
Alterar os níveis de rastreio
Para alterar os níveis de rastreio para produzir outras mensagens de rastreio, regresse ao Explorador de
Ser vidores .
Clique novamente na sua aplicação Azure e selecione 'Ver Definições' .
No menu pendente Registo da Aplicação (Sistema de Ficheiros) , selecione Verboso . Clique em Guardar .
TIP
Pode experimentar diferentes níveis de rastreio para ver os tipos de mensagens que são apresentadas para cada nível. Por
exemplo, o nível de Informação inclui todos os registos criados por Trace.TraceInformation() , e , mas não
Trace.TraceWarning() Trace.TraceError() registos criados por Trace.WriteLine() .
No seu navegador, volte a navegar para a sua aplicação em http:// o seu nome de * <
aplicação>.azurewebsites.net,* tente clicar em torno da aplicação de lista a fazer em Azure. As mensagens de
rastreio são agora transmitidas em fluxo para a janela Saída no Visual Studio.
Passos seguintes
Neste tutorial, ficou a saber como:
Criar uma base de dados na Base de Dados Azure SQL
Ligar uma aplicação ASP.NET à Base de Dados SQL
Implementar a aplicação no Azure
Atualizar o modelo de dados e voltar a implementar a aplicação
Transmitir os registos do Azure para o seu terminal
Gerir a aplicação no portal do Azure
Avance para o tutorial seguinte para saber como melhorar facilmente a segurança da sua ligação à Base de Dados
SQL do Azure.
Aceder à Base de Dados SQL em segurança com identidades geridas dos recursos do Azure
Tutorial: Construa uma app PHP e MySQL em Azure
30/04/2020 • 34 minutes to read • Edit Online
NOTE
Este artigo implementa uma aplicação no Serviço de Aplicações no Windows. Para se implementar no Serviço de Aplicações
no Linux, consulte Construir uma aplicação PHP e MySQL no Azure App Service no Linux.
O Serviço de Aplicações do Azure oferece um serviço de alojamento na Web altamente dimensionável e com
correção automática. Este tutorial mostra como criar uma aplicação PHP em Azure e conectá-la a uma base de
dados MySQL. Quando terminar, terá uma aplicação Laravel em funcionamento no Azure App Service.
mysql -u root -p
Se lhe for pedida uma palavra-passe, introduza a palavra-passe da conta root . Se não se lembrar da sua palavra-
passe da conta de raiz, veja MySQL: Como Repor a Palavra-passe de Raiz.
Se o comando for executado com êxito, significa que o servidor MySQL está em execução. Se não, siga os passos
de pós-instalação do MySQL para verificar se o servidor MySQL local é iniciado.
Criar uma base de dados localmente
No comando mysql , crie uma base de dados.
quit
cd laravel-tasks
composer install
Configurar a ligação ao MySQL
Na raiz do repositório, crie um ficheiro de texto com o nome .env. Copie as variáveis seguintes para o ficheiro .env.
Substitua _ <_ a root_password>espaço reservado pela palavra-passe do utilizador raiz MySQL.
APP_ENV=local
APP_DEBUG=true
APP_KEY=
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_DATABASE=sampledb
DB_USERNAME=root
DB_PASSWORD=<root_password>
Para obter informações sobre como o Laravel utiliza o ficheiro .env, veja Configuração do Ambiente do Laravel.
Executar o exemplo localmente
Execute migrações de bases de dados Laravel para criar as tabelas de que a aplicação precisa. Para ver que tabelas
são criadas nas migrações, veja o diretório database/migrations no repositório Git.
Execute a aplicação.
Geralmente, o grupo de recursos e os recursos são criados numa região perto de si.
Quando o comando for concluído, uma saída JSON mostra as propriedades do grupo de recursos.
Criar um servidor MySQL
Na Cloud Shell, crie um servidor na Base de az mysql server create Dados Azure para mySQL com o comando.
No comando seguinte, substitua um * <* nome de servidor único para o mysql_server_name>espaço reservado,
um nome de utilizador para o * <admin_user>, e uma palavra-passe para o * <admin_password> espaço
reservado. O nome do servidor é utilizado como parte do ponto final do MySQL (
https://<mysql_server_name>.mysql.database.azure.com ), por isso, o nome tem de ser exclusivo em todos os
servidores no Azure.
az mysql server create --resource-group myResourceGroup --name <mysql_server_name> --location "West Europe" --
admin-user <admin_user> --admin-password <admin_password> --sku-name B_Gen5_1
NOTE
Uma vez que existem várias credenciais a considerar neste tutorial, para evitar confusões, --admin-user e
--admin-password estão definidos para valores fictícios. Num ambiente de produção, siga as melhores práticas de
segurança ao escolher um bom nome de utilizador e palavra-passe para o servidor MySQL no Azure.
Quando o servidor MySQL tiver sido criado, a CLI do Azure mostra informações semelhantes às do exemplo
abaixo:
{
"location": "westeurope",
"name": "<mysql_server_name>",
"resourceGroup": "myResourceGroup",
"sku": {
"additionalProperties": {},
"capacity": 1,
"family": "Gen5",
"name": "B_Gen5_1",
"size": null,
"tier": "GeneralPurpose"
},
"sslEnforcement": "Enabled",
... +
- < Output has been truncated for readability >
}
TIP
Pode ser ainda mais restritivo na sua regra de firewall ao utilizar apenas os endereços IP de saída que a aplicação utiliza.
Na Cloud Shell, volte a executar o comando para * <* permitir o acesso ao seu computador local, substituindo
your_ip_address>pelo seu endereço IP IPv4 local.
quit
APP_ENV=production
APP_DEBUG=true
APP_KEY=
DB_CONNECTION=mysql
DB_HOST=<mysql_server_name>.mysql.database.azure.com
DB_DATABASE=sampledb
DB_USERNAME=phpappuser@<mysql_server_name>
DB_PASSWORD=MySQLAzure2017
MYSQL_SSL=true
Guarde as alterações.
TIP
Para proteger as informações da ligação do MySQL, este ficheiro já está excluído do repositório Git (veja .gitignore na raiz do
repositório). Mais tarde, vai aprender a configurar variáveis de ambiente no Serviço de Aplicações para ligar à base de dados
na Base de Dados do Azure para MySQL. Com as variáveis de ambiente, não precisa do ficheiro .env no Serviço de
Aplicações.
'mysql' => [
...
'sslmode' => env('DB_SSLMODE', 'prefer'),
'options' => (env('MYSQL_SSL')) ? [
PDO::MYSQL_ATTR_SSL_KEY => '/ssl/BaltimoreCyberTrustRoot.crt.pem',
] : []
],
.env.production ainda não tem uma chave de aplicação válida. Gere uma nova no terminal.
Navegue para http://localhost:8000 . Se a página for carregada sem erros, a aplicação PHP está a ligar-se à base
de dados MySQL no Azure.
Adicione algumas tarefas à página.
Implementar no Azure
Neste passo, vai implementar a aplicação PHP ligada ao MySQL no Serviço de Aplicações do Azure.
Configurar um utilizador de implementação
FtP e Git local podem implantar-se numa aplicação web Azure utilizando um utilizador de implementação. Assim
que configurar o utilizador de implementação, pode utilizá-lo para todas as suas implementações Azure. O seu
nome de utilizador de implementação de nível de conta e palavra-passe são diferentes das credenciais de
subscrição do Azure.
Para configurar o utilizador de implementação, execute o comando de conjunto de utilizadores de implementação
de webapp az em Azure Cloud Shell. Substitua <o <nome de utilizador> e a palavra-passe> por um nome de
utilizador e palavra-passe de implementação.
O nome de utilizador deve ser único dentro do Azure e, para os pushs git locais, não deve conter o símbolo '@'.
A palavra-passe deve ter pelo menos oito caracteres de comprimento, com dois dos seguintes três elementos:
letras, números e símbolos.
A saída JSON mostra null a palavra-passe como . Se obtiver o erro 'Conflict'. Details: 409 , altere o nome de
utilizador. Se obtiver o 'Bad Request'. Details: 400 erro, utilize uma palavra-passe mais forte.
Grave o seu nome de utilizador e palavra-passe para utilizar para implementar as suas aplicações web.
Crie um plano do Serviço de Aplicações
Na Cloud Shell, crie um az appservice plan create plano de Serviço de Aplicações com o comando.
O exemplo seguinte cria um plano do Serviço de Aplicações com o nome myAppServicePlan , que utiliza o escalão
de preços Gratuito .
Quando o plano do Serviço de Aplicações tiver sido criado, a CLI do Azure mostra informações semelhantes ao
seguinte exemplo:
{
"adminSiteName": null,
"appServicePlanName": "myAppServicePlan",
"geoRegion": "West Europe",
"hostingEnvironmentProfile": null,
"id": "/subscriptions/0000-
0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan",
"kind": "app",
"location": "West Europe",
"maximumNumberOfWorkers": 1,
"name": "myAppServicePlan",
< JSON data removed for brevity. >
"targetWorkerSizeId": 0,
"type": "Microsoft.Web/serverfarms",
"workerTierName": null
}
# Bash
az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime
"PHP|7.3" --deployment-local-git
# PowerShell
az --% webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime
"PHP|7.3" --deployment-local-git
Quando a aplicação Web tiver sido criada, a CLI do Azure mostra informações semelhantes ao seguinte exemplo:
Criou uma nova aplicação Web vazia, com a implementação de git ativada.
NOTE
O URL do Git remoto é apresentado na propriedade deploymentLocalGitUrl , com o formato
https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git . Guarde este URL, uma vez que vai precisar
dele mais tarde.
az webapp config appsettings set --name <app_name> --resource-group myResourceGroup --settings DB_HOST="
<mysql_server_name>.mysql.database.azure.com" DB_DATABASE="sampledb"
DB_USERNAME="phpappuser@<mysql_server_name>" DB_PASSWORD="MySQLAzure2017" MYSQL_SSL="true"
Pode utilizar o método getenv do PHP para aceder às definições. O código do Laravel utiliza um wrapper env no
getenv do PHP. Por exemplo, a configuração do MySQL em config/database.php é semelhante ao código abaixo:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
...
],
Na Cloud Shell, detete a chave de az webapp config appsettings set aplicação na aplicação App Service utilizando
o comando. Substitua o nome de _ <aplicação dos_ espaços reservados>e _ <outputofphpartisankey:generate>_.
az webapp config appsettings set --name <app_name> --resource-group myResourceGroup --settings APP_KEY="
<output_of_php_artisan_key:generate>" APP_DEBUG="true"
APP_DEBUG="true" diz à Laravel para devolver informações de depuração quando a aplicação implementada
encontra erros. Ao executar uma aplicação de produção, defina-o como false , que é mais seguro.
Definir o caminho de aplicação virtual
Desloque o caminho de aplicação virtual para a aplicação. Este passo é necessário porque o ciclo de vida da
aplicação Laravel começa no diretório public em vez do diretório de raiz da aplicação. Outras arquiteturas PHP
cujo ciclo de vida tem início no diretório de raiz podem funcionar sem configuração manual do caminho de
aplicação virtual.
Na Cloud Shell, desloque o az resource update caminho da aplicação virtual utilizando o comando. Substitua o _
<nome de>_ espaço reservado.
Envie para o remoto do Azure para implementar a sua aplicação com o comando seguinte. Quando o Git
Credential Manager lhe pedir credenciais, certifique-se de introduzir as credenciais que criou na Configuração de
um utilizadorde implementação , e não as credenciais que utiliza para iniciar sessão no portal Azure.
Este comando pode demorar alguns minutos a ser executado. Ao executar, apresenta informações semelhantes ao
exemplo seguinte:
NOTE
Poderá reparar que o processo de implementação instala pacotes do Composer no fim. O Serviço de Aplicações não executa
estas automatizações durante a implementação predefinida, pelo que este repositório de exemplo tem três ficheiros
adicionais no diretório de raiz para a permitir:
.deployment – este ficheiro diz ao Serviço de Aplicações para executar bash deploy.sh como o script de
implementação personalizado.
deploy.sh – o script de implementação personalizado. Se revir o ficheiro, verá que executa
php composer.phar install a seguir a npm install .
composer.phar – o gestor de pacotes do Composer.
Pode utilizar esta abordagem para adicionar qualquer passo à sua implementação baseada no Git no Serviço de Aplicações.
Para obter mais informações, veja Script de Implementação Personalizado.
Este comando mostra-lhe o nome do ficheiro de migração que foi gerado. Localize o ficheiro em
database/migrations e abra-o.
Substitua o método up pelo código abaixo:
Na janela de terminal local, execute migrações de bases de dados do Laravel para fazer a alteração na base de
dados local.
Com base na convenção de nomenclatura do Laravel, o modelo Task (veja app/Task.php) mapeia para a tabela
tasks por predefinição.
/**
* Toggle Task completeness
*/
Route::post('/task/{id}', function ($id) {
error_log('INFO: post /task/'.$id);
$task = Task::findOrFail($id);
$task->complete = !$task->complete;
$task->save();
return redirect('/');
});
O código anterior faz uma simples atualização ao modelo de dados, ao alternar o valor de complete .
Atualizar a vista
Abra o ficheiro resources/views/tasks.blade.php. Procure o código de início <tr> e substitua-o por:
O código anterior altera a cor da linha, dependendo de a tarefa estar concluída ou não.
Na linha seguinte, tem o código abaixo:
O código anterior adiciona o botão Submeter que referencia a rota que definiu anteriormente.
Testar as alterações localmente
Na janela de terminal local, execute o servidor de programação a partir do diretório de raiz do repositório Git.
Para ver a alteração do estado da tarefa, navegue para http://localhost:8000 e selecione a caixa de verificação.
git add .
git commit -m "added complete checkbox"
git push azure master
Uma git push vez que esteja completo, navegue para a aplicação Azure e teste a nova funcionalidade.
Se tiver adicionado tarefas, estas são mantidas na base de dados. As atualizações ao esquema de dados não
afetam os dados já existentes.
Uma vez iniciado o streaming de log, refresque a aplicação Azure no navegador para obter algum tráfego web.
Verá então os registos da consola direcionados para o terminal. Se não vir os registos da consola imediatamente,
volte a consultar dentro de 30 segundos.
Para parar a transmissão de registos em fluxo em qualquer altura, escreva Ctrl +C.
TIP
Uma aplicação PHP pode utilizar o padrão error_log() como saída para a consola. A aplicação de exemplo utiliza esta
abordagem em app/Http/routes.php.
Como uma arquitetura Web o Laravel utiliza o Monolog como fornecedor de registo. Para ver como o Monolog envia
mensagens para a consola, veja PHP: como utilizar o Monolog para iniciar sessão na consola (php://out).
Veja a página de visão geral da sua aplicação. Aqui, pode realizar tarefas de gestão básicas, como parar, iniciar,
reiniciar, navegar e eliminar.
O menu do lado esquerdo disponibiliza páginas para configurar a aplicação.
Limpar recursos
Nos passos anteriores, criou os recursos do Azure num grupo de recursos. Se achar que não vai precisar destes
recursos no futuro, execute o seguinte comando no Cloud Shell para eliminar o grupo de recursos:
az group delete --name myResourceGroup
Passos seguintes
Neste tutorial, ficou a saber como:
Criar uma base de dados MySQL no Azure
Ligar uma aplicação PHP ao MySQL
Implementar a aplicação no Azure
Atualizar o modelo de dados e voltar a implementar a aplicação
Transmitir os registos de diagnóstico em fluxo a partir do Azure
Gerir a aplicação no portal do Azure
Avance para o tutorial seguinte para aprender a mapear um nome DNS personalizado para a aplicação.
Mapeie um nome dNS personalizado existente para o Serviço de Aplicações Azure
Tutorial: Construa uma app Node.js e MongoDB em
Azure
30/04/2020 • 30 minutes to read • Edit Online
NOTE
Este artigo implementa uma aplicação no Serviço de Aplicações no Windows. Para se implementar no Serviço de Aplicações
no Linux, consulte Construir uma aplicação Node.js e MongoDB no Azure App Service no Linux.
O Serviço de Aplicações do Azure oferece um serviço de alojamento na Web altamente dimensionável e com
correção automática. Este tutorial mostra como criar uma aplicação Node.js no App Service e conectá-la a uma
base de dados MongoDB. Quando terminar, terá uma aplicação MEAN (MongoDB, Express, AngularJS e Node.js)
em execução no Serviço de Aplicações do Azure. Para obter simplicidade, a aplicação de exemplo utiliza a estrutura
Web MEAN.js.
Pré-requisitos
Para concluir este tutorial:
1. Instalar o Git
2. Instale o Node.js e o NPM
3. Instalar Bower (exigido pelo MEAN.js)
4. Instalar Gulp.js (exigido pelo MEAN.js)
5. Instalar e executar a Edição de Comunidade do MongoDB
mongo
Se a ligação for bem-sucedida, então a base de dados do MongoDB já está em execução. Caso contrário, certifique-
se de que a base de dados do MongoDB local é iniciada através dos passos indicados em Instalar Edição da
Comunidade do MongoDB. Muitas vezes, mesmo com o MongoDB instalado, continua a precisar de iniciá-lo ao
executar o mongod .
Quando tiver terminado de testar a sua base de dados do MongoDB, escreva Ctrl+C no terminal.
Este repositório de exemplo inclui uma cópia do repositório do MEAN.js. É modificado para ser executado no
Serviço de Aplicações (para obter mais informações, veja o ficheiro README do repositório do MEAN.js).
Executar a aplicação
Execute os seguintes comandos para instalar os pacotes necessários e iniciar a aplicação.
cd meanjs
npm install
npm start
Quando a aplicação estiver totalmente carregada, verá algo semelhante à mensagem seguinte:
--
É MAU. JS - Ambiente de Desenvolvimento
Navegue para http://localhost:3000 num browser. Clique em Inscrever no menu superior e crie um utilizador de
teste.
A aplicação MEAN.js de exemplo armazena os dados do utilizador na base de dados. Se criar um utilizador e iniciar
sessão com êxito, então a aplicação está a escrever dados na base de dados do MongoDB local.
Selecione Administrador > Gerir Ar tigos para adicionar alguns artigos.
Para parar o Node.js em qualquer altura, prima Ctrl+C no terminal.
NOTE
O Início Rápido do Node.js menciona a necessidade de um web.config no diretório da aplicação de raiz. No entanto, neste
tutorial, este ficheiro web.config será automaticamente gerado pelo Serviço de Aplicações ao implementar os ficheiros com a
implementação de Git local em vez da implementação de ficheiros ZIP.
Geralmente, o grupo de recursos e os recursos são criados numa região perto de si.
Quando o comando for concluído, uma saída JSON mostra as propriedades do grupo de recursos.
Criar uma conta do Cosmos DB
NOTE
A criação das bases de dados do Azure Cosmos DB na sua própria subscrição do Azure neste tutorial não acarreta custos.
Para utilizar uma conta gratuita do Azure Cosmos DB durante sete dias, pode utilizar a experiência Experimentar o Azure
Cosmos DB gratuitamente. Basta clicar no botão Criar no mosaico MongoDB para criar uma base de dados do MongoDB
gratuita no Azure. Após a criação da base de dados, navegue para a cadeia de ligação no portal e obtenha a cadeia de
ligação do Azure Cosmos DB para utilizar mais à frente no tutorial.
Na Cloud Shell, crie uma conta az cosmosdb create Cosmos DB com o comando.
No comando seguinte, substitua um nome * <* único cosmos DB para o cosmosdb_name>espaço reservado. Este
nome é utilizado como parte do ponto final do Cosmos DB, https://<cosmosdb_name>.documents.azure.com/ , por
isso, o nome tem de ser exclusivo em todas as contas Cosmos DB no Azure. O nome só pode conter letras
minúsculas, números, o caráter hífen (-) e tem de ter entre três e 50 carateres.
{
"primaryMasterKey":
"RS4CmUwzGRASJPMoc0kiEvdnKmxyRILC9BWisAYh3Hq4zBYKr0XQiSE4pqx3UchBeO4QRCzUt1i7w0rOkitoJw==",
"primaryReadonlyMasterKey":
"HvitsjIYz8TwRmIuPEUAALRwqgKOzJUjW22wPL2U8zoMVhGvregBkBk9LdMTxqBgDETSq7obbwZtdeFY7hElTg==",
"secondaryMasterKey":
"Lu9aeZTiXU4PjuuyGBbvS1N9IRG3oegIrIh95U6VOstf9bJiiIpw3IfwSUgQWSEYM3VeEyrhHJ4rn3Ci0vuFqA==",
"secondaryReadonlyMasterKey":
"LpsCicpVZqHRy7qbMgrzbRKjbYCwCKPQRl0QpgReAOxMcggTvxJFA94fTi0oQ7xtxpftTJcXkjTirQ0pT7QFrQ=="
}
module.exports = {
db: {
uri: 'mongodb://<cosmosdb_name>:<primary_master_key>@<cosmosdb_name>.documents.azure.com:10250/mean?
ssl=true&sslverifycertificate=false'
}
};
A ssl=true opção é necessária devido aos requisitos de cadeia de ligação.
Guarde as alterações.
Teste a aplicação no modo de produção
Execute o seguinte comando para minimizar e agrupar scripts para o ambiente de produção. Este processo gera os
ficheiros necessários para o ambiente de produção.
gulp prod
# Bash
NODE_ENV=production node server.js
# Windows PowerShell
$env:NODE_ENV = "production"
node server.js
NODE_ENV=production define a variável de ambiente que informa o Node.js para ser executado no ambiente de
produção. node server.js inicia o servidor do Node.js com server.js na raiz do repositório. Esta é a forma que a
sua aplicação do Node.js é carregada no Azure.
Assim que a aplicação é carregada, certifique-se de que está em execução no ambiente de produção:
--
É MAU. JS
Navegue para http://localhost:8443 num browser. Clique em Inscrever no menu superior e crie um utilizador de
teste. Se criar um utilizador e iniciar sessão com êxito, então a aplicação está a escrever dados na base de dados do
Cosmos DB no Azure.
No terminal, pare o Node.js ao escrever Ctrl+C .
A saída JSON mostra null a palavra-passe como . Se obtiver o erro 'Conflict'. Details: 409 , altere o nome de
utilizador. Se obtiver o 'Bad Request'. Details: 400 erro, utilize uma palavra-passe mais forte.
Grave o seu nome de utilizador e palavra-passe para utilizar para implementar as suas aplicações web.
Crie um plano do Serviço de Aplicações
Na Cloud Shell, crie um az appservice plan create plano de Serviço de Aplicações com o comando.
O exemplo seguinte cria um plano do Serviço de Aplicações com o nome myAppServicePlan , que utiliza o escalão
de preços Gratuito .
Quando o plano do Serviço de Aplicações tiver sido criado, a CLI do Azure mostra informações semelhantes ao
seguinte exemplo:
{
"adminSiteName": null,
"appServicePlanName": "myAppServicePlan",
"geoRegion": "West Europe",
"hostingEnvironmentProfile": null,
"id": "/subscriptions/0000-
0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan",
"kind": "app",
"location": "West Europe",
"maximumNumberOfWorkers": 1,
"name": "myAppServicePlan",
< JSON data removed for brevity. >
"targetWorkerSizeId": 0,
"type": "Microsoft.Web/serverfarms",
"workerTierName": null
}
# Bash
az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime
"NODE|6.9" --deployment-local-git
# PowerShell
az --% webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime
"NODE|6.9" --deployment-local-git
Quando a aplicação Web tiver sido criada, a CLI do Azure mostra informações semelhantes ao seguinte exemplo:
Local git is configured with url of 'https://<username>@<app-name>.scm.azurewebsites.net/<app-
name>.git'
{
"availabilityState": "Normal",
"clientAffinityEnabled": true,
"clientCertEnabled": false,
"cloningInfo": null,
"containerSize": 0,
"dailyMemoryTimeQuota": 0,
"defaultHostName": "<app-name>.azurewebsites.net",
"deploymentLocalGitUrl": "https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git",
"enabled": true,
< JSON data removed for brevity. >
}
NOTE
O URL do Git remoto é apresentado na propriedade deploymentLocalGitUrl , com o formato
https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git . Guarde este URL, uma vez que vai precisar
dele mais tarde.
No código do Node.js, aceda a esta definição de aplicação com process.env.MONGODB_URI , tal como faria em
qualquer variável de ambiente.
No seu repositório do MEAN.js local, abra config/env/production.js (não config/env/local-production.js), que tem
uma configuração específica de ambiente de produção. A aplicação do MEAN.js predefinida já está configurada
para utilizar a variável de ambiente MONGODB_URI que criou.
db: {
uri: ... || process.env.MONGODB_URI || ...,
...
},
Este comando pode demorar alguns minutos a ser executado. Ao executar, apresenta informações semelhantes ao
exemplo seguinte:
Poderá reparar que o processo de implementação executa o Gulp depois de npm install . O Serviço de Aplicações
não executa tarefas do Gulp ou do Grunt durante a implementação, pelo que este repositório de exemplo tem dois
ficheiros adicionais no diretório raiz para a permitir:
.implementação - este ficheiro diz ao Serviço de Aplicações para executar bash deploy.sh como o script de
implementação personalizado.
deploy.sh - o script de implementação personalizado. Se vir o ficheiro, verá que executa gulp prod a seguir a
npm install e bower install .
Pode utilizar esta abordagem para adicionar qualquer passo à sua implementação baseada no Git. Se reiniciar a
sua aplicação Azure em algum momento, o Serviço de Aplicações não reexecuta estas tarefas de automação.
Navegue na app Azure
Navegue na aplicação implementada utilizando o seu navegador web.
http://<app_name>.azurewebsites.net
article.title = req.body.title;
article.content = req.body.content;
article.comment = req.body.comment;
...
};
Abra modules/artigos/cliente/vistas/view-article.client.view.html.
Exatamente acima da etiqueta de fecho </section> , adicione a seguinte linha para apresentar comment juntamente
com o resto dos dados do artigo:
Abra modules/artigos/cliente/vistas/list-articles.client.view.html.
Exatamente acima da etiqueta de fecho </a> , adicione a seguinte linha para apresentar comment juntamente com
o resto dos dados do artigo:
Abra módulos/artigos/cliente/vistas/administrador/list-articles.client.view.html.
No interior do elemento comment e imediatamente acima da etiqueta de fecho <div class="list-group"> , adicione
a seguinte linha para apresentar </a> juntamente com o resto dos dados do artigo:
Abra módulos/artigos/cliente/vistas/administrador/form-article.client.view.html.
Encontre o elemento <div class="form-group"> que contém o botão para submeter, semelhante ao seguinte:
<div class="form-group">
<button type="submit" class="btn btn-default">{{vm.article._id ? 'Update' : 'Create'}}</button>
</div>
Imediatamente acima desta etiqueta, adicione outro elemento <div class="form-group"> que permite que as
pessoas editem o campo comment . O novo elemento deve ter o seguinte aspeto:
<div class="form-group">
<label class="control-label" for="comment">Comment</label>
<textarea name="comment" data-ng-model="vm.article.comment" id="comment" class="form-control" cols="30"
rows="10" placeholder="Comment"></textarea>
</div>
# Windows PowerShell
gulp prod
$env:NODE_ENV = "production"
node server.js
Navegue para http://localhost:8443 num browser e certifique-se de que tem sessão iniciada.
Selecione Administrador > Gerir Ar tigos e adicione um artigo ao selecionar o botão + .
Pode ver a nova caixa de texto Comment agora.
Uma git push vez que esteja completo, navegue para a sua aplicação Azure e experimente a nova funcionalidade.
Se tiver adicionado quaisquer artigos anteriormente, ainda pode vê-los. Os dados existentes no Cosmos DB não se
perdem. Além disso, atualiza o esquema de dados e mantém os dados existentes intactos.
Uma vez iniciado o streaming de log, refresque a sua aplicação Azure no navegador para obter algum tráfego web.
Verá então os registos da consola direcionados para o seu terminal.
Pare a transmissão em fluxo do registo em qualquer altura, ao escrever Ctrl+C .
Limpar recursos
Nos passos anteriores, criou os recursos do Azure num grupo de recursos. Se achar que não vai precisar destes
recursos no futuro, execute o seguinte comando no Cloud Shell para eliminar o grupo de recursos:
Passos seguintes
O que aprendeu:
Criar uma base de dados MongoDB no Azure
Ligar uma aplicação Node.js ao MongoDB
Implementar a aplicação no Azure
Atualizar o modelo de dados e voltar a implementar a aplicação
Transmitir os registos do Azure para o seu terminal
Gerir a aplicação no portal do Azure
Avance para o tutorial seguinte para aprender a mapear um nome DNS personalizado para a aplicação.
Mapeie um nome dNS personalizado existente para o Serviço de Aplicações Azure
Migrar uma aplicação ASP.NET para o Serviço de
Aplicações do Azure com um contentor do Windows
(Pré-visualização)
29/04/2020 • 10 minutes to read • Edit Online
O Serviço de Aplicações do Azure disponibiliza pilhas de aplicações predefinidas no Windows, como ASP.NET ou
Node.js, em execução no IIS. O ambiente pré-configurado do Windows bloqueia o sistema operativo contra acesso
administrativo, instalações de software, alterações ao Global Assembly Cache, etc. (veja Operating system
functionality on Azure App Service (Funcionalidade do sistema operativo no Serviço de Aplicações do Azure). No
entanto, a utilização de um contentor personalizado do Windows no Serviço de Aplicações permite efetuar as
alterações ao SO de que a aplicação precisa, pelo que é fácil migrar uma aplicação no local que requer uma
configuração personalizada do SO e software. Este tutorial demonstra como migrar para o Serviço de Aplicações
uma aplicação ASP.NET que utiliza tipos de letra personalizados instalados na biblioteca de tipos de letra do
Windows. Implemente uma imagem do Windows configurada e personalizada do Visual Studio no Azure
Container Registry, e, em seguida, execute-a no Serviço de Aplicações.
Pré-requisitos
Para concluir este tutorial:
Inscrever numa conta do Docker Hub
Instale o Docker para Windows.
Mude o Docker para executar contentores do Windows.
Instale o Visual Studio 2019 com o ASP.NET e desenvolvimento web e cargas de trabalho de
desenvolvimento azure. Se já instalou o Visual Studio 2019:
Instale as últimas atualizações no Estúdio Visual clicando em Procurar > Atualizações .
Adicione as cargas de trabalho no Estúdio Visual clicando em Ferramentas > Get Tools e Recursos .
Uma vez que a aplicação utiliza um tipo de letra instalado, não é possível executá-la na sandbox do Serviço de
Aplicações. No entanto, pode implementá-la com um contentor do Windows em alternativa, pois pode instalar o
tipo de letra no contentor do Windows.
Configurar o contentor do Windows
No Explorador de Soluções, clique com o botão direito do rato no projeto CustomFontSample e selecione
Adicionar > Supor te de Orquestração de Contentores .
Selecione Docker Compor > OK .
O projeto está agora configurado para ser executado num contentor do Windows. Um Dockerfile é adicionado ao
projeto CustomFontSample e um projeto docker-compose é adicionado à solução.
No Explorador de Soluções, abra Dockerfile .
Tem de utilizar uma imagem principal suportada. Altere a imagem principal, substituindo a linha FROM pelo
seguinte código:
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2019
RUN ${source:-obj/Docker/publish/InstallFont.ps1}
Pode encontrar InstallFont.ps1 no projeto CustomFontSample . É um script simples que instala o tipo de letra.
Pode encontrar uma versão mais complexa do script no Centro de Scripts.
NOTE
Para testar o contentor do Windows localmente, certifique-se de que o Docker é iniciado na sua máquina local.
DEF IN IÇ Ã O VA LO R SUGERIDO
Aguarde alguns minutos e tente novamente, até chegar à página de boas-vindas com o tipo de letra elegante de
que está à espera:
Parabéns! Migrou uma aplicação ASP.NET para o Serviço de Aplicações do Azure num contentor do Windows.
https://<app-name>.scm.azurewebsites.net/api/logstream
O Serviço de Aplicações oferece um serviço de alojamento na Web altamente dimensionável e com correção
automática no Azure. Também oferece uma identidade gerida para a sua aplicação, que é uma solução chave na
mão para proteger o acesso à Base de Dados SQL do Azure e a outros serviços do Azure. As identidades geridas
no Serviço de Aplicações retiram a necessidade de ter segredos nas suas aplicações, como credenciais nas cadeias
de ligação, o que as torna mais seguras. Neste tutorial, você adicionará identidade gerida à aplicação web da
amostra que você construiu em um dos seguintes tutoriais:
Tutorial: Criar uma aplicação ASP.NET no Azure com a Base de Dados SQL
Tutorial: Construa uma app de base de dados core e SQL ASP.NET no Serviço de Aplicações Azure
Quando tiver terminado, a aplicação de exemplo irá ligar-se à Base de Dados SQL em segurança sem ser preciso o
nome de utilizador e a palavras-passe.
NOTE
Os passos abordados neste tutorial suportam as seguintes versões:
.QUADRO LÍQUIDO 4.7.2 e superior
.NET Core 2.2 e acima
NOTE
A autenticação Azure AD é diferente da autenticação integrada do Windows no diretório ativo no local (AD DS). A AD DS e a
AD Azure utilizam protocolos de autenticação completamente diferentes. Para mais informações, consulte a documentação
dos Serviços de Domínio da AD Azure.
Se não tiver uma subscrição do Azure,crie uma conta gratuita antes de começar.
Pré-requisitos
Este artigo continua onde deixou no Tutorial: Construa uma aplicação ASP.NET em Azure com Base de Dados SQL
ou Tutorial: Construa uma aplicação de base de dados core e SQL ASP.NET no Serviço de Aplicações Azure. Se
ainda não o fez, siga primeiro um dos dois tutoriais. Em alternativa, pode adaptar os passos para a sua própria
aplicação .NET com base de dados SQL.
Para desinserir a sua aplicação utilizando a Base de Dados SQL como parte de trás, certifique-se de que permitiu a
ligação ao cliente a partir do seu computador. Caso contrário, adicione o IP do cliente seguindo os passos das
regras de firewall IP de nível de servidor manage utilizando o portal Azure.
Para obter mais informações sobre a adição de um administrador de Diretório Ativo, consulte Provision um
administrador de Diretório Ativo Azure para o seu servidor
az login --allow-no-subscriptions
Está agora pronto para desenvolver e depurar a sua aplicação com a Base de Dados SQL como parte de trás,
utilizando a autenticação Azure AD.
<section name="SqlAuthenticationProviders"
type="System.Data.SqlClient.SqlAuthenticationProviderConfigurationSection, System.Data,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<SqlAuthenticationProviders>
<providers>
<add name="Active Directory Interactive"
type="Microsoft.Azure.Services.AppAuthentication.SqlAppAuthenticationProvider,
Microsoft.Azure.Services.AppAuthentication" />
</providers>
</SqlAuthenticationProviders>
Encontre a cadeia de ligação chamada MyDbConnection e substitua o seu connectionString valor por
"server=tcp:<server-name>.database.windows.net;database=<db-name>;UID=AnyString;Authentication=Active
Directory Interactive"
. Substitua e com o nome do seu servidor e nome de base de <server-name> <db-name> dados.
NOTE
O SqlAuthenticationProvider que acabou de registar baseia-se na biblioteca appAuthentication que instalou anteriormente.
Por padrão, utiliza uma identidade atribuída ao sistema. Para alavancar uma identidade atribuída ao utilizador, terá de
fornecer uma configuração adicional. Consulte o suporte de cordas de ligação para a biblioteca AppAuthentication.
É tudo o que precisas para ligar à Base de Dados SQL. Ao depurar-se no Estúdio Visual, o seu código utiliza o
utilizador Azure AD configurado no set up Visual Studio. Mais tarde, irá configurar a Base de Dados SQL para
permitir a ligação a partir da identidade gerida da sua aplicação App Service.
Digite Ctrl+F5 para executar a aplicação novamente. A mesma aplicação CRUD no seu navegador está agora a
ligar-se diretamente à Base de Dados Azure SQL, utilizando a autenticação Azure AD. Esta configuração permite-
lhe executar migrações de base de dados do Estúdio Visual.
Modificar ASP.NET Núcleo
No Estúdio Visual, abra a Consola de Gestor de Pacotes e adicione o pacote NuGet
Microsoft.Azure.Services.Services.AppAuthentication:
No tutorial de base de dados Core e SQL ASP.NET,a cadeia de ligação não é utilizada porque o ambiente de
desenvolvimento local utiliza um ficheiro de base de MyDbConnection dados Sqlite, e o ambiente de produção do
Azure usa uma cadeia de ligação do App Service. Com a autenticação de Diretório Ativo, pretende que ambos os
ambientes utilizem a mesma cadeia de ligação. Em aplicações.json, substitua o valor da cadeia de MyDbConnection
ligação com:
"Server=tcp:<server-name>.database.windows.net,1433;Database=<database-name>;"
Em seguida, fornece o contexto da base de dados 'Quadro de Entidades' com o token de acesso para a Base de
Dados SQL. Em Dados\MyDatabaseContext.cs, adicione o seguinte código dentro dos aparelhos encaracolados do
MyDatabaseContext (DbContextOptions<MyDatabaseContext> options) construtor vazio:
NOTE
Este código de demonstração é sincronizado para a clareza e simplicidade.
É tudo o que precisas para ligar à Base de Dados SQL. Ao depurar-se no Estúdio Visual, o seu código utiliza o
utilizador Azure AD configurado no set up Visual Studio. Mais tarde, irá configurar a Base de Dados SQL para
permitir a ligação a partir da identidade gerida da sua aplicação App Service. A AzureServiceTokenProvider classe
cacheo o símbolo na memória e o recupera de Azure AD pouco antes de expirar. Não precisa de nenhum código
personalizado para refrescar o símbolo.
TIP
Se o utilizador da AD Azure configurado tiver acesso a vários inquilinos, ligue
GetAccessTokenAsync("https://database.windows.net/", tenantid) com o ID do inquilino pretendido para recuperar o
sinal de acesso adequado.
Digite Ctrl+F5 para executar a aplicação novamente. A mesma aplicação CRUD no seu navegador está agora a
ligar-se diretamente à Base de Dados Azure SQL, utilizando a autenticação Azure AD. Esta configuração permite-
lhe executar migrações de base de dados do Estúdio Visual.
NOTE
Embora as instruções nesta secção sejam para uma identidade atribuída ao sistema, uma identidade atribuída ao utilizador
pode facilmente ser utilizada. Para fazer isto. precisaria da alteração para atribuir a identidade atribuída ao
az webapp identity assign command utilizador pretendido. Em seguida, ao criar o utilizador SQL, certifique-se de usar o
nome do recurso de identidade atribuído ao utilizador em vez do nome do site.
NOTE
Se quiser, pode adicionar a identidade a um grupo Azure AD,em seguida, conceder acesso à Base de Dados SQL ao grupo
Azure AD em vez da identidade. Por exemplo, os seguintes comandos adicionam a identidade gerida do passo anterior a um
novo grupo chamado myAzureSQLDBAccessGroup:
No Cloud Shell, utilize o comando SQLCMD para iniciar sessão na Base de Dados SQL. <server-name> Substitua-o
pelo nome do servidor, com o nome de base de <db-name> dados que a sua aplicação utiliza e com as credenciais
do utilizador do <aad-user-name> <aad-password> Azure AD.
No pedido SQL para a base de dados que deseja, execute os seguintes comandos para conceder as permissões de
que a sua aplicação necessita. Por exemplo,
<identity-name> é o nome da identidade gerida em Azure AD. Se a identidade for atribuída ao sistema, o nome é
sempre o mesmo que o nome da sua aplicação App Service. Para conceder permissões a um grupo Azure AD,
utilize o nome de exibição do grupo (por exemplo, myAzureSQLDBAccessGroup).
Escreva EXIT para regressar à linha de comandos do Cloud Shell.
NOTE
Os serviços de back-end de identidades geridas também mantêm uma cache simbólica que atualiza o símbolo para um
recurso-alvo apenas quando expira. Se cometer um erro ao configurar as suas permissões de Base de Dados SQL e tentar
modificar as permissões depois de tentar obter um sinal com a sua aplicação, não obtém um novo símbolo com as
permissões atualizadas até que o token em cache expire.
Publicar as alterações
Agora, só falta publicar as alterações no Azure.
Se veio do Tutorial: Construa uma aplicação ASP.NET em Azure com base de dados SQL, publique as
suas alterações no Estúdio Visual. No Explorador de Soluções , clique com o botão direito do rato no projeto
DotNetAppSqlDb e selecione Publicar .
Quando a página Web nova mostrar a lista de tarefas, significa que a aplicação se está a ligar à base de dados com
a identidade gerida.
Agora, deverá conseguir editar a lista de tarefas como antes.
Limpar recursos
Nos passos anteriores, criou os recursos do Azure num grupo de recursos. Se achar que não vai precisar destes
recursos no futuro, execute o seguinte comando no Cloud Shell para eliminar o grupo de recursos:
Próximos passos
O que aprendeu:
Ativar identidades geridas
Conceder acesso à Base de Dados SQL à identidade gerida
Configure Quadro de Entidade para usar autenticação Azure AD com Base de Dados SQL
Ligue-se à Base de Dados SQL do Estúdio Visual utilizando a autenticação Azure AD
Avance para o próximo tutorial para saber como mapear um nome DNS personalizado para a aplicação Web.
Mapeie um nome dNS personalizado existente para o Serviço de Aplicações Azure
Tutorial: Alojar uma API RESTful com CORS no
Serviço de Aplicações do Azure
30/04/2020 • 18 minutes to read • Edit Online
O Serviço de Aplicações do Azure oferece um serviço de alojamento na Web altamente dimensionável e com
correção automática. Além disso, o Serviço de Aplicações tem suporte incorporado para Partilha de Recursos de
Várias Origens (CORS) para APIs RESTful. Este tutorial mostra como implementar uma aplicação API ASP.NET Core
no Serviço de Aplicações com suporte para CORS. A aplicação é configurada com ferramentas de linha de
comandos e implementada na aplicação através do Git.
Neste tutorial, ficará a saber como:
Criar recursos do Serviço de Aplicações com a CLI do Azure
Implementar uma API RESTful no Azure com o Git
Ativar o suporte para CORS no Serviço de Aplicações
Pode seguir os passos neste tutorial em macOS, Linux e Windows.
Se não tiver uma subscrição do Azure,crie uma conta gratuita antes de começar.
Pré-requisitos
Para concluir este tutorial:
Instalar o Git
Instale o mais recente .NET Core 3.1 SDK
Este repositório contém uma aplicação que é criada com base no tutorial ASP.NET Core Web API help pages using
Swagger (Páginas de ajuda da API Web ASP.NET Core mediante a utilização do Swagger). Utiliza um gerador do
Swagger para servir a IU do Swagger e o ponto final JSON do Swagger.
Executar a aplicação
Execute os seguintes comandos para instalar os pacotes necessários, executar migrações de base de dados e iniciar
a aplicação.
cd dotnet-core-api
dotnet restore
dotnet run
Navegue para http://localhost:5000/swagger num browser para reproduzir com a IU do Swagger.
A saída JSON mostra null a palavra-passe como . Se obtiver o erro 'Conflict'. Details: 409 , altere o nome de
utilizador. Se obtiver o 'Bad Request'. Details: 400 erro, utilize uma palavra-passe mais forte.
Grave o seu nome de utilizador e palavra-passe para utilizar para implementar as suas aplicações web.
Criar um grupo de recursos
Um grupo de recursos é um contentor lógico em que os recursos do Azure, como aplicações Web, bases de dados
e contas de armazenamento são implementados e geridos. Por exemplo, pode optar por eliminar todo o grupo de
recursos num único passo simples mais tarde.
Na Cloud Shell, crie um az group create grupo de recursos com o comando. O exemplo seguinte cria um grupo
de recursos com o nome myResourceGroup, na localização Europa Ocidental. Para ver todas as localizações
suportadas para o Serviço de Aplicações no escalão Gratuito , execute o comando
az appservice list-locations --sku FREE .
az group create --name myResourceGroup --location "West Europe"
Geralmente, o grupo de recursos e os recursos são criados numa região perto de si.
Quando o comando for concluído, uma saída JSON mostra as propriedades do grupo de recursos.
Crie um plano do Serviço de Aplicações
Na Cloud Shell, crie um az appservice plan create plano de Serviço de Aplicações com o comando.
O exemplo seguinte cria um plano do Serviço de Aplicações com o nome myAppServicePlan , que utiliza o escalão
de preços Gratuito .
Quando o plano do Serviço de Aplicações tiver sido criado, a CLI do Azure mostra informações semelhantes ao
seguinte exemplo:
{
"adminSiteName": null,
"appServicePlanName": "myAppServicePlan",
"geoRegion": "West Europe",
"hostingEnvironmentProfile": null,
"id": "/subscriptions/0000-
0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan",
"kind": "app",
"location": "West Europe",
"maximumNumberOfWorkers": 1,
"name": "myAppServicePlan",
< JSON data removed for brevity. >
"targetWorkerSizeId": 0,
"type": "Microsoft.Web/serverfarms",
"workerTierName": null
}
Quando a aplicação Web tiver sido criada, a CLI do Azure mostra informações semelhantes ao seguinte exemplo:
Local git is configured with url of 'https://<username>@<app-name>.scm.azurewebsites.net/<app-
name>.git'
{
"availabilityState": "Normal",
"clientAffinityEnabled": true,
"clientCertEnabled": false,
"clientCertExclusionPaths": null,
"cloningInfo": null,
"containerSize": 0,
"dailyMemoryTimeQuota": 0,
"defaultHostName": "<app-name>.azurewebsites.net",
"deploymentLocalGitUrl": "https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git",
"enabled": true,
< JSON data removed for brevity. >
}
NOTE
O URL do Git remoto é apresentado na propriedade deploymentLocalGitUrl , com o formato
https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git . Guarde este URL, uma vez que vai precisar
dele mais tarde.
Envie para o remoto do Azure para implementar a sua aplicação com o comando seguinte. Quando o Git
Credential Manager lhe pedir credenciais, certifique-se de introduzir as credenciais que criou na Configuração de
um utilizadorde implementação , e não as credenciais que utiliza para iniciar sessão no portal Azure.
Este comando pode demorar alguns minutos a ser executado. Ao executar, apresenta informações semelhantes ao
exemplo seguinte:
Enumerating objects: 83, done.
Counting objects: 100% (83/83), done.
Delta compression using up to 8 threads
Compressing objects: 100% (78/78), done.
Writing objects: 100% (83/83), 22.15 KiB | 3.69 MiB/s, done.
Total 83 (delta 26), reused 0 (delta 0)
remote: Updating branch 'master'.
remote: Updating submodules.
remote: Preparing deployment for commit id '509236e13d'.
remote: Generating deployment script.
remote: Project file path: .\TodoApi.csproj
remote: Generating deployment script for ASP.NET MSBuild16 App
remote: Generated deployment script files
remote: Running deployment command...
remote: Handling ASP.NET Core Web Application deployment with MSBuild16.
remote: .
remote: .
remote: .
remote: Finished successfully.
remote: Running post deployment command(s)...
remote: Triggering recycle (preview mode disabled).
remote: Deployment successful.
To https://<app_name>.scm.azurewebsites.net/<app_name>.git
* [new branch] master -> master
dotnet run
NOTE
Se a sua aplicação necessitar de credenciais como cookies ou fichas ACCESS-CONTROL-ALLOW-CREDENTIALS de autenticação
para ser enviada, o navegador poderá necessitar do cabeçalho na resposta. Para ativar isto no
properties.cors.supportCredentials Serviço true de Aplicações, coloque-o no seu config CORS. Isto não pode
allowedOrigins ser '*' ativado quando inclui .
NOTE
Não tente utilizar o CORS do Serviço de Aplicações o seu próprio código CORS em conjunto. Quando utilizados em conjunto,
o CORS do Serviço de Aplicações tem precedência e o seu código não tem qualquer efeito.
Limpar recursos
Nos passos anteriores, criou os recursos do Azure num grupo de recursos. Se achar que não vai precisar destes
recursos no futuro, execute o seguinte comando no Cloud Shell para eliminar o grupo de recursos:
Passos seguintes
O que aprendeu:
Criar recursos do Serviço de Aplicações com a CLI do Azure
Implementar uma API RESTful no Azure com o Git
Ativar o suporte para CORS no Serviço de Aplicações
Avançar para o próximo tutorial para saber como autenticar e autorizar utilizadores.
Tutorial: Autenticar e autorizar utilizadores ponto a ponto
Tutorial: Mapeie um nome dNS personalizado
existente para o Serviço de Aplicações Azure
30/04/2020 • 27 minutes to read • Edit Online
O Serviço de Aplicações do Azure oferece um serviço de alojamento na Web altamente dimensionável e com
correção automática. Este tutorial mostra-lhe como mapear um nome DNS personalizado existente para o
Serviço de Aplicações Azure.
Pré-requisitos
Para concluir este tutorial:
Crie uma aplicação do Serviço de Aplicações ou utilize uma aplicação que tenha criado para outro
tutorial.
Compre um nome de domínio e confirme que tem acesso ao registo DNS do seu fornecedor de
domínio (como a GoDaddy).
Por exemplo, para adicionar entradas DNS para contoso.com e www.contoso.com , tem de ter poder
configurar as definições de DNS para o domínio de raiz contoso.com .
NOTE
Se não tiver um nome de domínio já existente, considere comprar um domínio através do portal do Azure.
Preparar a aplicação
Para mapear um nome DNS personalizado para uma aplicação web, o plano de Serviço de Aplicações da
aplicação web deve ser um nível pago (Shared , Basic , Standard , Premium ou Consumption for Azure
Functions). Neste passo, vai confirmar que a aplicação do Serviço de Aplicações está no escalão de preço
suportado.
NOTE
Os planos de hospedagem gratuitos e partilhados (pré-visualização) são os planos de hospedagem de níveis base que
funcionam nas mesmas máquinas virtuais Azure que outras aplicações do App Service. Algumas aplicações podem
pertencer a outros clientes. Estas camadas destinam-se a ser utilizadas apenas para efeitos de desenvolvimento e teste.
O escalão atual da aplicação é realçado com um limite azul. Confirme que a aplicação não está no escalão F1 .
O DNS personalizado não é suportado no escalão F1 .
Se o plano do Serviço de Aplicações não estiver no escalão F1 , feche a página Aumentar ver ticalmente e
avance para Mapear um registo CNAME.
Aumentar verticalmente o plano do Serviço de Aplicações
Selecione qualquer uma das camadas não gratuitas (D1 , B1 , B2 , B3 ou qualquer camada na categoria
Produção ). Para obter opções adicionais, clique em Ver opções adicionais .
Clique em Aplicar .
Quando vir a notificação seguinte, significa que a operação de dimensionamento está completa.
NOTE
Deve utilizar os registos CNAME para todos os nomes DNS personalizados, exceto os domínios de raiz (por exemplo,
contoso.com ). Para os domínios de raiz, utilize registos A.
NOTE
Pode utilizar o Azure DNS para configurar um nome DNS personalizado para o Serviço de Aplicações Azure. Para obter
mais informações, veja Utilizar o DNS do Azure para oferecer definições de domínio personalizado para um serviço do
Azure.
Na captura de ecrã de exemplo, selecione adicionar para criar um registo. Alguns fornecedores têm ligações
diferentes para adicionar diferentes tipos de registos. Novamente, consulte a documentação do fornecedor.
NOTE
Para alguns fornecedores, como a GoDaddy, as alterações aos registos DNS só entram em vigor quando selecionar uma
ligação Guardar Alterações separada.
Depois de adicionar os registos CNAME e TXT, a página de registos DNS parece ser o seguinte exemplo:
Escreva o nome de domínio completamente qualificado ao qual adicionou um registo CNAME, como
www.contoso.com .
Selecione Validar .
A página de domínio personalizado Adicionar é mostrada.
Certifique-se de que o tipo de registo do Nome anfitrião está definido para CNAME.(www example.com
ou qualquer subdomínio) .
Selecione Adicionar domínio personalizado .
Pode levar algum tempo para que o novo domínio personalizado seja refletido na página de domínios
Personalizados da aplicação. Experimente atualizar o browser para atualizar os dados.
NOTE
Uma etiqueta Não Segura para o seu domínio personalizado significa que ainda não está ligada a um certificado
TLS/SSL, e qualquer pedido HTTPS de um navegador para o seu domínio personalizado receberá e erro ou aviso,
dependendo do navegador. Para adicionar uma ligação TLS, consulte Proteja um nome DNS personalizado com uma
ligação TLS/SSL no Serviço de Aplicações Azure.
Se tiver perdido um passo ou escrito algo mal em algum momento acima, verá um erro de verificação na
parte inferior da página.
Mapear um registo A
No exemplo do tutorial, vai adicionar um registo A ao domínio de raiz (por exemplo, contoso.com ).
Copiar o endereço IP da aplicação
Para mapear um registo A, precisa do endereço IP externo da aplicação. Pode encontrar este endereço IP na
página Domínios personalizados da aplicação, no portal do Azure.
No painel de navegação esquerdo da página da aplicação no portal do Azure, selecione Domínios
personalizados .
Na captura de ecrã de exemplo, selecione adicionar para criar um registo. Alguns fornecedores têm ligações
diferentes para adicionar diferentes tipos de registos. Novamente, consulte a documentação do fornecedor.
NOTE
Para alguns fornecedores, como a GoDaddy, as alterações aos registos DNS só entram em vigor quando selecionar uma
ligação Guardar Alterações separada.
Criar um registo A
Para mapear um registo A para uma aplicação, geralmente para o domínio raiz, criar dois registos:
T I P O D E R E G I S TO ANF I TR I ÃO VA L O R
Quando os registos estiverem adicionados, a página de registos DNS terá um aspeto semelhante ao seguinte
exemplo:
Escreva o nome de domínio completamente qualificado para o qual configurou o registo A, como contoso.com
.
Selecione Validar .
A página de domínio personalizado Adicionar é mostrada.
Confirme que o Tipo de registo de nome de anfitrião está definido como Registo A
( www.example.com ) .
Selecione Adicionar domínio personalizado .
Pode levar algum tempo para que o novo domínio personalizado seja refletido na página de domínios
Personalizados da aplicação. Experimente atualizar o browser para atualizar os dados.
NOTE
Uma etiqueta Não Segura para o seu domínio personalizado significa que ainda não está ligada a um certificado
TLS/SSL, e qualquer pedido HTTPS de um navegador para o seu domínio personalizado receberá e erro ou aviso,
dependendo do navegador. Para adicionar uma ligação TLS, consulte Proteja um nome DNS personalizado com uma
ligação TLS/SSL no Serviço de Aplicações Azure.
Se tiver perdido um passo ou escrito algo mal em algum momento acima, verá um erro de verificação na
parte inferior da página.
NOTE
Pode utilizar o Azure DNS para configurar um nome DNS personalizado para o Serviço de Aplicações Azure. Para obter
mais informações, veja Utilizar o DNS do Azure para oferecer definições de domínio personalizado para um serviço do
Azure.
Na captura de ecrã de exemplo, selecione adicionar para criar um registo. Alguns fornecedores têm ligações
diferentes para adicionar diferentes tipos de registos. Novamente, consulte a documentação do fornecedor.
NOTE
Para alguns fornecedores, como a GoDaddy, as alterações aos registos DNS só entram em vigor quando selecionar uma
ligação Guardar Alterações separada.
Escreva um nome de domínio completamente qualificado que corresponda ao domínio de caráter universal
(por exemplo, sub1.contoso.com ) e, em seguida, selecione Validar .
O botão de domínio personalizado Adicionar é ativado.
Certifique-se de que o tipo de registo do Nome anfitrião está definido para o registo CNAME (www
example.com.ou qualquer subdomínio) .
Selecione Adicionar domínio personalizado .
Pode levar algum tempo para que o novo domínio personalizado seja refletido na página de domínios
Personalizados da aplicação. Experimente atualizar o browser para atualizar os dados.
Selecione novamente o + ícone para adicionar outro domínio personalizado que corresponda ao domínio
wildcard. Por exemplo, adicione sub2.contoso.com .
NOTE
Uma etiqueta Note Secure para o seu domínio personalizado significa que ainda não está ligada a um certificado
TLS/SSL, e qualquer pedido HTTPS de um navegador para o seu domínio personalizado receberá e erro ou aviso,
dependendo do navegador. Para adicionar uma ligação TLS, consulte Proteja um nome DNS personalizado com uma
ligação TLS/SSL no Serviço de Aplicações Azure.
Testar no browser
Navegue para o nome ou nomes DNS que configurou anteriormente (por exemplo, contoso.com ,
www.contoso.com , sub1.contoso.com e sub2.contoso.com ).
Uma vez concluída a operação, a sua aplicação deve devolver http://contoso.com a página certa no caminho
raiz (por exemplo, ).
NOTE
Este artigo foi atualizado para utilizar o novo módulo AZ do Azure PowerShell. Pode continuar a utilizar o módulo
AzureRM, que continuará a receber correções de erros até, pelo menos, dezembro de 2020. Para obter mais informações
sobre o novo módulo Az e a compatibilidade do AzureRM, veja Apresentação do novo módulo Az do Azure PowerShell.
Para obter instruções de instalação do módulo Az, veja Instalar o Azure PowerShell.
O comando seguinte adiciona um nome DNS personalizado configurado a uma aplicação do Serviço de
Aplicações.
Set-AzWebApp `
-Name <app_name> `
-ResourceGroupName <resource_group_name> `
-HostNames @("<fully_qualified_domain_name>","<app_name>.azurewebsites.net")
Para obter mais informações, veja Assign a custom domain to a web app (Atribuir um domínio personalizado a
uma aplicação Web).
Passos seguintes
Neste tutorial, ficou a saber como:
Mapear um subdomínio com um registo CNAME
Mapear um domínio de raiz com um registo A
Mapear um domínio de caráter universal com um registo CNAME
Redirecionar o URL predefinido para um diretório personalizado
Automatizar o mapeamento de domínios com scripts
Avance para o próximo tutorial para aprender a ligar um certificado Personalizado TLS/SSL a uma aplicação
web.
Proteja um nome DNS personalizado com uma ligação TLS/SSL no Serviço de Aplicações Azure
Proteja um nome DNS personalizado com uma
ligação TLS/SSL no Serviço de Aplicações Azure
01/05/2020 • 15 minutes to read • Edit Online
Este artigo mostra-lhe como proteger o domínio personalizado na sua app de serviço de aplicação ou
aplicação de função do App Service, criando um certificado vinculativo. Quando terminar, pode aceder à sua
aplicação https:// App Service no ponto final para https://www.contoso.com o seu nome DNS personalizado
(por exemplo, ).
Pré-requisitos
Para seguir este guia:
Criar uma aplicação do Serviço de Aplicações
Mapeie um nome de domínio para a sua app ou compre e configure-o em Azure
Adicione um certificado privado à sua aplicação
NOTE
A maneira mais fácil de adicionar um certificado privado é criar um Certificado Gerido por Serviço de Aplicações gratuito
(Pré-visualização).
Preparar a sua aplicação Web
Para criar encadernações de segurança personalizadas ou ativar certificados de cliente para a sua app App
Service, o seu plano de Serviço de Aplicações deve estar no nível Básico , Standard , Premium ou Isolado.
Neste passo, vai confirmar que a aplicação Web está no escalão de preço suportado.
Iniciar sessão no Azure
Abra o portal Azure.
Navegue até à sua aplicação Web
Procure e selecione Serviços de Aplicações .
Confirme que a aplicação Web não está no escalão F1 ou D1 . O escalão atual da aplicação é realçado com uma
caixa azul-escura.
O SSL personalizado não é suportado nos escalões F1 ou D1 . Se precisar de aumentar verticalmente, siga os
passos na secção seguinte. Caso contrário, feche a página Scale up e salte a secção de plano seletiva para
cima.
Aumentar verticalmente o seu plano do Serviço de Aplicações
Selecione qualquer uma das camadas não gratuitas (B1 , B2 , B3 ou qualquer camada na categoria Produção ).
Para obter opções adicionais, clique em Ver opções adicionais .
Clique em Aplicar .
Quando vir a notificação seguinte, significa que a operação de dimensionamento está completa.
No Domínio Personalizado, selecione o domínio personalizado para o que pretende adicionar uma ligação.
Se a sua aplicação já tiver um certificado para o domínio personalizado selecionado, vá diretamente à Create
Binding. Caso contrário, continua.
Adicione um certificado para domínio personalizado
Se a sua aplicação não tiver certificado para o domínio personalizado selecionado, então tem duas opções:
Carregar Cer tificado PFX - Siga o fluxo de trabalho no Upload de um certificado privadoe, em seguida,
selecione esta opção aqui.
Certificado de serviço de aplicações de impor tação - Siga o fluxo de trabalho na Importação de um
certificado de Serviço de Aplicaçõese, em seguida, selecione esta opção aqui.
NOTE
Também pode criar um certificado gratuito (Pré-visualização) ou importar um certificado de cofre de chave,mas deve
fazê-lo separadamente e depois voltar ao diálogo de ligação TLS/SSL.
Criar encadernação
Utilize a tabela seguinte para o ajudar a configurar a ligação TLS no diálogo de ligação TLS/SSL e, em
seguida, clique em Adicionar Encadernação .
Uma vez concluída a operação, o estado TLS/SSL do domínio personalizado é alterado para Secure .
NOTE
Um estado seguro nos domínios Personalizados significa que está protegido com um certificado, mas o Serviço de
Aplicações não verifica se o certificado é auto-assinado ou expirado, por exemplo, o que também pode fazer com que os
navegadores mostrem um erro ou aviso.
Tester HTTPS
Em vários navegadores, https://<your.custom.domain> navegue para verificar se serve a sua aplicação.
O seu código de aplicação pode inspecionar o protocolo através do cabeçalho "x-appservice-proto". O
cabeçalho terá http um https valor de ou .
NOTE
Se a sua aplicação lhe der erros de validação de certificados, provavelmente está a usar um certificado auto-assinado.
Se não for esse o caso, poderá ter deixou de fora certificados intermédios quando exportou o certificado para o ficheiro
PFX.
Prevenir alterações ip
O seu endereço IP de entrada pode alterar-se quando elimina uma ligação, mesmo que essa ligação seja IP
SSL. Isto é especialmente importante quando renova um certificado que já está numa ligação IP SSL. Para
evitar uma alteração de endereço IP da sua aplicação, siga estes passos por ordem:
1. Carregar o novo certificado.
2. Vincular o novo certificado com o domínio personalizado que pretende sem eliminar os antigo. Esta ação
substitui o enlace em vez de remover o antigo.
3. Eliminar o certificado antigo.
Impor HTTPS
Por padrão, qualquer pessoa ainda pode aceder à sua aplicação usando HTTP. Pode redirecionar todos os
pedidos HTTP para a porta HTTPS.
Na página da sua aplicação, na navegação à esquerda, selecione as definições SSL . Em seguida, em HTTPS
Apenas , selecione Ativado .
Quando a operação for concluída, navegue para um dos URLs HTTP que apontam para a sua aplicação. Por
exemplo:
http://<app_name>.azurewebsites.net
http://contoso.com
http://www.contoso.com
fqdn=<replace-with-www.{yourdomain}>
pfxPath=<replace-with-path-to-your-.PFX-file>
pfxPassword=<replace-with-your=.PFX-password>
resourceGroup=myResourceGroup
webappname=mywebapp$RANDOM
# Create an App Service plan in Basic tier (minimum required by custom domains).
az appservice plan create --name $webappname --resource-group $resourceGroup --sku B1
# Before continuing, go to your DNS configuration UI for your custom domain and follow the
# instructions at https://aka.ms/appservicecustomdns to configure a CNAME record for the
# hostname "www" and point it your web app's default domain name.
PowerShell
$fqdn="<Replace with your custom domain name>"
$pfxPath="<Replace with path to your .PFX file>"
$pfxPassword="<Replace with your .PFX password>"
$webappname="mywebapp$(Get-Random)"
$location="West Europe"
# Before continuing, go to your DNS configuration UI for your custom domain and follow the
# instructions at https://aka.ms/appservicecustomdns to configure a CNAME record for the
# hostname "www" and point it your web app's default domain name.
# Upgrade App Service plan to Basic tier (minimum required by custom SSL certificates)
Set-AzAppServicePlan -Name $webappname -ResourceGroupName $webappname `
-Tier Basic
Mais recursos
Utilize um certificado TLS/SSL no seu código no Serviço de Aplicações Azure
FAQ : Certificados de serviço de aplicações
Tutorial: Adicionar a CDN do Azure a uma aplicação
Web do Serviço de Aplicações do Azure
30/04/2020 • 13 minutes to read • Edit Online
Este tutorial mostra como adicionar a Rede de Entrega de Conteúdo (CDN) do Azure a uma aplicação Web no
Serviço de Aplicações do Azure. As Aplicações Web são um serviço para o alojamento de aplicações Web, APIs
REST e back-ends móveis.
Segue a home page do site HTML estático de exemplo com que irá trabalhar:
Pré-requisitos
Para concluir este tutorial:
Instalar o Git
Instalar o Azure CLI
Se não tiver uma subscrição do Azure,crie uma conta gratuita antes de começar.
Na página Ser viço de Aplicações , na secção Definições , selecione Redes > Configurar a CDN do Azure
para a sua aplicação .
Na página Azure Content Deliver y Network (Rede de Entrega de Conteúdos do Azure), indique as definições
Novo ponto final conforme especificado na tabela.
Nome do ponto final da CDN Qualquer nome que é exclusivo no Acede aos seus recursos em cache no *
domínio azureedge.net <nome>final*de domínio
.azureedge.net.
http://<appname>.azurewebsites.net/css/bootstrap.css
http://<endpointname>.azureedge.net/css/bootstrap.css
http://<endpointname>.azureedge.net/index.html
Será apresentada a mesma página que executou anteriormente numa aplicação Web do Azure. A CDN do Azure
obteve os ativos da aplicação Web de origem e está a servi-los a partir do ponto final da CDN
Para se certificar de que esta página está colocada em cache no CDN, atualize-a. Por vezes são necessários dois
pedidos para o mesmo recurso, para o CDN colocar em cache os conteúdos solicitados.
Para obter mais informações sobre a criação de perfis de CDN do Azure e os pontos finais, consulte Introdução ao
Azure CDN.
Remover a CDN
A CDN atualiza periodicamente os respetivos recursos da aplicação Web de origem consoante a configuração de
tempo de duração (TTL). O TTL predefinido é de sete dias.
Por vezes, poderá precisar de atualizar a CDN antes de expirar o TTL; por exemplo, ao implementar conteúdo
atualizado na aplicação Web. Para acionar uma atualização, remova manualmente os recursos da CDN.
Nesta secção do tutorial, implemente uma alteração na aplicação Web e remova o CDN para acionar o CDN para
atualizar a respetiva cache.
Implementar uma alteração na aplicação Web
Abra o ficheiro index.html e adicione -V2 ao cabeçalho H1, conforme mostrado no seguinte exemplo:
Depois de concluída a implementação, navegue para o URL da aplicação Web para ver a alteração.
http://<appname>.azurewebsites.net/index.html
Se navegar para o URL de ponto final da CDN da home page, não verá a alteração porque a versão em cache na
CDN ainda não expirou.
http://<endpointname>.azureedge.net/index.html
Introduza os caminhos do conteúdo que quer remover. Pode transmitir um caminho de ficheiro completo para
remover um ficheiro individual ou um segmento de caminho para remover e atualizar todo o conteúdo numa
pasta. Como alterou o index.html, certifique-se de que está num dos caminhos.
Na parte inferior da página, selecione Remover .
Certifique -se de que a CDN é atualizada
Aguarde até que o pedido de remoção conclua o processamento, que demora normalmente alguns minutos. Para
ver o estado atual, selecione o ícone da campainha na parte superior da página.
Ao navegar para o URL de ponto final da CDN para index.html, verá o V2 que adicionou ao título na home page,
que indica que a cache da CDN foi atualizada.
http://<endpointname>.azureedge.net/index.html
Para obter mais informações, consulte Remover um ponto final do Azure CDN.
http://<endpointname>.azureedge.net/index.html?q=1
A CDN do Azure devolve o conteúdo da aplicação Web atual, que inclui V2 no cabeçalho.
Para se certificar de que esta página está colocada em cache no CDN, atualize-a.
Abra index.html, altere V2 para V3 e, em seguida, implemente a alteração.
Num browser, aceda ao URL de ponto final da CDN com uma nova cadeia de consulta, como q=2 . A CDN do Azure
obtém o ficheiro index.html atual e apresenta V3. No entanto, se navegar para o ponto final da CDN com a cadeia
de consulta q=1 , verá V2.
http://<endpointname>.azureedge.net/index.html?q=2
http://<endpointname>.azureedge.net/index.html?q=1
Este resultado mostra que cada cadeia de consulta é tratada de forma diferente:
q=1 foi utilizado antes, pelo que os conteúdos armazenados em cache são devolvidos (V2).
q=2 é novo, pelo que os conteúdos mais recentes da aplicação Web são obtidos e devolvidos (V3).
Para obter mais informações, consulte Control Azure CDN caching behavior with query strings(Controlar o
comportamento de colocação em cache do Azure CDN com cadeias de consulta).
Limpar recursos
Nos passos anteriores, criou os recursos do Azure num grupo de recursos. Se achar que não vai precisar destes
recursos no futuro, execute o seguinte comando no Cloud Shell para eliminar o grupo de recursos:
Passos seguintes
O que aprendeu:
Criar um ponto final da CDN.
Atualizar ativos em cache.
Utilize cadeias de consulta para controlar versões em cache.
Saiba como otimizar o desempenho da CDN nos seguintes artigos:
Tutorial: Adicionar um domínio personalizado ao ponto final da CDN do Azure
Tutorial: Autenticar e autorizar utilizadores ponto a
ponto no Serviço de Aplicações do Azure
01/05/2020 • 30 minutes to read • Edit Online
O Serviço de Aplicações do Azure oferece um serviço de alojamento na Web altamente dimensionável e com
correção automática. Além disso, o Serviço de Aplicações tem suporte incorporado para autenticação e
autorização de utilizadores. Este tutorial mostra como proteger as suas aplicações com a autenticação e
autorização do Serviço de Aplicações. Usa uma aplicação ASP.NET Core com uma frente angular.js como exemplo.
A autenticação e autorização do Serviço de Aplicações suportam todos os runtimes de linguagens e pode seguir
o tutorial para aprender a aplicá-las na sua linguagem preferida.
Também lhe mostra como proteger uma aplicação multicamadas ao aceder a uma API de back-end protegida em
nome do utilizador autenticado, a partir de código do servidor e de código do browser.
Estes são apenas alguns dos cenários possíveis de autenticação e autorização no Serviço de Aplicações.
Eis uma lista mais completa do que vai aprender no tutorial:
Ativar a autenticação e autorização incorporadas
Proteger aplicações contra pedidos não autenticados
Utilizar o Azure Active Directory como o fornecedor de identidade
Aceder a uma aplicação remota em nome do utilizador com sessão iniciada
Proteger chamadas de serviço para serviço com a autenticação de tokens
Utilizar tokens de acesso a partir do código de servidor
Utilizar tokens de acesso a partir do código de cliente (browser)
Pode seguir os passos neste tutorial em macOS, Linux e Windows.
Se não tiver uma subscrição do Azure,crie uma conta gratuita antes de começar.
Pré-requisitos
Para concluir este tutorial:
Instalar o Git
Instale o mais recente .NET Core 3.1 SDK
A saída JSON mostra null a palavra-passe como . Se obtiver o erro 'Conflict'. Details: 409 , altere o nome de
utilizador. Se obtiver o 'Bad Request'. Details: 400 erro, utilize uma palavra-passe mais forte.
Grave o seu nome de utilizador e palavra-passe para utilizar para implementar as suas aplicações web.
Criar recursos do Azure
No Cloud Shell, execute os seguintes comandos para criar duas aplicações Web. Substitua a-z 0-9 - _ <_ o
nome da aplicação frontal>e _ <o nome da aplicação de back-end>_ por dois nomes de aplicativos globalmente
únicos (caracteres válidos são , e ). Para obter mais informações sobre cada comando, veja API RESTful com CORS
no Serviço de Aplicações do Azure.
NOTE
Guarde os URLs das instâncias remotas do Git para as aplicações de front-end e back-end, que são apresentados na saída
de az webapp create .
Na janela de terminal do local, execute os seguintes comandos do Git para implementar o mesmo código na
aplicação de front-end. Substitua _ <a implementaçãoLocalGitUrl-of-front-end-app>_ com o URL do comando Git
que guardou dos recursos Create Azure.
http://<back-end-app-name>.azurewebsites.net
http://<front-end-app-name>.azurewebsites.net
NOTE
Se a aplicação se reiniciar, poderá ter reparado que os dados novos foram apagados. Este comportamento é predefinido,
porque a aplicação ASP.NET Core de exemplo utiliza uma base de dados dentro da memória.
Encontre o método que está [HttpGet] decorado e substitua o código dentro do aparelho encaracolado com:
A primeira linha faz uma chamada de GET /api/Todo para a aplicação API de back-end.
Em seguida, encontre o método [HttpGet("{id}")] que está decorado e substitua o código dentro do aparelho
encaracolado por:
A primeira linha faz uma chamada de GET /api/Todo/{id} para a aplicação API de back-end.
Em seguida, encontre o método [HttpPost] que está decorado e substitua o código dentro do aparelho
encaracolado por:
A primeira linha faz uma chamada de POST /api/Todo para a aplicação API de back-end.
Em seguida, encontre o método [HttpPut("{id}")] que está decorado e substitua o código dentro do aparelho
encaracolado por:
A primeira linha faz uma chamada de PUT /api/Todo/{id} para a aplicação API de back-end.
Em seguida, encontre o método [HttpDelete("{id}")] que está decorado e substitua o código dentro do
aparelho encaracolado por:
A primeira linha faz uma chamada de DELETE /api/Todo/{id} para a aplicação API de back-end.
Guarde todas as alterações. Na janela de terminal do local, implemente as alterações na aplicação de front-end
com os seguintes comandos do Git:
git add .
git commit -m "call back-end API"
git push frontend master
Verificar as alterações
Navegue para http://<front-end-app-name>.azurewebsites.net e adicione alguns itens, como from front end 1 e
from front end 2 .
Selecione Express e, em seguida, aceite as definições padrão para criar uma nova aplicação AD e selecione OK .
Na página Autenticação/Autorização, selecione Guardar .
Assim que vir a Successfully saved the Auth Settings for <back-end-app-name> App notificação com a mensagem,
refresque a página do portal.
Selecione o Diretório Ativo Azure novamente e, em seguida, selecione a app Azure AD .
Copie a identificação do cliente da aplicação Azure AD para um bloco de notas. Vai precisar deste valor mais à
frente.
Se parar aqui, tem uma aplicação independente que já está assegurada pela autenticação e autorização do
Serviço de Aplicações. As restantes secções mostram-lhe como garantir uma solução multi-app "fluindo" o
utilizador autenticado da extremidade frontal para a extremidade traseira.
Ativar a autenticação e autorização na aplicação de front-end
Siga os mesmos passos para a aplicação de front-end, mas ignore o último. Não precisa da identificação do
cliente para a aplicação frontal.
Se preferir, navegue para http://<front-end-app-name>.azurewebsites.net . Deve ser agora direcionado para uma
página de início de sessão segura. Depois de iniciar sessão, ainda não consegue aceder aos dados da aplicação
back-end, porque a aplicação back-end agora requer o registo do Azure Ative Directory a partir da aplicação
frontal. Tens de fazer três coisas:
Conceder ao front-end o acesso ao back-end
Configurar o Serviço de Aplicações para devolver um token utilizável
Utilizar o token no seu código
TIP
Se se deparar com erros e reconfigurar as definições de autenticação/autorização da sua aplicação, os tokens no arquivo de
tokens poderão não ser regenerados a partir das definições novas. Para garantir que os tokens são regenerados, tem de
terminar sessão e reiniciá-la na aplicação. Uma forma fácil de fazê-lo é utilizar o browser no modo privado e fechá-lo e
reabri-lo no modo privado depois de alterar as definições nas suas aplicações.
Selecione Adicionar uma permissão e, em seguida, selecione APIs a minha organização usa > <> de nome
de aplicação final .
Na página de permissões do Request API para a aplicação back-end, selecione permissões delegadas e
user_impersonation, em seguida, selecione Adicionar permissões .
NOTE
Estes cabeçalhos são injetados em todas as linguagens suportadas. Pode aceder aos mesmos através da norma padrão de
cada linguagem.
_client.DefaultRequestHeaders.Accept.Clear();
_client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", Request.Headers["X-MS-TOKEN-AAD-ACCESS-TOKEN"]);
}
Este código adiciona o cabeçalho HTTP padrão Authorization: Bearer <access-token> a todas as chamadas à API
remotas. No ASP.NET Core MVC solicitar OnActionExecuting o gasoduto de execução, executa pouco antes da
respetiva ação, pelo que cada uma das suas chamadas api cessantes apresenta agora o sinal de acesso.
Guarde todas as alterações. Na janela de terminal do local, implemente as alterações na aplicação de front-end
com os seguintes comandos do Git:
git add .
git commit -m "add authorization header for server code"
git push frontend master
TIP
Esta secção utiliza os métodos HTTP padrão para demonstrar as chamadas HTTP seguras. No entanto, pode utilizar a
Microsoft Authentication Library para o JavaScript para ajudar a simplificar o padrão de aplicação Angular.js.
Configurar o CORS
Na Cloud Shell, ative o CORS no URL az webapp cors add do seu cliente utilizando o comando. Substitua _ <_ o
nome da aplicação de trás para a frente>e _ <_ o nome da aplicação frontal>espaços reservados.
Este passo não está relacionado com a autenticação e autorização. No entanto, tem de segui-lo para que o
browser possa permitir as chamadas à API em vários domínios a partir da aplicação Angular.js. Para obter mais
informações, veja Adicionar a funcionalidade CORS.
Apontar a aplicação Angular.js para a API de back-end
No repositório local, abra wwwroot/index.html.
Na Linha 51, apiEndpoint delineie a variável para https://<back-end-app-name>.azurewebsites.net o URL HTTPS da
sua aplicação back-end (). Substitua>de nome de aplicação de _ <back-end_ com o nome da aplicação no Serviço
de Aplicações.
No repositório local, abra wwwroot/app/scripts/todoListSvc.js e verifique se apiEndpoint está anexado a todas as
chamadas à API. A sua aplicação Angular.js está agora a chamar as APIs de back-end.
Adicionar o token de acesso às chamadas à API
Em wwwroot/app/scripts/todoListSvc.js, acima da lista de chamadas à API (em cima da linha
getItems : function(){ ), adicione a seguinte função à lista:
setAuth: function (token) {
$http.defaults.headers.common['Authorization'] = 'Bearer ' + token;
},
Esta função é chamada para definir o cabeçalho Authorization predefinido com o token de acesso. Vai chamá-la
no próximo passo.
No repositório local, abra wwwroot/app/scripts/app.js e localize o seguinte código:
$routeProvider.when("/Home", {
controller: "todoListCtrl",
templateUrl: "/App/Views/TodoList.html",
}).otherwise({ redirectTo: "/Home" });
$routeProvider.when("/Home", {
controller: "todoListCtrl",
templateUrl: "/App/Views/TodoList.html",
resolve: {
token: ['$http', 'todoListSvc', function ($http, todoListSvc) {
return $http.get('/.auth/me').then(function (response) {
todoListSvc.setAuth(response.data[0].access_token);
return response.data[0].access_token;
});
}]
},
}).otherwise({ redirectTo: "/Home" });
A nova alteração adiciona o mapeamento resolve que chama /.auth/me e define o token de acesso. Confirma
que tem o token de acesso antes de instanciar o controlador todoListCtrl . Dessa forma, todas as chamadas à
API pelo controlador incluem o token.
Implementar as atualizações e testar
Guarde todas as alterações. Na janela de terminal do local, implemente as alterações na aplicação de front-end
com os seguintes comandos do Git:
git add .
git commit -m "add authorization header for Angular"
git push frontend master
Navegue novamente até https://<front-end-app-name>.azurewebsites.net . Deverá ser agora capaz de criar, ler,
atualizar e eliminar os dados da aplicação de back-end, diretamente na aplicação Angular.js.
Parabéns! O código do cliente está agora a aceder aos dados do back-end em nome do utilizador autenticado.
Limpar recursos
Nos passos anteriores, criou os recursos do Azure num grupo de recursos. Se achar que não vai precisar destes
recursos no futuro, execute o seguinte comando no Cloud Shell para eliminar o grupo de recursos:
az group delete --name myAuthResourceGroup
Passos seguintes
O que aprendeu:
Ativar a autenticação e autorização incorporadas
Proteger aplicações contra pedidos não autenticados
Utilizar o Azure Active Directory como o fornecedor de identidade
Aceder a uma aplicação remota em nome do utilizador com sessão iniciada
Proteger chamadas de serviço para serviço com a autenticação de tokens
Utilizar tokens de acesso a partir do código de servidor
Utilizar tokens de acesso a partir do código de cliente (browser)
Avance para o próximo tutorial para aprender a mapear um nome DNS personalizado para a sua aplicação.
Mapeie um nome dNS personalizado existente para o Serviço de Aplicações Azure
Tutorial: Envie e-mail e invoque outros processos de
negócio do App Service
30/04/2020 • 14 minutes to read • Edit Online
Neste tutorial, aprende a integrar a sua app de Serviço de Aplicações com os seus processos de negócio. Isto é
comum a cenários de aplicações web, tais como:
Enviar e-mail de confirmação para uma transação
Adicionar utilizador ao grupo do Facebook
Ligue-se a sistemas de terceiros como SAP, SalesForce, etc.
Trocar mensagens B2B padrão
Neste tutorial, envia e-mails com o Gmail a partir da sua app App Service utilizando aplicações da Azure Logic.
Existem outras formas de enviar e-mails de uma aplicação web, como a configuração SMTP fornecida pelo seu
enquadramento linguístico. No entanto, as Aplicações Lógicas trazem muito mais energia à sua aplicação App
Service sem adicionar complexidade ao seu código. Logic Apps fornece uma interface de configuração simples para
as integrações de negócios mais populares, e a sua aplicação pode chamá-las a qualquer momento com um pedido
HTTP.
Pré-requisito
Implemente uma aplicação com o enquadramento linguístico da sua escolha para o App Service. Para seguir um
tutorial para implementar uma aplicação de amostra, consulte abaixo:
ASP.NET
ASP.NET Core
Node.js
PHP
Python
Ruby
Tutorial: Criar uma aplicação ASP.NET no Azure com a Base de Dados SQL
{
"task": "<description>",
"due": "<date>",
"email": "<email-address>"
}
O esquema é agora gerado para os dados de pedido que pretende. Na prática, pode simplesmente capturar
os dados de pedidos reais que o seu código de aplicação gera e deixar que o Azure gere o esquema JSON
para si.
5. No topo do Logic Apps Designer, selecione Save .
Pode agora ver o URL do seu gatilho de pedido HTTP. Selecione o ícone da cópia para copiá-lo para posterior
utilização.
Esta definição de pedido http é um gatilho para qualquer coisa que você quer fazer nesta aplicação lógica,
seja o Gmail ou qualquer outra coisa. Mais tarde, irá invocar este URL na sua aplicação App Service. Para
obter mais informações sobre o gatilho do pedido, consulte a referência de pedido/resposta HTTP.
6. Na parte inferior do designer, clique em Novo passo, digite o Gmail na caixa de pesquisa de ações e
encontre e selecione Enviar e-mail (V2) .
TIP
Pode procurar outros tipos de integrações, tais como SendGrid, MailChimp, Office 365 e SalesForce. Para mais
informações, consulte a documentação das Aplicações Lógicas.
7. No diálogo gmail, selecione Iniciar sessão e iniciar sessão na conta do Gmail a partir da sua deseja enviar
o e-mail.
8. Uma vez inscrito, clique na caixa de texto para e o diálogo de conteúdo dinâmico é automaticamente aberto.
9. Junto ao pedido Quando um pedido HTTP é recebido, selecione Ver mais .
Deverá agora ver as três propriedades dos dados json da sua amostra que utilizou anteriormente. Neste
passo, utiliza estas propriedades a partir do pedido http para construir um e-mail.
10. Uma vez que está a selecionar o valor para o campo To, escolha e-mail . Se desejar, altere o diálogo de
conteúdo dinâmico clicando em Adicionar conteúdo dinâmico .
14. Em seguida, adicione uma resposta http assíncrona ao gatilho HTTP. Entre o gatilho HTTP e a + ação do
Gmail, clique no sinal e selecione Adicionar um ramo paralelo .
No seu código, faça um post HTTP padrão no URL utilizando qualquer idioma cliente HTTP que esteja disponível
para o seu quadro linguístico, com a seguinte configuração:
O organismo de pedido contém o mesmo formato JSON que forneceu à sua aplicação lógica:
{
"task": "<description>",
"due": "<date>",
"email": "<email-address>"
}
Se estiver a testar este código na aplicação de amostras para tutorial: Construa uma aplicação ASP.NET em
Azurecom Todo base de dados SQL, poderá usá-lo para enviar uma confirmação de e-mail na ação Create, depois
de adicionado o item. Para utilizar o código assíncrono acima, converta a ação Create em assíncrona.
Mais recursos
Tutorial: Alojar uma API RESTful com CORS no Serviço de Aplicações do Azure
HTTP pedido/referência de resposta para Aplicações Lógicas
Quickstart: Crie o seu primeiro fluxo de trabalho utilizando aplicações da Azure Logic - portal Azure
Amostras cli para serviço de aplicações Azure
30/04/2020 • 5 minutes to read • Edit Online
A tabela seguinte inclui ligações para scripts bash criados com a CLI do Azure.
Criar aplicação
Criar uma aplicação e implementar ficheiros com FTP Cria uma aplicação de Serviço de Aplicações e implementa um
ficheiro utilizando FTP.
Criar uma aplicação e implementar código a partir do GitHub Cria uma aplicação de Serviço de Aplicações e implementa
código a partir de um repositório público do GitHub.
Criar uma app com implantação contínua do GitHub Cria uma aplicação de Serviço de Aplicações com publicação
contínua a partir de um repositório GitHub que possui.
Criar uma aplicação e implementar código a partir de um Cria uma aplicação de Serviço de Aplicações e configura o
repositório git local code push de um repositório git local.
Criar uma app e implementar código para um ambiente de Cria uma aplicação de Serviço de Aplicações com uma ranhura
encenação de implementação para a realização de alterações de código.
Crie uma aplicação ASP.NET Core num recipiente Dodocker Cria uma aplicação de Serviço de Aplicações no Linux e
carrega uma imagem do Docker do Docker Hub.
Configurar aplicação
Mapear um domínio personalizado para uma aplicação Cria uma aplicação de Serviço de Aplicações e mapeia-lhe um
nome de domínio personalizado.
Ligue um certificado Personalizado TLS/SSL a uma aplicação Cria-lhe uma aplicação de Serviço de Aplicações e liga-lhe o
certificado TLS/SSL de um nome de domínio personalizado.
Dimensionar aplicação
Escala risadamente uma aplicação Cria uma aplicação de Serviço de Aplicações e escala-a em 2
instâncias.
Escala uma app em todo o mundo com uma arquitetura de Cria duas aplicações do App Service em duas regiões
alta disponibilidade geográficas diferentes e disponibiliza-as através de um único
ponto final usando o Azure Traffic Manager.
Proteger app
Integrar com o Portal de Aplicação Azure Cria uma aplicação de Serviço de Aplicações e integra-a com o
Application Gateway utilizando restrições de ponto final de
serviço e acesso.
Ligar uma aplicação a uma conta de armazenamento Cria uma aplicação do Serviço de Aplicações e uma conta de
armazenamento e, em seguida, adiciona a cadeia de ligação de
armazenamento às definições da aplicação.
Ligue uma aplicação a um Azure Cache para Redis Cria uma aplicação de Serviço de Aplicações e um Cache
Azure para Redis, em seguida, adiciona os detalhes da ligação
redis às definições da aplicação.)
Ligue uma aplicação ao Cosmos DB Cria uma aplicação de Serviço de Aplicações e um Cosmos DB,
depois adiciona os detalhes da ligação Cosmos DB às
definições da aplicação.
Efetuar cópia de segurança de uma aplicação Cria uma aplicação de Serviço de Aplicações e cria uma cópia
de segurança única para o mesmo.
Criar um backup agendado para uma aplicação Cria uma aplicação de Serviço de Aplicações e cria uma cópia
de segurança agendada para o mesmo.
Restaura uma aplicação a partir de uma cópia de segurança Restaura uma aplicação do Serviço de Aplicações a partir de
uma cópia de segurança.
Monitorizar aplicação
Monitorize uma aplicação com registos de servidores web Cria uma aplicação de Serviço de Aplicações, permite o registo
e descarrega os registos para a sua máquina local.
Amostras powerShell para serviço de aplicações
Azure
30/04/2020 • 4 minutes to read • Edit Online
A tabela seguinte inclui links para scripts PowerShell construídos com o Azure PowerShell.
Criar aplicação
Criar uma aplicação com implementação do GitHub Cria uma aplicação de Serviço de Aplicações que retira código
do GitHub.
Criar uma app com implantação contínua do GitHub Cria uma aplicação de Serviço de Aplicações que implementa
continuamente código a partir do GitHub.
Criar uma app e implementar código com FTP Cria uma aplicação de Serviço de Aplicações e faz upload de
ficheiros de um diretório local utilizando FTP.
Criar uma aplicação e implementar código a partir de um Cria uma aplicação de Serviço de Aplicações e configura o
repositório git local code push de um repositório git local.
Criar uma app e implementar código para um ambiente de Cria uma aplicação de Serviço de Aplicações com uma ranhura
encenação de implementação para a realização de alterações de código.
Configurar aplicação
Mapear um domínio personalizado para uma aplicação Cria uma aplicação de Serviço de Aplicações e mapeia-lhe um
nome de domínio personalizado.
Ligue um certificado Personalizado TLS/SSL a uma aplicação Cria-lhe uma aplicação de Serviço de Aplicações e liga-lhe o
certificado TLS/SSL de um nome de domínio personalizado.
Dimensionar aplicação
Escala risadamente uma aplicação Cria uma aplicação de Serviço de Aplicações e escala-a em 2
instâncias.
Escala uma app em todo o mundo com uma arquitetura de Cria duas aplicações do App Service em duas regiões
alta disponibilidade geográficas diferentes e disponibiliza-as através de um único
ponto final usando o Azure Traffic Manager.
Ligue uma aplicação a uma Base de Dados SQL Cria uma aplicação de Serviço de Aplicações e uma base de
dados SQL e, em seguida, adiciona a cadeia de ligação à base
de dados às definições da aplicação.
Ligar uma aplicação a uma conta de armazenamento Cria uma aplicação do Serviço de Aplicações e uma conta de
armazenamento e, em seguida, adiciona a cadeia de ligação de
armazenamento às definições da aplicação.
Back up e restaurar app
Efetuar cópia de segurança de uma aplicação Cria uma aplicação de Serviço de Aplicações e cria uma cópia
de segurança única para o mesmo.
Criar um backup agendado para uma aplicação Cria uma aplicação de Serviço de Aplicações e cria uma cópia
de segurança agendada para o mesmo.
Eliminar uma cópia de segurança para uma aplicação Elimina uma cópia de segurança existente para uma aplicação.
Restaurar uma aplicação a partir de backup Restaura uma aplicação a partir de uma cópia de segurança
previamente concluída.
Restaurar um backup através de subscrições Restaura uma aplicação web a partir de uma cópia de
segurança em outra subscrição.
Monitorizar aplicação
Monitorize uma aplicação com registos de servidores web Cria uma aplicação de Serviço de Aplicações, permite o registo
e descarrega os registos para a sua máquina local.
Modelos de Gestor de Recursos Azure para serviço
de aplicações
30/04/2020 • 5 minutes to read • Edit Online
A tabela seguinte inclui links para modelos de Gestor de Recursos Azure para o Serviço de Aplicações Azure. Para
recomendações sobre como evitar erros comuns ao criar modelos de aplicações, consulte orientação sobre a
implementação de aplicações com modelosde Gestor de Recursos Azure .
Para conhecer a sintaxe jSON e propriedades para recursos de Serviços de Aplicações, consulte os tipos de recursos
Microsoft.Web.
Plano de serviço de aplicativos e aplicativo básico linux Implementa uma aplicação de Serviço de Aplicações que está
configurada para o Linux.
Plano de serviço de aplicativos e aplicativo básico do Windows Implementa uma aplicação do Serviço de Aplicações que está
configurada para windows.
App ligada a um repositório GitHub Implementa uma aplicação do App Service que retira código
do GitHub.
App com ranhuras de implementação personalizadas Implementa uma aplicação de Serviço de Aplicações com
ranhuras/ambientes de implementação personalizadas.
App com um domínio personalizado Implementa uma aplicação de Serviço de Aplicações com um
nome de anfitrião personalizado.
App com domínio personalizado e SSL Implementa uma aplicação de Serviço de Aplicações com um
nome de anfitrião personalizado e obtém um certificado de
aplicação da Key Vault para a ligação TLS/SSL.
App com extensão GoLang Implementa uma aplicação de Serviço de Aplicações com a
extensão do site Golang. Em seguida, pode executar as
aplicações Web desenvolvidas no Golang no Azure.
App com Java 8 e Tomcat 8 Implementa uma aplicação de Serviço de Aplicações com Java
8 e Tomcat 8 ativado. Em seguida, pode executar aplicações
Java no Azure.
App com integração regional vNet Implementa uma aplicação de Serviço de Aplicações com
integração vnet regional ativada.
App em Linux com MySQL Implementa uma aplicação de serviço de aplicações no Linux
com base de dados Azure para MySQL.
App em Linux com PostgreSQL Implementa uma aplicação de Serviço de Aplicações no Linux
com base de dados Azure para PostgreSQL.
App com base de dados SQL Implementa uma aplicação de Serviço de Aplicações e uma
base de dados SQL ao nível básico de serviço.
App com uma conexão de armazenamento Blob Implementa uma aplicação de Serviço de Aplicações com uma
cadeia de conexão de armazenamento Azure Blob. Em seguida,
pode utilizar o armazenamento Blob a partir da aplicação.
App com um Cache Azure para Redis Implementa uma aplicação de Serviço de Aplicações com um
Azure Cache para Redis.
Criar um Ambiente de Serviço de Aplicações v2 Cria um ambiente de Serviço de Aplicações v2 na sua rede
virtual.
Criar um ambiente de Serviço de Aplicações v2 com um Cria um ambiente de Serviço de Aplicações v2 na sua rede
endereço ILB virtual com um endereço de balanceador de carga interno
privado.
Configura o certificado SSL predefinido para um ambiente de Configura o certificado padrão TLS/SSL para um ambiente de
Serviço de Aplicações ILB ou um ambiente de Serviço de serviço de aplicações ILB ou um ambiente de serviço de
Aplicações v2 ILB aplicações ILB v2.
Definições políticas incorporadas da Azure Policy
para o Azure App Service
17/06/2020 • 21 minutes to read • Edit Online
Esta página é um índice de definições de política incorporadas da Azure Policy para o Azure App Service. Para obter
mais incorporados em Azure Policy para outros serviços, consulte definições incorporadas da Política Azure.
O nome de cada definição de política incorporada liga-se à definição de política no portal Azure. Utilize o link na
coluna GitHub para ver a fonte no repo GitHub da Política Azure.
Passos seguintes
Veja as incorporações no repositório do GitHub do Azure Policy.
Reveja a estrutura de definição do Azure Policy.
Veja Compreender os efeitos do Policy.
Descrição Geral do plano do Serviço de
Aplicações do Azure
30/04/2020 • 15 minutes to read • Edit Online
No Serviço de Aplicações, as aplicações são executadas num plano do Serviço de Aplicações. Um plano do
Serviço de Aplicações define um conjunto de recursos de computação para a execução da aplicação Web.
Estes recursos computacionais são análogos à exploração de servidores em hospedagem web convencional.
Uma ou mais aplicações podem ser configuradas para executar os mesmos recursos de computação (ou no
mesmo plano de Serviço de Aplicações).
Quando se cria um plano de Serviço de Aplicações numa determinada região (por exemplo, na Europa
Ocidental), é criado um conjunto de recursos computacionais para esse plano naquela região. Quaisquer
aplicações que você colocou neste plano de App Service executado nestes recursos computacionais como
definido pelo seu plano de Serviço de Aplicações. Cada Plano do Serviço de Aplicações define o seguinte:
Região (E.U.A. Oeste, E.U.A. Leste, etc.)
Número de instâncias de VM
Tamanho das instâncias de VM (pequena, média, grande)
Nível de preços (Grátis, Partilhado, Básico, Standard, Premium, PremiumV2, Isolado)
O nível de preços de um plano de Serviço de Aplicações determina quais as funcionalidades do App Service
que obtém e quanto paga pelo plano. Existem algumas categorias de escalões de preço:
Computação par tilhada : Grátis e Par tilhados , os dois níveis base, executa uma aplicação no mesmo
Azure VM que outras aplicações do App Service, incluindo apps de outros clientes. Estes escalões alocam
quotas de CPU a cada uma das aplicações que executam nos recursos partilhados e os recursos não
podem ser aumentados horizontalmente.
Computação dedicada : Os níveis Basic , Standard, Premium e PremiumV2 executam aplicações em
VMs Azure dedicados. Apenas as aplicações no mesmo plano do Serviço de Aplicações partilham os
mesmos recursos de computação. Quanto maior for o escalão, mais instâncias de VM estarão disponíveis
para escalamento horizontal.
Isolado : Este nível executa VMs Azure dedicados em redes virtuais azure dedicadas. Fornece isolamento
de rede em cima do isolamento computacional para as suas apps. Fornece as capacidades máximas de
escalamento horizontal.
NOTE
Os planos de hospedagem gratuitos e partilhados (pré-visualização) são os planos de hospedagem de níveis base que
funcionam nas mesmas máquinas virtuais Azure que outras aplicações do App Service. Algumas aplicações podem
pertencer a outros clientes. Estas camadas destinam-se a ser utilizadas apenas para efeitos de desenvolvimento e teste.
Cada nível também fornece um subconjunto específico de funcionalidades do Serviço de Aplicações. Estas
funcionalidades incluem domínios personalizados e certificados TLS/SSL, autoscalcificação, slots de
implementação, backups, integração do Gestor de Tráfego e muito mais. Quanto maior for o nível, mais
funcionalidades estão disponíveis. Para saber quais as funcionalidades suportadas em cada nível de preços,
consulte os detalhes do plano do App Service.
NOTE
O novo nível de preços PremiumV2 fornece VMs da série Dv2 com processadores mais rápidos, armazenamento SSD
e dupla relação memória-núcleo em comparação com o nível Standard. PremiumV2 também suporta maior escala
através do aumento da contagem de instâncias, ao mesmo tempo que fornece todas as capacidades avançadas
encontradas no plano Standard. Todas as funcionalidades disponíveis no nível Premium existente estão incluídas no
PremiumV2 .
Semelhante a outros níveis dedicados, estão disponíveis três tamanhos VM para este nível:
Pequeno (um núcleo CPU, 3,5 GiB de memória)
Médio (dois núcleos CPU, 7 GiB de memória)
Grande (quatro núcleos cpu, 14 GiB de memória)
Para obter informações sobre preços PremiumV2, consulte preços de serviço de aplicação.
Para começar com o novo nível de preços PremiumV2, consulte configure PremiumV2 tier for App Service.
NOTE
Se integrar o Serviço de Aplicações com outro serviço Azure, poderá ter de considerar os encargos destes outros
serviços. Por exemplo, se utilizar o Gestor de Tráfego Azure para escalar a sua aplicação geograficamente, o Azure Traffic
Manager também o cobra com base no seu uso. Para estimar o seu custo de serviços transversais em Azure, consulte a
calculadora de preços.
Este artigo descreve a funcionalidade comum do sistema operativo de base que está disponível para todas as
aplicações do Windows que funcionam no Serviço de Aplicações Azure. Esta funcionalidade inclui acesso a
ficheiros, rede e registo, e registos e eventos de diagnóstico.
NOTE
As aplicações Linux no App Service funcionam nos seus próprios contentores. Não é permitido o acesso ao sistema
operativo do hospedeiro, tem acesso à raiz do recipiente. Da mesma forma, para aplicações em execução em contentores
Windows,tem acesso administrativo ao contentor, mas não tem acesso ao sistema operativo anfitrião.
NOTE
Os planos de hospedagem gratuitos e partilhados (pré-visualização) são os planos de hospedagem de níveis base que
funcionam nas mesmas máquinas virtuais Azure que outras aplicações do App Service. Algumas aplicações podem
pertencer a outros clientes. Estas camadas destinam-se a ser utilizadas apenas para efeitos de desenvolvimento e teste.
Uma vez que o App Service suporta uma experiência de escala perfeita entre diferentes níveis, a configuração de
segurança aplicada para aplicações do App Service continua a ser a mesma. Isto garante que as aplicações não se
comportam de forma diferente, falhando de formainesperada, quando o plano do App Service muda de um nível
para outro.
Quadros de desenvolvimento
Os níveis de preços do Serviço de Aplicações controlam a quantidade de recursos computacionais (CPU,
armazenamento de discos, memória e saída de rede) disponíveis para apps. No entanto, a amplitude da
funcionalidade-quadro disponível para as aplicações continua a ser a mesma, independentemente dos níveis de
escala.
O App Service suporta uma variedade de estruturas de desenvolvimento, incluindo ASP.NET, asas clássicas,
node.js, PHP e Python - todos os quais funcionam como extensões dentro do IIS. De forma a simplificar e
normalizar a configuração de segurança, as aplicações do App Service normalmente executam os vários quadros
de desenvolvimento com as suas definições padrão. Uma abordagem para configurar aplicações poderia ter sido
personalizar a área de superfície da API e a funcionalidade para cada quadro de desenvolvimento individual. Em
vez disso, o App Service tem uma abordagem mais genérica, permitindo uma linha de base comum da
funcionalidade do sistema operativo, independentemente do quadro de desenvolvimento de uma aplicação.
As seguintes secções resumem os tipos gerais de funcionalidade do sistema operativo disponíveis para aplicações
do App Service.
Acesso a ficheiros
Existem várias unidades dentro do Serviço de Aplicações, incluindo unidades locais e unidades de rede.
Unidades locais
No seu cerne, o App Service é um serviço que funciona em cima da infraestrutura Azure PaaS (plataforma como
serviço). Como resultado, as unidades locais que estão "ligadas" a uma máquina virtual são os mesmos tipos de
unidade disponíveis para qualquer função de trabalhador que esteja em funcionamento em Azure. Isto inclui:
Uma unidade do sistema operativo (o D:\ unidade)
Uma unidade de aplicação que contém ficheiros Azure Package cspkg utilizados exclusivamente pelo App
Service (e inacessíveis aos clientes)
Uma unidade "utilizador" (o C:\ unidade), cujo tamanho varia dependendo do tamanho do VM.
É importante monitorizar a utilização do disco à medida que a sua aplicação cresce. Se a quota do disco for
atingida, pode ter efeitos adversos na sua aplicação. Por exemplo:
A aplicação pode lançar um erro indicando que não há espaço suficiente no disco.
Pode ver erros no disco ao navegar na consola Kudu.
A implantação de Azure DevOps
ERROR_NOT_ENOUGH_DISK_SPACE: Web deployment task failed. (Web Deploy detected insufficient space on disk) ou
Visual Studio pode falhar com .
A sua aplicação pode sofrer um desempenho lento.
Unidades de rede (também conhecidas como ações da CNU )
Um dos aspetos únicos do App Service que torna a implementação e manutenção de aplicações simples é que
todos os conteúdos dos utilizadores são armazenados num conjunto de ações da UNC. Este modelo mapeia bem
o padrão comum de armazenamento de conteúdo usado por ambientes de hospedagem web no local que têm
múltiplos servidores equilibrados em carga.
Dentro do Serviço de Aplicações, há uma série de ações da UNC criadas em cada centro de dados. Uma
percentagem do conteúdo do utilizador para todos os clientes em cada centro de dados é atribuída a cada ação da
CNU. Além disso, todos os conteúdos de ficheiros para a subscrição de um único cliente são sempre colocados na
mesma parte da CNU.
Devido ao funcionar dos serviços azure, a máquina virtual específica responsável pelo alojamento de uma parte
da CNU mudará ao longo do tempo. É garantido que as ações da CNU serão montadas por diferentes máquinas
virtuais, uma vez que são trazidas para cima e para baixo durante o curso normal das operações do Azure. Por
esta razão, as aplicações nunca devem fazer pressupostos codificados de que a informação da máquina num
caminho de ficheiro sem fim permanecerá estável ao longo do tempo. Em vez disso, devem usar o conveniente
caminho absoluto d:\home\site que o Serviço de Aplicações fornece. Este caminho absoluto falso fornece um
método portátil, app-e-user-agnóstico para se referir à própria app. Ao utilizar o D:\home\site, pode-se
transferir ficheiros partilhados de app para app sem ter de configurar um novo caminho absoluto para cada
transferência.
Tipos de acesso a ficheiros concedidos a uma app
A subscrição de cada cliente tem uma estrutura de diretório reservada numa participação específica da UNC
dentro de um centro de dados. Um cliente pode ter várias aplicações criadas dentro de um centro de dados
específico, pelo que todos os diretórios pertencentes a uma única subscrição de cliente são criados na mesma
quota da CNU. A parte pode incluir diretórios como os de registos de conteúdo, erro e diagnóstico, e versões
anteriores da app criada pelo controlo de fontes. Como seria de esperar, os diretórios de aplicações de um cliente
estão disponíveis para leitura e acesso de escrita em tempo de execução pelo código de aplicação da aplicação da
aplicação.
Nas unidades locais anexadas à máquina virtual que executa uma app, o App Service reserva um pedaço de
espaço no C:\ unidade para armazenamento local temporário específico de aplicativo. Embora uma aplicação
tenha acesso completo ao seu próprio armazenamento local temporário, esse armazenamento não se destina a
ser utilizado diretamente pelo código de aplicação. Pelo contrário, a intenção é fornecer armazenamento
temporário de ficheiros para quadros de iis e aplicações web. O Serviço de Aplicações também limita a
quantidade de armazenamento local temporário disponível para cada aplicação para evitar que as aplicações
individuais consumam quantidades excessivas de armazenamento de ficheiros locais.
Dois exemplos de como o Serviço de Aplicações utiliza armazenamento local temporário são o diretório para
ficheiros de ASP.NET temporários e o diretório para ficheiros comprimidos IIS. O sistema de compilação ASP.NET
utiliza o diretório "Ficheiros de ASP.NET Temporários" como localização temporária de cache de compilação. O IIS
utiliza o diretório "IIS Temporary ComprimE Files" para armazenar a saída de resposta comprimido. Ambos os
tipos de utilização de ficheiros (assim como outros) são remapeados no Serviço de Aplicações para
armazenamento local temporário por app. Este remapping garante que a funcionalidade continua como esperado.
Cada aplicação no App Service funciona como uma identidade de processo de trabalho de
https://www.iis.net/learn/manage/configuring-security/application-pool-identitiesbaixo privilégio aleatório
chamada "identidade de piscina de aplicações", descrita aqui: . O código de aplicação utiliza esta identidade para o
acesso básico apenas à unidade do sistema operativo (o D:\ unidade). Isto significa que o código de aplicação
pode listar estruturas comuns de diretório e ler ficheiros comuns sobre a unidade do sistema operativo. Embora
este possa parecer um nível de acesso um pouco amplo, os mesmos diretórios e ficheiros são acessíveis quando
você presta um papel de trabalhador em um serviço hospedado Azure e lê o conteúdo da unidade.
Acesso de ficheiros em várias instâncias
O diretório doméstico contém o conteúdo de uma aplicação, e o código de aplicação pode escrever-lhe. Se uma
aplicação for executado em várias instâncias, o diretório doméstico é partilhado entre todos os casos para que
todos os casos vejam o mesmo diretório. Assim, por exemplo, se uma aplicação guardar ficheiros carregados para
o diretório inicial, esses ficheiros estão imediatamente disponíveis para todas as instâncias.
Acesso à rede
O código de aplicação pode utilizar protocolos baseados em TCP/IP e UDP para efelo ligações de rede de saída a
pontos finais acessíveis à Internet que expõem serviços externos. As aplicações podem utilizar estes mesmos
protocolos para se conectarem a serviços dentro do Azure, por exemplo, estabelecendo ligações HTTPS à Base de
Dados SQL.
Existe também uma capacidade limitada para as apps estabelecerem uma ligação de loopback local, e ter uma app
a ouvir naquela tomada de loopback local. Esta funcionalidade existe principalmente para permitir aplicações que
ouvem as tomadas de loopback locais como parte da sua funcionalidade. Cada aplicação vê uma ligação
"privada". A aplicação "A" não pode ouvir uma tomada de loopback local estabelecida pela app "B".
Os tubos nomeados também são suportados como um mecanismo de comunicação inter-processo (IPC) entre
diferentes processos que executam coletivamente uma app. Por exemplo, o módulo IIS FastCGI baseia-se em
tubos nomeados para coordenar os processos individuais que executam páginas PHP.
Acesso ao registo
As aplicações têm acesso apenas a muito (embora não a toda) do registo da máquina virtual em que estão a
funcionar. Na prática, isto significa que as chaves de registo que permitem o acesso apenas a leitura ao grupo de
Utilizadores locais são acessíveis por apps. Uma área do registo que não é suportada atualmente para ler__ou
escrever acesso é a colmeia HKEY CURRENT USER.
O acesso por escrito ao registo está bloqueado, incluindo o acesso a quaisquer chaves de registo por utilizador. Do
ponto de vista da aplicação, o acesso ao registo nunca deve ser invocado no ambiente Azure, uma vez que as
aplicações podem (e fazem) ser migradas através de diferentes máquinas virtuais. O único armazenamento
recedível persistente que pode ser dependente de uma aplicação é a estrutura de diretório de conteúdos por app
armazenada nas ações da App Service UNC.
Mais informações
Caixa de areia azure App Service - As informações mais atualizadas sobre o ambiente de execução do Serviço de
Aplicações. Esta página é mantida diretamente pela equipa de desenvolvimento do Serviço de Aplicações.
Implementação de Boas Práticas
30/04/2020 • 14 minutes to read • Edit Online
Todas as equipas de desenvolvimento têm requisitos únicos que podem dificultar a implementação de um pipeline de implantação eficiente em qualquer serviço na nuvem.
Este artigo introduz os três principais componentes da implantação para o Serviço de Aplicações: fontes de implantação, oleodutos de construção e mecanismos de
implantação. Este artigo também abrange algumas boas práticas e dicas para pilhas de idiomas específicas.
Componentes de implantação
Fonte de Implantação
Uma fonte de implantação é a localização do seu código de aplicação. Para aplicações de produção, a fonte de implantação é geralmente um repositório hospedado por
software de controlo de versão como GitHub, BitBucket ou Azure Repos. Para cenários de desenvolvimento e teste, a fonte de implantação pode ser um projeto na sua
máquina local. O Serviço de Aplicações também suporta as pastas OneDrive e Dropbox como fontes de implementação. Embora as pastas de nuvem possam facilitar o início
com o App Service, não é tipicamente recomendado utilizar esta fonte para aplicações de produção a nível empresarial.
Pipeline de Compilação
Assim que decidires sobre uma fonte de implantação, o teu próximo passo é escolher um oleoduto de construção. Um pipeline de construção lê o seu código fonte a partir da
fonte de implementação e executa uma série de passos (como a compilação de código, minificação HTML e JavaScript, testes de execução e componentes de embalagem) para
obter a aplicação em estado de execução. Os comandos específicos executados pelo oleoduto dependem da sua pilha de linguagem. Estas operações podem ser executadas
num servidor de construção, como o Azure Pipelines, ou executadas localmente.
Mecanismo de Implantação
O mecanismo de implementação é a ação usada para colocar a sua aplicação incorporada no diretório /home/site/wwwroot da sua aplicação web. O diretório /wwwroot é um
local de armazenamento montado partilhado por todos os casos da sua aplicação web. Quando o mecanismo de implementação coloca a sua aplicação neste diretório, os
seus casos recebem uma notificação para sincronizar os novos ficheiros. O Serviço de Aplicações suporta os seguintes mecanismos de implementação:
Pontos finais kudu: Kudu é a ferramenta de produtividade de desenvolvedores de código aberto que funciona como um processo separado no Serviço de Aplicações
Windows, e como um segundo recipiente no Serviço de Aplicações Linux. Kudu lida com implementações contínuas e fornece pontos finais HTTP para implantação, como
zipdeploy.
FTP e WebDeploy: Utilizando as credenciais do seu site ou utilizador,pode carregar ficheiros via FTP ou WebDeploy. Estes mecanismos não passam por Kudu.
Ferramentas de implantação como pipelines Azure, Jenkins e plugins editor usam um destes mecanismos de implementação.
on:
push:
branches:
- <your-branch-name>
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: azure/container-actions/docker-login@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push the image tagged with the git commit hash
run: |
docker build . -t contoso/demo:${{ github.sha }}
docker push contoso/demo:${{ github.sha }}
No seu script, az login --service-principal faça login na utilização, fornecendo as informações do diretor. Em seguida, az webapp config container set pode utilizar para
definir o nome do recipiente, etiqueta, URL de registo e senha de registo. Abaixo estão alguns links úteis para você construir o seu processo CI recipiente.
Como iniciar sessão no Azure CLI no Circle CI
Este artigo contém recomendações de segurança para o Azure App Service. A implementação destas
recomendações irá ajudá-lo a cumprir as suas obrigações de segurança conforme descrito no nosso modelo de
responsabilidade partilhada e melhorará a segurança global das suas soluções web App. Para obter mais
informações sobre o que a Microsoft faz para cumprir as responsabilidades do prestador de serviços, leia a
segurança da infraestrutura azure.
Geral
REC O M EN DA Ç Ã O C O M EN TÁ RIO S
Desativar o acesso anónimo A menos que precise apoiar pedidos anónimos, desative o
acesso anónimo. Para obter mais informações sobre as opções
de autenticação do Serviço de Aplicações Azure, consulte
autenticação e autorização no Serviço de Aplicações Azure.
Proteja os recursos back-end com acesso autenticado Pode utilizar a identidade do utilizador ou utilizar uma
identidade de aplicação para autenticar um recurso de back-
end. Quando optar por utilizar uma identidade de aplicação,
utilize uma identidade gerida.
Proteção de dados
REC O M EN DA Ç Ã O C O M EN TÁ RIO S
Redirecione http para HTTPs Por padrão, os clientes podem ligar-se a aplicações web
utilizando http ou HTTPS. Recomendamos redirecionar http
para HTTPs porque HTTPS utiliza o protocolo SSL/TLS para
fornecer uma ligação segura, que é encriptada e autenticada.
REC O M EN DA Ç Ã O C O M EN TÁ RIO S
Encriptar a comunicação aos recursos do Azure Quando a sua aplicação se conecta aos recursos do Azure,
como a Base de Dados SQL ou o Armazenamento Azure,a
ligação permanece no Azure. Uma vez que a ligação passa pela
rede partilhada em Azure, deve sempre encriptar todas as
comunicações.
Requeiram a mais recente versão TLS possível Desde 2018 que as novas aplicações do Azure App Service
utilizam o TLS 1.2. Versões mais recentes de TLS incluem
melhorias de segurança em relação a versões de protocolo
mais antigas.
Proteger os dados das aplicações Não guarde segredos de aplicação, tais como credenciais de
base de dados, fichas API ou chaves privadas no seu código
ou ficheiros de configuração. A abordagem geralmente aceite
é acessá-las como variáveis ambientais usando o padrão
padrão na sua linguagem de eleição. No Serviço de Aplicações
Azure, pode definir variáveis ambientais através de
configurações de aplicações e cordas de ligação. As definições
de aplicativos e as cordas de ligação são armazenadas
encriptadas no Azure. As definições da aplicação só são
desencriptadas antes de serem injetadas na memória de
processo da sua aplicação quando a aplicação começar. As
chaves de encriptação são rodadas regularmente. Em
alternativa, pode integrar a sua aplicação Azure App Service
com o Azure Key Vault para uma gestão avançada de
segredos. Ao aceder ao Key Vault com uma identidade
gerida,a sua aplicação App Service pode aceder de forma
segura aos segredos de que necessita.
Redes
REC O M EN DA Ç Ã O C O M EN TÁ RIO S
Utilize o nível de preços isolado Com exceção do nível de preços isolado, todos os níveis
executam as suas aplicações na infraestrutura de rede
partilhada no Serviço de Aplicações Azure. O nível isolado dá-
lhe o isolamento total da rede executando as suas aplicações
dentro de um ambiente dedicado ao Serviço de Aplicações.
Um ambiente de serviço de aplicações funciona no seu próprio
exemplo de Rede Virtual Azure.
Utilize ligações seguras ao aceder aos recursos no local Pode utilizar ligações Híbridas, integração de redes virtuaisou
ambiente de serviço de aplicação para se conectar aos
recursos no local.
REC O M EN DA Ç Ã O C O M EN TÁ RIO S
Limitar a exposição ao tráfego da rede de entrada Os grupos de segurança da rede permitem-lhe restringir o
acesso à rede e controlar o número de pontos finais expostos.
Para mais informações, consulte Como Controlar o Tráfego de
Entrada para um Ambiente de Serviço de Aplicações.
Monitorização
REC O M EN DA Ç Ã O C O M EN TÁ RIO S
Use o nível padrão do Azure Security Center O Azure Security Center está integrado de forma nativa com o
Azure App Service. Pode fazer avaliações e fornecer
recomendações de segurança.
Passos seguintes
Consulte o seu fornecedor de candidaturas para ver se existem requisitos de segurança adicionais. Para obter mais
informações sobre o desenvolvimento de aplicações seguras, consulte documentação de desenvolvimento seguro.
Autenticação e autorização no Serviço de
Aplicações Azure e Funções Azure
13/05/2020 • 16 minutes to read • Edit Online
NOTE
Neste momento, ASP.NET Core não suporta atualmente a população do utilizador atual com a funcionalidade de
Autenticação/Autorização.
O Azure App Service fornece suporte de autenticação e autorização incorporado, para que possa inscrever os
utilizadores e aceder aos dados escrevendo o mínimo ou nenhum código na sua aplicação web, a API RESTful e
a traseira móvel, bem como as Funções Azure. Este artigo descreve como o Serviço de Aplicações ajuda a
simplificar a autenticação e a autorização para a sua aplicação.
A autenticação e a autorização seguras requerem uma compreensão profunda da segurança, incluindo a
federação, encriptação, gestão de tokens web JSON (JWT), tipos de subvenções,e assim por diante. O Serviço
de Aplicações fornece estes utilitários para que possa gastar mais tempo e energia em fornecer valor de
negócio ao seu cliente.
IMPORTANT
Não é obrigado a utilizar esta funcionalidade para autenticação e autorização. Pode utilizar as funcionalidades de
segurança agregadas no seu quadro web de eleição, ou pode escrever os seus próprios utilitários. No entanto, tenha em
mente que o Chrome 80 está a fazer alterações na sua implementação do SameSite para cookies (data de lançamento
em março de 2020), e a autenticação remota personalizada ou outros cenários que dependem da publicação de cookies
transsite podem quebrar quando os navegadores Chrome do cliente forem atualizados. A suticidade é complexa porque
precisa de suportar diferentes comportamentos do SameSite para diferentes navegadores.
As versões ASP.NET Core 2.1 e acima hospedadas pelo App Service já estão corrigidas para esta alteração de rutura e
manuseiem adequadamente o Chrome 80 e navegadores mais antigos. Além disso, o mesmo patch para ASP.NET
Quadro 4.7.2 está a ser implementado nos casos do Serviço de Aplicações ao longo de janeiro de 2020. Para mais
informações, incluindo como saber se a sua aplicação recebeu o patch, consulte a atualização de cookies do Mesmo Site
do Serviço de Aplicações Azure.
Para obter informações específicas para aplicações móveis nativas, consulte a autenticação do Utilizador e a
autorização para aplicações móveis com o Azure App Service.
Como funciona
O módulo de autenticação e autorização funciona na mesma caixa de areia que o seu código de aplicação.
Quando está ativado, todos os pedidos http que chegam passam por ele antes de serem tratados pelo seu
código de aplicação.
Este módulo lida com várias coisas para a sua aplicação:
Autentica os utilizadores com o fornecedor especificado
Valida, lojas e fichas refrescantes
Gere a sessão autenticada
Injeta informações de identidade em cabeçalhos de pedido
O módulo funciona separadamente do seu código de aplicação e é configurado utilizando as definições da
aplicação. Não são necessários SDKs, línguas específicas ou alterações ao código de aplicação.
Reclamações de utilizador/aplicação
Para todos os quadros linguísticos, o App Service disponibiliza as reclamações no token de entrada (seja de um
utilizador final autenticado ou de uma aplicação cliente) disponível para o seu código injetando-as nos
cabeçalhos de pedido. Para ASP.NET 4.6 aplicações, o Serviço de Aplicações povoa o ClaimsPrincipal.Current
com as alegações do utilizador autenticado, para que possa seguir o padrão de código .NET padrão, incluindo o
[Authorize] atributo. Da mesma forma, para aplicações PHP, o App Service povoa a _SERVER['REMOTE_USER']
variável. Para aplicações Java, as reclamações são acessíveis a partir do servlet Tomcat.
Para funções Azure, ClaimsPrincipal.Current não é povoado para o código .NET, mas ainda pode encontrar as
reclamações do utilizador nos cabeçalhos de pedido, ou obter o objeto do contexto de pedido ou mesmo
através de um parâmetro de ClaimsPrincipal ligação. Consulte trabalhar com as identidades dos clientes para
obter mais informações.
Para mais informações, consulte as reclamações dos utilizadoresdo Access.
Arquivo de tokens
O App Service fornece uma loja de token incorporada, que é um repositório de fichas que estão associadas aos
utilizadores das suas aplicações web, APIs ou aplicações móveis nativas. Quando ativa a autenticação com
qualquer fornecedor, esta loja token está imediatamente disponível para a sua aplicação. Se o seu código de
aplicação necessitar de aceder a dados destes fornecedores em nome do utilizador, tais como:
post para a linha temporal do Facebook do utilizador autenticado
ler os dados corporativos do utilizador usando a API do Microsoft Graph
Normalmente, tem de escrever código para recolher, armazenar e refrescar estes tokens na sua aplicação. Com
a loja de fichas, basta recuperar os tokens quando precisar e dizer ao Serviço de Aplicações para os refrescar
quando ficarem inválidos.
Os tokens id, tokens de acesso e tokens de atualização são cachepara a sessão autenticada, e são acessíveis
apenas pelo utilizador associado.
Se não precisar de trabalhar com fichas na sua aplicação, pode desativar a loja de fichas.
Exploração madeireira e rastreio
Se ativaro registo de pedidos, verá a autenticação e a autorização rastreia-os diretamente nos seus ficheiros de
registo. Se vir um erro de autenticação que não esperava, pode convenientemente encontrar todos os detalhes
olhando para os registos de aplicação existentes. Se ativar o rastreio de pedidos falhados,pode ver exatamente
qual o papel que o módulo de autenticação e autorização pode ter desempenhado num pedido falhado. Nos
registos de rastreio, procure referências a um módulo chamado EasyAuthModule_32/64 .
Fornecedores de identidade
O Serviço de Aplicações utiliza identidade federada, na qual um fornecedor de identidade de terceiros gere as
identidades dos utilizadores e o fluxo de autenticação para si. Cinco fornecedores de identidade estão
disponíveis por defeito:
F O RN EC EDO R P O N TO F IN A L DE IN SC RIÇ Ã O
Facebook /.auth/login/facebook
Google /.auth/login/google
Twitter /.auth/login/twitter
Quando permite a autenticação e autorização com um destes fornecedores, o seu ponto final de sessão está
disponível para autenticação do utilizador e para validação de fichas de autenticação do fornecedor. Pode
fornecer aos seus utilizadores qualquer número destas opções de sessão com facilidade. Também pode
integrar outro fornecedor de identidade ou a sua própria solução de identidade personalizada.
Fluxo de autenticação
O fluxo de autenticação é o mesmo para todos os fornecedores, mas difere consoante pretenda iniciar sessão
com o SDK do fornecedor:
Sem o fornecedor SDK: Os delegados de aplicação federaram o serviço de aplicação. Este é normalmente o
caso das aplicações do navegador, que podem apresentar a página de login do fornecedor ao utilizador. O
código do servidor gere o processo de entrada, pelo que também é chamado de fluxo de servidor ou fluxo
de servidor. Este caso aplica-se às aplicações do navegador. Aplica-se também a aplicações nativas que
assinam utilizadores na utilização do cliente de Aplicações Móveis SDK porque o SDK abre uma visão web
para iniciar sessão com a autenticação do App Service.
Com o fornecedor SDK: A aplicação inscreve os utilizadores manualmente no fornecedor e, em seguida,
envia o símbolo de autenticação ao Serviço de Aplicações para validação. Este é normalmente o caso de
aplicações sem navegador, que não podem apresentar a página de entrada do fornecedor ao utilizador. O
código de aplicação gere o processo de entrada, pelo que também é chamado fluxo de clientes ou fluxo de
cliente. Este caso aplica-se aos clientes REST APIs, Azure Functionse JavaScript, bem como aplicações de
navegador que precisam de mais flexibilidade no processo de entrada. Aplica-se também a aplicações
móveis nativas que assinam os utilizadores na utilização do SDK do fornecedor.
NOTE
As chamadas de uma aplicação de navegador fidedigna no Serviço de Aplicações para outro Rest API no Serviço de
Aplicações ou Funções Azure podem ser autenticadas usando o fluxo direcionado para o servidor. Para mais informações,
consulte Personalizar a autenticação e autorização no Serviço de Aplicações.
1. Iniciar sessão no utilizador Redireciona o cliente para O código do cliente assina o utilizador
/.auth/login/<provider> . diretamente com o SDK do fornecedor
e recebe um símbolo de autenticação.
Para obter informações, consulte a
documentação do fornecedor.
3. Estabelecer sessão autenticada O Serviço de Aplicações adiciona O Serviço de Aplicações devolve o seu
cookie autenticado à resposta. próprio símbolo de autenticação ao
código do cliente.
4. Servir conteúdo autenticado O cliente inclui cookie de autenticação O código do cliente apresenta token
em pedidos subsequentes (tratado de autenticação no X-ZUMO-AUTH
automaticamente pelo navegador). cabeçalho (tratado automaticamente
por SDKs clientes de Aplicações
Móveis).
Comportamento de autorização
No portal Azure,pode configurar a autorização do Serviço de Aplicações com vários comportamentos quando
o pedido de entrada não é autenticado.
Restringir o acesso desta forma aplica-se a todas as chamadas para a sua app, o que pode não ser desejável
para aplicações que pretendam uma página inicial publicamente disponível, como em muitas aplicações de
página única.
NOTE
A autenticação/autorização era anteriormente conhecida como Easy Auth.
Mais recursos
Tutorial: Autenticar e autorizar utilizadores de ponta a ponta no Serviço de Aplicações Azure (Windows)
Tutorial: Autenticar e autorizar utilizadores de ponta a ponta no Serviço de Aplicações Azure para linux
Personalizar a autenticação e autorização no Serviço de Aplicações .NET Integração core do Azure AppService
EasyAuth (3ª parte) Obtenção da autenticação do Serviço de Aplicações Azure a trabalhar com .NET Core (3ª
parte)
Guias específicos do fornecedor:
Como configurar a sua aplicação para utilizar o início de sessão do Azure Active Directory
Como configurar a sua aplicação para utilizar o início de sessão do Facebook
Como configurar a sua aplicação para utilizar o início de sessão do Google
Como configurar a sua aplicação para utilizar o início de sessão da conta Microsoft
Como configurar a sua aplicação para utilizar o início de sessão do Twitter
Como: Utilizar a autenticação personalizada para a sua aplicação
SO e patching de tempo de execução no Serviço de
Aplicações Azure
29/04/2020 • 8 minutes to read • Edit Online
Este artigo mostra-lhe como obter certas informações de versão relativas ao SISTEMA ou software no App
Service.
O Serviço de Aplicações é um Serviço de Plataforma-as-a-Service, o que significa que o SISTEMA e a pilha de
aplicações são geridos para si pelo Azure; só gere a sua aplicação e os seus dados. Mais controlo sobre o SISTEMA
e a pilha de aplicações está disponível em Máquinas Virtuais Azure. Com isso em mente, é, no entanto, útil para si,
enquanto utilizador do App Service, saber mais informações, tais como:
Como e quando são aplicadas as atualizações do OS?
Como é que o Serviço de Aplicações é corrigido contra vulnerabilidades significativas (como o dia zero)?
Que versões DE E E o SISTEMA e o tempo de execução estão a executar as suas aplicações?
Por razões de segurança, certas especificidades das informações de segurança não são publicadas. No entanto, o
artigo visa aliviar as preocupações maximizando a transparência no processo e como pode manter-se atualizado
sobre anúncios relacionados com a segurança ou atualizações de tempo de funcionamento.
NOTE
A informação aqui se aplica aos tempos de execução de idiomas que são incorporados numa aplicação do App Service. Um
tempo de funcionamento personalizado que você envia para o App Service, por exemplo, permanece inalterado a menos
que você atualize manualmente.
Versões depreciadas
Quando uma versão mais antiga é depreciada, a data de remoção é anunciada para que possa planear a
atualização da sua versão runtime em conformidade.
IN F O RM A Ç Õ ES O N DE EN C O N T RÁ - LO
versão .NET Em
https://<appname>.scm.azurewebsites.net/DebugConsole ,
executar o seguinte comando no pedido de comando:
powershell -command "gci
'Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Net
Framework Setup\NDP\CDF'"
Versão PHP Em
https://<appname>.scm.azurewebsites.net/DebugConsole ,
executar o seguinte comando no pedido de comando:
php --version
Versão de Python Em
https://<appname>.scm.azurewebsites.net/DebugConsole ,
executar o seguinte comando no pedido de comando:
python --version
Versão Java Em
https://<appname>.scm.azurewebsites.net/DebugConsole ,
executar o seguinte comando no pedido de comando:
java -version
NOTE
O acesso à HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages
localização do registo, onde as informações sobre os patches "KB" são armazenados, é bloqueado.
Mais recursos
Centro de Confiança: Segurança
64 bits ASP.NET Core no Serviço de Aplicações Azure
Controlos de segurança para o Serviço de Aplicações
Azure
28/04/2020 • 7 minutes to read • Edit Online
Rede
C O N T RO LO DE SEGURA N Ç A SIM / N Ã O N OTA S DO C UM EN TA Ç Ã O
Identidade
C O N T RO LO DE SEGURA N Ç A SIM / N Ã O N OTA S DO C UM EN TA Ç Ã O
Encriptação do lado do Sim Os clientes podem optar por Utilize referências chave
servidor em repouso: chaves armazenar segredos de vault para serviço de
geridas pelo cliente (BYOK) aplicação no Key Vault e aplicações e funções azure
recuperá-los em tempo de (pré-visualização)
funcionamento.
Gestão da configuração
C O N T RO LO DE SEGURA N Ç A SIM / N Ã O N OTA S DO C UM EN TA Ç Ã O
C O N T RO LO DE SEGURA N Ç A SIM / N Ã O N OTA S DO C UM EN TA Ç Ã O
Passos seguintes
Saiba mais sobre os controlos de segurança incorporados em todos os serviços do Azure.
Segurança no Serviço de Aplicações Azure
20/05/2020 • 16 minutes to read • Edit Online
Este artigo mostra-lhe como o Azure App Service ajuda a proteger a sua aplicação web, aplicação móvel no final,
app API e app de funções. Também mostra como pode proteger ainda mais a sua aplicação com as funcionalidades
do Serviço de Aplicações incorporadas.
Os componentes da plataforma do App Service, incluindo VMs Azure, armazenamento, conexões de rede, quadros
web, funcionalidades de gestão e integração, são ativamente protegidos e endurecidos. O Serviço de Aplicações
passa por controlos de conformidade vigorosos numa base contínua para garantir que:
Os recursos da sua aplicação estão protegidos dos recursos Azure dos outros clientes.
As instâncias vM e o software de tempo de execução são regularmente atualizados para resolver
vulnerabilidades recentemente descobertas.
A comunicação de segredos (como cordas de ligação) entre a sua app e outros recursos Azure (como a Base de
Dados SQL)permanece dentro do Azure e não ultrapassa quaisquer limites de rede. Os segredos são sempre
encriptados quando armazenados.
Toda a comunicação sobre as funcionalidades de conectividade do Serviço app, como a ligação híbrida,está
encriptada.
As ligações com ferramentas de gestão remota como Azure PowerShell, Azure CLI, Azure SDKs, REST APIs, estão
todas encriptadas.
A gestão de ameaças 24 horas protege a infraestrutura e plataforma contra malware, distribuição de negação de
serviço (DDoS), man-in-the-middle (MITM) e outras ameaças.
Para obter mais informações sobre infraestruturas e segurança na plataforma em Azure, consulte o Azure Trust
Center.
As seguintes secções mostram-lhe como proteger ainda mais a sua aplicação de Serviço de Aplicações contra
ameaças.
HTTPS e Certificados
O Serviço de Aplicações permite-lhe proteger as suas aplicações com HTTPS. Quando a sua aplicação é criada, o
seu nome de domínio padrão < (app_name>.azurewebsites.net) já está acessível através do HTTPS. Se configurar
um domínio personalizado para a sua aplicação,também deve alterá-lo com um certificado TLS/SSL para que os
navegadores de clientes possam fazer ligações HTTPS seguras ao seu domínio personalizado. Existem vários tipos
de certificados suportados pelo App Service:
Certificado gerido pelo serviço de aplicações gratuito
Certificado de serviço de aplicações
Certificado de terceiros
Certificado importado do Cofre-Chave Azure
Para mais informações, consulte Adicionar um certificado TLS/SSL no Serviço de Aplicações Azure.
Restrições ip estáticas
Por padrão, a sua aplicação App Service aceita pedidos de todos os endereços IP da internet, mas pode limitar esse
acesso a um pequeno subconjunto de endereços IP. O Serviço de Aplicações no Windows permite definir uma lista
de endereços IP que podem aceder à sua aplicação. A lista permitida pode incluir endereços IP individuais ou uma
série de endereços IP definidos por uma máscara de sub-rede. Para mais informações, consulte as restrições de IP
estáticas do Serviço de Aplicação Azure.
Para o Serviço de Aplicações no Windows, também pode restringir os endereços IP de forma dinâmica
configurando o web.config. Para mais informações, consulte Dynamic IP Security < dynamicIpSecurity>.
Segredos de aplicação
Não guarde segredos de aplicação, tais como credenciais de base de dados, fichas API e chaves privadas no seu
código ou ficheiros de configuração. A abordagem geralmente aceite é acessá-las como variáveis ambientais
usando o padrão padrão na sua linguagem de eleição. No Serviço de Aplicações, a forma de definir variáveis
ambientais é através de definições de aplicações (e, especialmente, para aplicações .NET, cordas de ligação). As
definições de aplicativos e as cordas de ligação são armazenadas encriptadas no Azure, e só são desencriptadas
antes de serem injetadas na memória de processo da sua aplicação quando a aplicação começar. As chaves de
encriptação são rodadas regularmente.
Em alternativa, pode integrar a sua app App Service com o Azure Key Vault para uma gestão avançada de segredos.
Ao aceder ao Key Vault com uma identidade gerida,a sua aplicação App Service pode aceder de forma segura aos
segredos de que necessita.
Isolamento da rede
Com exceção do nível de preços isolados, todos os níveis executam as suas aplicações na infraestrutura de rede
partilhada no Serviço de Aplicações. Por exemplo, os endereços IP públicos e os equilibradores de carga front-end
são partilhados com outros inquilinos. O nível Isolado dá-lhe o isolamento total da rede executando as suas
aplicações dentro de um ambiente dedicado ao Serviço de Aplicações. Um ambiente de serviço de aplicações
funciona no seu próprio exemplo de Rede Virtual Azure. Permite-lhe:
Sirva as suas apps através de um ponto final público dedicado, com extremidades dianteiras dedicadas.
Sirva a aplicação interna utilizando um equilibrador de carga interno (ILB), que permite o acesso apenas a partir
de dentro da sua Rede Virtual Azure. O ILB tem um endereço IP da sua subnet privada, que proporciona o
isolamento total das suas aplicações a partir da internet.
Utilize um ILB por trás de uma firewall de aplicação web (WAF). O WAF oferece proteção ao nível da empresa às
suas aplicações viradas para o público, tais como proteção DDoS, filtragem URI e prevenção de injeção SQL.
Para mais informações, consulte Introdução aos Ambientes de Serviço de Aplicações Azure.
Funcionalidades de rede de serviços de aplicação
29/04/2020 • 33 minutes to read • Edit Online
As aplicações no Serviço de Aplicações Azure podem ser implementadas de várias formas. Por padrão, as
aplicações hospedadas no App Service são diretamente acessíveis à Internet e só podem chegar a pontos finais
hospedados na Internet. Muitas aplicações de clientes precisam, no entanto, de controlar o tráfego de rede de
entrada e saída. Existem várias funcionalidades disponíveis no Serviço de Aplicações para satisfazer essas
necessidades. O desafio é saber que funcionalidade deve ser usada para resolver um determinado problema. Este
documento destina-se a ajudar os clientes a determinar que funcionalidade deve ser usada com base em alguns
casos de utilização de exemplo.
Existem dois tipos de implantação primários para o Serviço de Aplicações Azure. Existe o serviço público multi-
inquilino, que acolhe planos de Serviço de Aplicações nas SKUs de preços Gratuitos, Partilhados, Básicos, Standard,
Premium e Premiumv2. Depois, há o único inquilino App Service Environment (ASE), que acolhe planos isolados
do Serviço de Aplicações SKU diretamente na sua Rede Virtual Azure (VNet). As funcionalidades que utiliza
variarão se estiver no serviço multi-inquilino ou numa ASE.
Salvo indicação em contrário, todas as funcionalidades podem ser usadas em conjunto. Pode misturar as
funcionalidades para resolver os seus vários problemas.
Endereço de entrada não partilhado e dedicado para a sua endereço atribuído app
aplicação
Restringir o acesso à minha app a partir de recursos num Pontos Finais de Serviço
VNet ILB ASE
Ponto final privado (Pré-visualização)
Carregar o tráfego de equilíbrio para as minhas apps em Porta da frente azure com restrições de acesso
diferentes regiões
Tráfego de equilíbrio de carga na mesma região Gateway de Aplicação com pontos finais de serviço
Os seguintes casos de utilização sugerem como utilizar funcionalidades de rede do Serviço de Aplicações para
resolver as necessidades de acesso de saída para a sua aplicação.
C A SO S DE UT IL IZ A Ç Ã O DE SA ÍDA F UN C IO N A L IDA DE
Acesso a recursos numa Rede Virtual Azure na mesma região Integração de VNet
ASE
Acesso a recursos numa Rede Virtual Azure numa região Gateway exigia integração VNet
diferente ASE e VNet espreitando
Recursos de acesso numa rede privada não ligada ao Azure Ligações Híbridas
Proteja o tráfego de saída da sua aplicação web Grupos de Integração vNet e segurança da rede
ASE
Rota de tráfego de saída da sua aplicação web Tabelas de Integração e Rota VNet
ASE
O Serviço de Aplicações tem uma série de pontos finais que são usados para gerir o serviço. Estes endereços são
publicados num documento separado e também estão na etiqueta de serviço IP appServiceManagement. A
etiqueta AppServiceManagement só é utilizada com um App Service Environment (ASE) onde é necessário permitir
esse tráfego. Os endereços de entrada do Serviço de Aplicações são rastreados na etiqueta de serviço IP
appService. Não existe nenhuma etiqueta de serviço IP que contenha os endereços de saída utilizados pelo Serviço
de Aplicações.
Quando utiliza um endereço atribuído a uma aplicação, o seu tráfego continua a passar pelas mesmas funções
front-front-end que tratam todo o tráfego de entrada na unidade de escala do Serviço de Aplicações. O endereço
que é atribuído à sua aplicação, no entanto, só é utilizado pela sua aplicação. Os casos de utilização desta
funcionalidade são:
Suporte as necessidades SSL baseadas em IP para a sua aplicação
Detete um endereço dedicado para a sua aplicação que não seja partilhado com mais nada
Pode aprender a definir um endereço na sua aplicação com o tutorial em Adicionar um certificado TLS/SSL no
Serviço de Aplicações Azure.
Restrições de acesso
A capacidade de Restrições de Acesso permite filtrar pedidos de entrada com base no endereço IP de origem. A
ação de filtragem ocorre nas funções frontais que estão a montante das funções dos trabalhadores onde as suas
aplicações estão em execução. Uma vez que as funções front-end são a montante dos trabalhadores, a capacidade
de Restrições de Acesso pode ser considerada como proteção de nível de rede para as suas apps. A funcionalidade
permite-lhe construir uma lista de blocos de endereços de permitir e negar que são avaliados em ordem
prioritária. É semelhante à funcionalidade do Network Security Group (NSG) que existe em Rede Azure. Pode utilizar
esta funcionalidade numa ASE ou no serviço multi-inquilinos. Quando utilizado com um ILB ASE, pode restringir o
acesso a partir de blocos de endereços privados.
A funcionalidade Restrições de Acesso ajuda em cenários em que pretende restringir os endereços IP que podem
ser utilizados para chegar à sua aplicação. Entre os casos de utilização desta funcionalidade encontram-se:
Restringir o acesso à sua aplicação a partir de um conjunto de endereços bem definidos
Restrinja o acesso a um serviço de equilíbrio de carga, como a Porta da Frente Azure. Se quiser bloquear o seu
tráfego de entrada para a Porta Da Frente Azure, crie regras para permitir o tráfego de 147.243.0.0/16 e
2a01:111:2050:/44.
Se deseja bloquear o acesso à sua aplicação para que só possa ser alcançado a partir de recursos da sua Rede
Virtual Azure (VNet), precisa de uma morada pública estática sobre qualquer que seja a sua fonte no seu VNet. Se
os recursos não tiverem um endereço público, deverá utilizar a função De pontos finais de serviço. Saiba como
ativar esta funcionalidade com o tutorial sobre restrições de acesso de configuração.
Pontos finais de serviço
Os pontos finais do serviço permitem bloquear o acesso à entrada da sua aplicação de modo a que o endereço de
origem tenha de vir de um conjunto de subredes que seleciona. Esta funcionalidade funciona em conjunto com as
Restrições de Acesso IP. Os pontos finais do serviço são definidos na mesma experiência do utilizador que as
Restrições de Acesso IP. Pode construir uma lista de regras de acesso que inclua endereços públicos, bem como
subredes nos seus VNets. Esta funcionalidade suporta cenários como:
Configurar um Gateway de Aplicação com a sua app para bloquear o tráfego de entrada na sua app
Restringindo o acesso à sua app aos recursos no seu VNet. Isto pode incluir VMs, ASEs ou mesmo outras
aplicações que usam integração VNet
Pode saber mais sobre configurar pontos finais de serviço com a sua aplicação no tutorial sobre restrições de
acesso ao fim do serviço de configuração
Ponto final privado (Pré -visualização )
Private Endpoint é uma interface de rede que o conecta de forma privada e segura à sua Web App por Azure
Private Link. O Private Endpoint utiliza um endereço IP privado do seu VNet, efetivamente trazendo a Aplicação
Web para o seu VNet. Esta funcionalidade destina-se apenas aos fluxos de entrada para a sua Web App. Utilização
de pontos finais privados para aplicação web azure (pré-visualização)
Ligações Híbridas
O Serviço de Aplicações Ligações Híbridas permite que as suas apps efaçam chamadas de saída para pontos
finais específicos do TCP. O ponto final pode estar no local, num VNet ou em qualquer lugar que permita o tráfego
de saída para Azure no porto 443. A funcionalidade requer a instalação de um agente de retransmissão chamado
Hybrid Connection Manager (HCM) num Windows Server 2012 ou num novo anfitrião. O HCM precisa de ser
capaz de chegar ao Relé Azure na porta 443. O HCM pode ser descarregado a partir do App Service Hybrid
Connections UI no portal.
A funcionalidade De Ligações Híbridas do Serviço app é construída com base na capacidade de Ligações Híbridas
Azure Relay. O Serviço de Aplicações utiliza uma forma especializada da funcionalidade que apenas suporta fazer
chamadas de saída da sua app para um anfitrião e porta TCP. Este hospedeiro e porta só precisam de ser resolvidos
no hospedeiro onde o HCM está instalado. Quando a aplicação, no Serviço de Aplicações, faz uma verificação DNS
sobre o hospedeiro e a porta definida sem ligação híbrida, o tráfego é automaticamente redirecionado para passar
pela Ligação Híbrida e sair do Hybrid Connection Manager. Para saber mais sobre Ligações Híbridas, leia a
documentação sobre ligações híbridas do Serviço de Aplicações
Esta funcionalidade é comumente usada para:
Aceder a recursos em redes privadas que não estejam ligados ao Azure com uma VPN ou ExpressRoute
Suporte levantar e transferir aplicações no local para O Serviço de Aplicações sem necessidade de mover
também bases de dados de suporte
Forneça de forma segura acesso a um único hospedeiro e porta por conexão híbrida. A maioria das
funcionalidades de networking abre acesso a uma rede e com Conexões Híbridas só tem o único anfitrião e
porta que pode alcançar.
Cobrir cenários não abrangidos por outros métodos de conectividade de saída
Realizar desenvolvimento no App Service onde as aplicações podem facilmente alavancar recursos no local
Uma vez que a funcionalidade permite o acesso aos recursos no local sem um buraco de firewall de entrada, é
popular entre os desenvolvedores. As outras funcionalidades de rede de serviços de aplicações de saída estão
muito relacionadas com a Rede Virtual Azure. As Ligações Híbridas não têm uma dependência de passar por um
VNet e podem ser usadas para uma maior variedade de necessidades de networking. É importante notar que a
funcionalidade De Ligações Híbridas do Serviço app não se importa ou sabe o que está a fazer em cima dela. Isto é,
pode usá-lo para aceder a uma base de dados, a um serviço web ou a uma tomada tCP arbitrária num computador
principal. A funcionalidade essencialmente túneis pacotes TCP.
Embora a Hybrid Connections seja popular para o desenvolvimento, também é usada em numerosas aplicações de
produção. É ótimo para aceder a um serviço web ou base de dados, mas não é apropriado para situações que
envolvam a criação de muitas conexões.
Gateway exigia integração VNet
A funcionalidade de integração VNet do Serviço de Aplicação necessária permite que a sua aplicação evoque
pedidos de saída numa Rede Virtual Azure. A funcionalidade funciona ligando o anfitrião que a sua aplicação está
a correr para um portal de rede virtual no seu VNet com uma VPN ponto-a-site. Ao configurar a funcionalidade, a
sua aplicação obtém um dos endereços ponto-a-site atribuídos a cada instância. Esta funcionalidade permite-lhe
aceder a recursos em VNets Clássicos ou Gestorde Recursos em qualquer região.
Esta funcionalidade resolve o problema de aceder a recursos noutros VNets e pode mesmo ser usada para ligar
através de um VNet a outros VNets ou até mesmo no local. Não funciona com VNets ligados à ExpressRoute, mas
sim com redes conectadas VPN site-to-site. Normalmente é inapropriado utilizar esta funcionalidade a partir de
uma aplicação num App Service Environment (ASE), porque a ASE já se encontra no seu VNet. Os casos de
utilização que esta funcionalidade resolve são:
Acesso a recursos em IPs privados nas suas redes virtuais Azure
Acesso a recursos no local se houver uma VPN site-to-site
Acesso a recursos em VNets peered
Quando esta funcionalidade estiver ativada, a sua aplicação utilizará o servidor DNS com o qual o destino VNet
está configurado. Pode ler mais sobre esta funcionalidade na documentação sobre a Integração VNet do Serviço de
Aplicações.
Integração de VNet
A funcionalidade de Integração VNet necessária é muito útil, mas ainda não resolve o acesso aos recursos através
do ExpressRoute. Além de precisar de contactar as ligações ExpressRoute, é necessário que as aplicações possam
fazer chamadas para serviços seguros de ponto final. Para resolver ambas as necessidades adicionais, foi
adicionada outra capacidade de Integração VNet. A nova funcionalidade de Integração VNet permite-lhe colocar o
backend da sua aplicação numa subnet numa VNet gestora de recursos na mesma região. Esta funcionalidade não
está disponível a partir de um App Service Environment, que já se encontra num VNet. Esta funcionalidade
permite:
Acesso a recursos em VNets gestor de recursos na mesma região
Acesso a recursos que são assegurados com pontos finais de serviço
Acesso a recursos acessíveis através de conexões ExpressRoute ou VPN
Assegurar todo o tráfego de saída
Forçar a escavar todo o tráfego de saída.
Para saber mais sobre esta funcionalidade, leia os docs no App Service VNet Integration.
A ASE oferece a melhor história em torno de hospedagem de apps isoladas e dedicadas, mas vem com alguns
desafios de gestão. Algumas coisas a considerar antes de usar uma ASE operacional são:
Uma ASE corre dentro do seu VNet mas tem dependências fora do VNet. Essas dependências devem ser
permitidas. Ler mais em considerações de Networking para um Ambiente de Serviço de Aplicações
Uma ASE não escala imediatamente como o serviço multi-inquilinos. É preciso antecipar as necessidades de
escala em vez de escalar reactivamente.
Uma ASE tem um custo frontal mais elevado associado a ele. Para tirar o máximo partido da sua ASE, deve
planear colocar muitas cargas de trabalho numa ASE em vez de a utilizar para pequenos esforços.
As aplicações numa ASE não podem restringir o acesso a algumas aplicações numa ASE e não noutras.
A ASE encontra-se numa subrede e todas as regras de rede aplicam-se a todo o tráfego de e para a ASE. Se
quiser atribuir regras de tráfego de entrada para apenas uma aplicação, utilize restrições de acesso.
Combinando funcionalidades
As funcionalidades notadas para o serviço multi-inquilinos podem ser utilizadas em conjunto para resolver casos
de utilização mais elaborados. Dois dos casos de utilização mais comuns são descritos aqui, mas são apenas
exemplos. Ao entender o que as várias funcionalidades fazem, pode resolver quase todas as necessidades da
arquitetura do seu sistema.
Injetar app num VNet
Um pedido comum é sobre como colocar a sua aplicação num VNet. Colocar a sua aplicação num VNet significa
que os pontos finais de entrada e saída para uma aplicação estão dentro de um VNet. A ASE fornece a melhor
solução para resolver este problema, mas pode obter a maior parte do que é necessário no serviço multi-
inquilinos, combinando funcionalidades. Por exemplo, pode alojar aplicações intranet apenas com endereços de
entrada e saída privados por:
Criação de um Gateway de Aplicação com endereço de entrada e saída privado
Garantir o tráfego de entrada na sua app com pontos finais de serviço
Use a nova Integração VNet para que o backend da sua aplicação esteja no seu VNet
Este estilo de implementação não lhe daria um endereço dedicado para tráfego de saída para a internet ou lhe
daria a capacidade de bloquear todo o tráfego de saída da sua app. Este estilo de implantação dar-lhe-ia muito do
que só de outra forma conseguiria com uma ASE.
Criar aplicações de vários níveis
Uma aplicação de vários níveis é uma aplicação onde as aplicações de backend da API só podem ser acedidas a
partir do nível frontal. Para criar uma aplicação de vários níveis, pode:
Utilize a Integração VNet para ligar o backend da sua aplicação web frontal com uma subnet num VNet
Utilize pontos finais de serviço para garantir o tráfego de entrada na sua aplicação API apenas para vir da
subnet utilizada pela sua aplicação web frontal
Pode ter várias aplicações front-end a utilizar a mesma aplicação API utilizando a Integração VNet a partir das
outras aplicações frontais e pontos finais de serviço da aplicação API com as suas subredes.
Integração de Gateway de aplicação com pontos
finais de serviço
28/04/2020 • 9 minutes to read • Edit Online
Existem três variações do Serviço de Aplicações que requerem uma configuração ligeiramente diferente da
integração com o Portal de Aplicações Azure. As variações incluem o Serviço regular de Aplicações - também
conhecido como multi-inquilino, Internal Load Balancer (ILB) App Service Environment (ASE) e ASE Externa. Este
artigo irá analisar como configurá-lo com o App Service (multi-inquilino) e discutir considerações sobre iLB, e ASE
Externa.
Existem duas partes nesta configuração além de criar o Serviço de Aplicações e o Gateway de Aplicações. A
primeira parte é permitir pontos finais de serviço na subnet da Rede Virtual onde o Gateway de Aplicação é
implementado. Os pontos finais do serviço garantirão que todo o tráfego de rede que saia da subnet para o
Serviço de Aplicações será marcado com o ID da sub-rede específico. A segunda parte é definir uma restrição de
acesso da aplicação web específica para garantir que apenas o tráfego marcado com este ID de sub-rede específico
é permitido. Pode configurá-lo utilizando diferentes ferramentas dependendo da preferência.
az webapp config access-restriction add --resource-group myRG --name myWebApp --rule-name AppGwSubnet --
priority 200 --subnet mySubNetName --vnet-name myVnetName
Se pretender definir restrições de acesso individuais para o site scm, pode adicionar restrições de acesso utilizando
a bandeira do site --scm como mostrado abaixo.
az webapp config access-restriction add --resource-group myRG --name myWebApp --scm-site --rule-name
KudoAccess --priority 200 --ip-address 208.130.0.0/16
Passos seguintes
Para obter mais informações sobre o Ambiente do Serviço de Aplicações, consulte a documentação do Ambiente
do Serviço de Aplicações.
Para garantir ainda mais a sua aplicação web, as informações sobre o Firewall da Aplicação Web no Gateway de
Aplicações podem ser encontradas na documentação de Firewall da Aplicação Web do Azure.
Utilização de pontos finais privados para app Web
Azure (pré-visualização)
17/06/2020 • 9 minutes to read • Edit Online
NOTE
Com a atualização de pré-visualização, divulgámos a funcionalidade de proteção de exfiltração de dados.
A pré-visualização está disponível em todas as regiões públicas para As Aplicações Web PremiumV2 e Linux Web e Funções
Premium Elásticas.
Pode utilizar o Private Endpoint para a sua Azure Web App para permitir que os clientes localizados na sua rede
privada acedam de forma segura à aplicação sobre o Private Link. O Private Endpoint utiliza um endereço IP a
partir do seu espaço de endereço Azure VNet. O tráfego de rede entre um cliente na sua rede privada e a Web App
atravessa o VNet e uma Ligação Privada na rede de espinha dorsal da Microsoft, eliminando a exposição da
Internet pública.
A utilização de Ponto Final Privado para a sua Aplicação Web permite-lhe:
Proteja a sua Web App configurando o Ponto Final Privado, eliminando a exposição pública.
Ligue-se seguramente à Web App a partir de redes no local que se conectam ao VNet usando um VPN ou
ExpressRoute private peering.
Evite qualquer exfiltração de dados do seu VNet.
Se necessitar apenas de uma ligação segura entre o seu VNet e a sua Web App, um Ponto Final de Serviço é a
solução mais simples. Se também precisar de chegar à aplicação web a partir do local através de um gateway
Azure, um VNet com olhos regionais ou um VNet globalmente espreitado, o Private Endpoint é a solução.
Para mais informações, consulte os Pontos finais de serviço.
NOTE
A funcionalidade de integração VNet não pode utilizar a mesma sub-rede que o Private Endpoint, esta é uma limitação da
funcionalidade de integração VNet.
DNS
Como esta funcionalidade está em pré-visualização, não alteramos a entrada de DNS durante a pré-visualização.
Você precisa de gerir a entrada DNS no seu servidor DNS privado ou na zona privada do Azure DNS. Se precisar de
usar um nome DNS personalizado, tem de adicionar o nome personalizado na sua Web App. Durante a pré-
visualização, o nome personalizado deve ser validado como qualquer nome personalizado, utilizando a resolução
pública de DNS. Para mais informações, consulte a validação personalizada do DNS.
Se precisar de utilizar a consola Kudu, ou a API Kudu REST (implantação com agentes auto-hospedados da Azure
DevOps, por exemplo), precisa de criar dois registos na sua zona privada Azure DNS ou no seu servidor DNS
personalizado.
PrivateEndpointIP yourwebappname.azurewebsites.net
PrivateEndpointIP yourwebappname.scm.azurewebsites.net
Preços
Para obter detalhes sobre os preços, consulte os preços do Azure Private Link.
Limitações
Quando utilizar a Função Azure em Plano Premium Elástico com Ponto Final Privado, para executar ou executar a
função no portal Azure Web, tem de ter acesso direto à rede ou receberá um erro HTTP 403. Por outras palavras, o
seu navegador deve ser capaz de chegar ao Ponto Final Privado para executar a função a partir do portal Azure
Web.
Durante a pré-visualização, apenas a ranhura de produção é exposta por trás do Private Endpoint, outras ranhuras
devem ser alcançadas pelo Public Endpoint.
Estamos a melhorar regularmente o recurso Private Link e o Private Endpoint, consulte este artigo para obter
informações atualizadas sobre limitações.
Próximos passos
Para implementar o ponto final privado para a sua Web App através do portal ver como ligar-se privadamente a
uma Aplicação Web
Endereços IP de entrada e saída no Serviço de
Aplicações Azure
29/04/2020 • 5 minutes to read • Edit Online
O Azure App Service é um serviço multi-inquilino, com exceção dos Ambientes de Serviço de Aplicações. As
aplicações que não se encontram num ambiente de Serviço de Aplicações (não no nível isolado)partilham a
infraestrutura de rede com outras aplicações. Como resultado, os endereços IP de entrada e saída de uma
aplicação podem ser diferentes, e podem até mudar em determinadas situações.
Os Ambientes de Serviço de Aplicações utilizam infraestruturas de rede dedicadas, pelo que as aplicações que
executam um ambiente de Serviço de Aplicações obtêm endereços IP estáticos e dedicados tanto para ligações de
entrada como para saída.
Encontre o IP de entrada
Basta executar o seguinte comando num terminal local:
nslookup <app-name>.azurewebsites.net
az webapp show --resource-group <group_name> --name <app_name> --query outboundIpAddresses --output tsv
Para encontrar todos os possíveis endereços IP de saída para a sua aplicação, independentemente dos níveis de
preços, clique em Propriedades na navegação à esquerda da sua aplicação. Estão listados no campo de
endereços IP de saída adicional.
Pode encontrar as mesmas informações executando o seguinte comando na Cloud Shell.
Passos seguintes
Aprenda a restringir o tráfego de entrada através de endereços IP de origem.
Restrições ip estáticas
Integre a sua app com uma rede virtual Azure
17/06/2020 • 47 minutes to read • Edit Online
Este artigo descreve a funcionalidade de Integração VNet do Serviço de Aplicações Azure e como conehá-la com
aplicações no Azure App Service. Com a Rede Virtual Azure (VNets), pode colocar muitos dos seus recursos Azure
numa rede não-internet-routable. A funcionalidade de Integração VNet permite que as suas aplicações acedam a
recursos dentro ou através de um VNet. A Integração VNet não permite que as suas aplicações sejam acedidas em
privado.
O Azure App Service tem duas variações na funcionalidade de Integração VNet:
Os sistemas multiarrendatários que suportam toda a gama de planos de preços exceto isolados.
O App Service Environment, que se implanta no seu VNet e suporta aplicações de planos de preços isolados.
A funcionalidade de Integração VNet é utilizada em aplicações multiarrendatárias. Se a sua aplicação estiver no App
Service Environment, então já está num VNet e não requer a utilização da funcionalidade de Integração VNet para
chegar a recursos no mesmo VNet. Para obter mais informações sobre todas as funcionalidades de networking,
consulte as funcionalidades de rede do Serviço de Aplicações.
A VNet Integration dá à sua aplicação acesso aos recursos no seu VNet, mas não concede acesso privado à sua
aplicação a partir do VNet. O acesso ao site privado refere-se a tornar uma aplicação acessível apenas a partir de
uma rede privada, como por exemplo dentro de uma rede virtual Azure. A VNet Integration é usada apenas para
fazer chamadas de saída da sua aplicação para o seu VNet. A funcionalidade de Integração VNet comporta-se de
forma diferente quando é usada com VNet na mesma região e com VNet noutras regiões. A funcionalidade de
Integração VNet tem duas variações:
Integração VNet Regional : Quando se conecta a redes virtuais do Azure Resource Manager na mesma região,
deve ter uma subnet dedicada no VNet com o qual está a integrar.
Integração VNet exigida por Gateway : Quando se conecta à VNet noutras regiões ou a uma rede virtual
clássica na mesma região, precisa de um gateway de rede virtual Azure aprovisionado no Alvo VNet.
As funcionalidades de Integração VNet:
Exija um plano de preços Standard, Premium, PremiumV2 ou Elástico Premium.
Suporte TCP e UDP.
Trabalhe com aplicações do Azure App Service e aplicações de função.
Há algumas coisas que a VNet Integração não suporta, como:
Montando uma unidade.
Integração de Diretório ativo.
NetBIOS.
A VNet Integration exigida por gateway fornece acesso a recursos apenas no VNet alvo ou em redes ligadas ao alvo
VNet com peering ou VPNs. A VNet Integration exigida por Gateway não permite o acesso aos recursos disponíveis
em ligações Azure ExpressRoute ou trabalha com pontos finais de serviço.
Independentemente da versão utilizada, a VNet Integration dá à sua aplicação acesso aos recursos no seu VNet,
mas não concede acesso privado à sua aplicação a partir do VNet. O acesso ao site privado refere-se a tornar a sua
aplicação acessível apenas a partir de uma rede privada, como por exemplo dentro de um Azure VNet. A VNet
Integration é apenas para fazer chamadas de saída da sua aplicação para o seu VNet.
Ativar a integração do VNet
1. Aceda ao UI de Rede no portal do Serviço de Aplicações. Em Integração VNet, selecione Clique aqui
para configurar .
2. Selecione Adicionar VNet .
3. A lista de drop-down contém todas as redes virtuais do Azure Resource Manager na sua subscrição na
mesma região. Por baixo disso está uma lista das redes virtuais do Gestor de Recursos em todas as outras
regiões. Selecione o VNet com o quais pretende integrar-se.
Se o VNet estiver na mesma região, ou crie uma nova sub-rede ou selecione uma sub-rede pré-existente
vazia.
Para selecionar um VNet noutra região, tem de ter um gateway VNet atado com o ponto para o site
ativado.
Para se integrar com um VNet clássico, em vez de selecionar a lista de drop-down da Rede Vir tual,
selecione Clique aqui para ligar a um VNet clássico . Selecione a rede virtual clássica que deseja. O
VNet alvo já deve ter um gateway de rede virtual a provisionado com o ponto a local ativado.
Durante a integração, a sua aplicação é reiniciada. Quando a integração estiver terminada, verá detalhes sobre o
VNet com o qual está integrado.
Quando a Integração Regional de VNet está ativada, a sua aplicação faz chamadas de saída para a internet através
dos mesmos canais que o normal. Os endereços de saída listados no portal das propriedades da aplicação são os
endereços ainda utilizados pela sua aplicação. O que muda para a sua aplicação são as chamadas para serviços de
serviço seguros de ponto final, ou endereços RFC 1918 vão para o seu VNet. Se WEBSITE_VNET_ROUTE_ALL estiver
definido para 1, todo o tráfego de saída pode ser enviado para o seu VNet.
A funcionalidade suporta apenas uma interface virtual por trabalhador. Uma interface virtual por trabalhador
significa uma Integração VNet regional por plano de Serviço de Aplicação. Todas as aplicações do mesmo plano de
Serviço de Aplicações podem utilizar a mesma Integração VNet. Se precisar de uma aplicação para se ligar a um
VNet adicional, precisa de criar outro plano de Serviço de Aplicações. A interface virtual utilizada não é um recurso
a que os clientes tenham acesso direto.
Devido à natureza do funcionamento desta tecnologia, o tráfego que é usado com a Integração VNet não aparece
nos registos de fluxo da Rede Azure ou NSG.
Peering
Se utilizar o seu olhar com a Integração Regional de VNet, não precisa de fazer nenhuma configuração adicional.
Se utilizar a Integração VNet exigida por gateways com o seu espremia, tem de configurar alguns itens adicionais.
Para configurar olhando para trabalhar com a sua aplicação:
1. Adicione uma ligação de espreitar no VNet a que a sua aplicação se conecta. Ao adicionar a ligação de pares,
ative o acesso à rede vir tual e selecione Deixe o tráfego reencaminhado e permita o trânsito de
gateway .
2. Adicione uma ligação de observação no VNet que está a ser espreitada para o VNet a que está ligado. Quando
adicionar a ligação de espreitamento no destino VNet, ative o acesso à rede vir tual e selecione Deixe o
tráfego reencaminhado e permita gateways remotos .
3. Aceda ao plano de Ser viço de > Aplicações networking > VNet Integration UI no portal. Selecione o VNet
a que a sua aplicação se conecta. Na secção de encaminhamento, adicione o intervalo de endereços do VNet que
está espreguiçadado com o VNet a que a sua aplicação está ligada.
Resolução de problemas
A funcionalidade é fácil de configurar, mas isso não significa que a sua experiência será livre de problemas. Se
encontrar problemas de acesso ao ponto final pretendido, existem alguns utilitários que pode utilizar para testar a
conectividade a partir da consola de aplicações. Há duas consolas que podes usar. Uma é a consola Kudu, e a outra
é a consola no portal Azure. Para chegar à consola Kudu a partir da sua aplicação, vá a Tools > Kudu . Você também
pode chegar à consola Kudo em [sitename].scm.azurewebsites.net. Depois de o site carregar, vá ao separador de
consola Debug. Para chegar à consola azure hospedada pelo portal a partir da sua aplicação, vá para tools >
console .
Ferramentas
As ferramentas ping , nslookup , e tracer t não funcionarão através da consola devido a restrições de segurança.
Para preencher o vazio, são adicionadas duas ferramentas separadas. Para testar a funcionalidade DNS,
adicionámos uma ferramenta chamada nameresolver.exe . A sintaxe é:
Pode utilizar nameresolver para verificar os nomes de anfitriões de que a sua aplicação depende. Desta forma, pode
testar se tem algo mal configurado com o seu DNS ou talvez não tenha acesso ao seu servidor DNS. Pode ver o
servidor DNS que a sua aplicação utiliza na consola olhando para as variáveis ambientais WEBSITE_DNS_SERVER e
WEBSITE_DNS_ALT_SERVER.
Pode utilizar a ferramenta seguinte para testar a conectividade TCP com uma combinação de hospedeiro e porta.
Esta ferramenta chama-se tcpping e a sintaxe é:
O utilitário tcpping diz-lhe se pode chegar a um hospedeiro específico e porto. Só pode mostrar sucesso se houver
uma aplicação a ouvir a combinação de anfitriões e portas, e há acesso de rede da sua app ao anfitrião especificado
e à porta.
Depuração de acesso a recursos de rede virtuais hospedados em rede
Várias coisas podem impedir que a sua aplicação chegue a um anfitrião específico e à porta. A maior parte do
tempo é uma destas coisas:
Uma firewall está no caminho. Se tiver uma firewall no caminho, atinja o intervalo do TCP. O tempo de saída
do TCP é de 21 segundos neste caso. Utilize a ferramenta de tcpping para testar a conectividade. Os intervalos
de tCP podem ser causados por muitas coisas além das firewalls, mas comecem por aí.
DNS não é acessível. O tempo de saída do DNS é de 3 segundos por servidor DNS. Se tiver dois servidores
DNS, o tempo é de 6 segundos. Use nameresolver para ver se o DNS está funcionando. Não pode usar o
nslookup, porque isso não usa o DNS com o qual a sua rede virtual está configurada. Se não for acessível, pode
ter uma firewall ou NSG bloqueando o acesso ao DNS ou pode estar em baixo.
Se esses itens não responderem aos seus problemas, procure primeiro coisas como:
Integração Regional de VNet
O seu destino é um endereço não RFC1918 e não tem WEBSITE_VNET_ROUTE_ALL definido para 1?
Existe algum nSG bloqueando a saída da sua subnet de integração?
Se estiver a atravessar o Azure ExpressRoute ou uma VPN, o seu portal no local está configurado para
encaminhar o tráfego de volta para Azure? Se conseguir chegar a pontos finais na sua rede virtual, mas não no
local, verifique as suas rotas.
Tem permissão suficiente para definir delegação na subnet de integração? Durante a configuração regional de
Integração VNet, a sua subnet de integração é delegada na Microsoft.Web. O VNet Integration UI delega a
subnet para Microsoft.Web automaticamente. Se a sua conta não tiver permissões de networking suficientes
para definir a delegação, precisará de alguém que possa definir atributos na sua subnet de integração para
delegar a subnet. Para delegar manualmente a subnet de integração, vá à subnet UI da rede virtual Azure e
desloque a delegação para microsoft.Web.
Integração VNet exigida por gateway
O intervalo de endereços ponto-a-local nas gamas RFC 1918 (10.0.0.0.0.0-10.255.255.255 / 172.16.0.0-
172.31.255.255 / 192.168.0-192.168.255.255)?
O portal mostra como estando no portal? Se o seu portal está para baixo, então traga-o de volta para cima.
Os certificados mostram estar sincronizado, ou suspeita que a configuração da rede foi alterada? Se os seus
certificados estiverem dessincronizados ou suspeitar que foi feita uma alteração na configuração da sua rede
virtual que não foi sincronizada com os seus ASPs, selecione Sync Network .
Se estiver a atravessar uma VPN, a porta de entrada no local está configurada para encaminhar o tráfego de
volta para Azure? Se conseguir chegar a pontos finais na sua rede virtual, mas não no local, verifique as suas
rotas.
Está a tentar usar um portal de coexistência que suporta tanto o ponto de ponta como o ExpressRoute? Os
gateways de coexistência não são suportados com a Integração VNet.
Depurar problemas de networking é um desafio porque você não pode ver o que está bloqueando o acesso a uma
combinação específica de hospedeiro:porta. Algumas causas incluem:
Tem uma firewall no seu anfitrião que impede o acesso à porta de aplicação a partir da sua gama IP ponto-a-
local. A travessia das subredes requer frequentemente acesso público.
O seu anfitrião alvo está abatido.
A sua candidatura está em baixo.
Tinhao IP errado ou nome de anfitrião.
A sua aplicação está a ouvir num porto diferente do que esperava. Pode comparar o seu ID de processo com a
porta de audição utilizando "netstat -aon" no hospedeiro final.
Os seus grupos de segurança de rede estão configurados de forma a impedir o acesso ao seu anfitrião de
aplicação e porta a partir da sua gama IP ponto-a-local.
Não sabe qual o endereço que a sua aplicação realmente usa. Pode ser qualquer endereço na subnet de integração
ou no intervalo de endereços ponto-a-local, por isso precisa de permitir o acesso a partir de toda a gama de
endereços.
Os passos adicionais de depuração incluem:
Ligue-se a um VM na sua rede virtual e tente chegar ao seu anfitrião de recursos:porta a partir daí. Para
testar o acesso à TCP, utilize a ligação de teste de comando PowerShell . A sintaxe é:
Traga uma aplicação num VM e teste o acesso a esse anfitrião e à porta a partir da consola através da
utilização de tcpping .
Recursos no local
Se a sua aplicação não conseguir contactar um recurso no local, verifique se consegue contactar o recurso da sua
rede virtual. Utilize o comando PowerShell de ligação de rede de teste para verificar se há acesso tCP. Se o seu
VM não conseguir contactar o seu recurso no local, a sua ligação VPN ou ExpressRoute pode não estar configurada
corretamente.
Se o seu VM virtual hospedado em rede pode chegar ao seu sistema no local, mas a sua aplicação não pode, a
causa é provavelmente uma das seguintes razões:
As suas rotas não estão configuradas com a sua subnet ou intervalos de endereços ponto-a-local no seu
gateway no local.
Os seus grupos de segurança de rede estão a bloquear o acesso à sua gama IP ponto-a-site.
As suas firewalls no local estão a bloquear o tráfego da sua gama IP ponto-a-local.
Está a tentar chegar a um endereço não RFC 1918 utilizando a funcionalidade regional de Integração VNet.
Automatização
O suporte CLI está disponível para integração regional de VNet. Para aceder aos seguintes comandos, instale o
Azure CLI.
Group
az webapp vnet-integration : Methods that list, add, and remove virtual network integrations
from a webapp.
This command group is in preview. It may be changed/removed in a future release.
Commands:
add : Add a regional virtual network integration to a webapp.
list : List the virtual network integrations on a webapp.
remove : Remove a regional virtual network integration from webapp.
Group
az appservice vnet-integration : A method that lists the virtual network integrations used in an
appservice plan.
This command group is in preview. It may be changed/removed in a future release.
Commands:
list : List the virtual network integrations used in an appservice plan.
Para a integração VNet exigida por gateways, pode integrar o Serviço de Aplicações com uma rede virtual Azure
utilizando o PowerShell. Para um script pronto a executar, consulte uma aplicação no Azure App Service a uma rede
virtual Azure.
Conexões híbridas do serviço de aplicações Azure
17/06/2020 • 20 minutes to read • Edit Online
Hybrid Connections é simultaneamente um serviço no Azure e uma funcionalidade no Azure App Service. Como
serviço, tem utilizações e capacidades para além daquelas que são usadas no Serviço de Aplicações. Para saber
mais sobre conexões híbridas e a sua utilização fora do Serviço de Aplicações, consulte as Ligações Híbridas
Azure Relay.
Dentro do Serviço de Aplicações, as Ligações Híbridas podem ser usadas para aceder a recursos de aplicações
em qualquer rede que possa fazer chamadas de saída para a Azure sobre a porta 443. A Hybrid Connections
fornece acesso da sua app a um ponto final TCP e não permite uma nova forma de aceder à sua aplicação. Como
usado no Serviço de Aplicações, cada Ligação Híbrida está relacionada com um único hospedeiro TCP e
combinação de porta. Isto permite que as suas aplicações acedam a recursos em qualquer SISTEMA, desde que
seja um ponto final TCP. A funcionalidade Ligações Híbridas não sabe nem se importa com o protocolo de
aplicação ou com o que está a aceder. Simplesmente fornece acesso à rede.
Como funciona
As Ligações Híbridas requerem que seja implantado um agente de retransmissão onde possa atingir tanto o
ponto final pretendido como o Azure. O agente de retransmissão, Hybrid Connection Manager (HCM), chama a
Azure Relay sobre a porta 443. A partir do site de aplicações, a infraestrutura do Serviço de Aplicações também
se conecta ao Azure Relay em nome da sua aplicação. Através das ligações juntas, a sua aplicação é capaz de
aceder ao ponto final pretendido. A ligação utiliza as chaves TLS 1.2 para segurança e assinatura de acesso
partilhado (SAS) para autenticação e autorização.
Quando a sua aplicação fizer um pedido de DNS que corresponda a um ponto final de ligação híbrido
configurado, o tráfego TCP de saída será redirecionado através da Ligação Híbrida.
NOTE
Isto significa que deve tentar sempre usar um nome DNS para a sua Ligação Híbrida. Alguns softwares de clientes não
fazem uma procura de DNS se o ponto final utilizar um endereço IP.
Para adicionar uma nova Ligação Híbrida, selecione [+] Adicionar ligação híbrida . Verá uma lista das Ligações
Híbridas que já criou. Para adicionar um ou mais deles à sua aplicação, selecione as que pretende e, em seguida,
selecione Adicionar a Ligação Híbrida selecionada .
Se pretender criar uma nova Ligação Híbrida, selecione Criar uma nova ligação híbrida . Especificar:
Nome de ligação híbrida.
Nome de anfitrião de ponto final.
Porta de ponto final.
Serviço Espaço de nomes de ônibus que você deseja usar.
Cada Conexão Híbrida está ligada a um espaço de nomes de ônibus de serviço, e cada espaço de nome de
Service Bus está numa região de Azure. É importante tentar usar um espaço de nome de Service Bus na mesma
região que a sua aplicação, para evitar a latência induzida pela rede.
Se pretender remover a sua Ligação Híbrida da sua aplicação, clique com o botão direito e selecione
Disconnect .
Quando uma Ligação Híbrida é adicionada à sua aplicação, pode ver detalhes sobre ela simplesmente
selecionando-o.
O plano de Serviço de Aplicações UI mostra-lhe quantas Ligações Híbridas estão a ser usadas e por que
aplicações.
Selecione a Ligação Híbrida para ver detalhes. Pode ver toda a informação que viu na vista da aplicação. Também
pode ver quantas outras aplicações no mesmo plano estão a usar essa Ligação Híbrida.
Existe um limite para o número de pontos finais de Conexão Híbrida que podem ser usados num plano de
Serviço de Aplicações. Cada Ligação Híbrida utilizada, no entanto, pode ser usada em qualquer número de
aplicações nesse plano. Por exemplo, uma única Ligação Híbrida que é usada em cinco aplicações separadas num
plano de Serviço de Aplicações conta como uma Ligação Híbrida.
Preços
Além de existir um requisito de SKU do plano de serviço de aplicações, existe um custo adicional para a utilização
de Conexões Híbridas. Há uma taxa para cada ouvinte usado por uma Ligação Híbrida. O ouvinte é o Gestor de
Ligação Híbrida. Se tivesses cinco Conexões Híbridas apoiadas por dois Gestores de Conexão Híbrida, seriam 10
ouvintes. Para mais informações, consulte os preços do Service Bus.
Quando inicia o HCM UI, a primeira coisa que vê é uma tabela que lista todas as Conexões Híbridas que estão
configuradas com este caso do HCM. Se quiser es alterar, autente primeiro com o Azure.
Para adicionar uma ou mais ligações híbridas ao seu HCM:
1. Inicie a UI HCM.
2. Selecione Configurar outra Ligação Híbrida .
3. Faça sô-9 com a sua conta Azure para obter as suas Ligações Híbridas disponíveis com as suas
subscrições. O HCM não continua a utilizar a sua conta Azure para além disso.
4. Escolha uma subscrição.
5. Selecione as Ligações Híbridas que pretende que o HCM retransmite.
6. Selecione Guardar .
Agora pode ver as Ligações Híbridas que adicionou. Também pode selecionar a Ligação Híbrida configurada para
ver detalhes.
Para suportar as Ligações Híbridas com as qual está configurado, o HCM requer:
Acesso TCP a Azure sobre a porta 443.
Acesso TCP ao ponto final de ligação híbrida.
A capacidade de fazer pesquisas DNS no anfitrião do ponto final e no espaço de nomes do Service Bus.
NOTE
O Azure Relay conta com tomadas web para conectividade. Esta capacidade só está disponível no Windows Server 2012
ou posteriormente. Por isso, o HCM não é suportado em nada mais cedo do que o Windows Server 2012.
Redundância
Cada HCM pode suportar várias Ligações Híbridas. Além disso, qualquer ligação híbrida dada pode ser
suportada por vários HCMs. O comportamento padrão é encaminhar o tráfego através dos HCMs configurados
para qualquer ponto final. Se pretender uma elevada disponibilidade nas suas Ligações Híbridas a partir da sua
rede, execute vários HCMs em máquinas separadas. O algoritmo de distribuição de carga utilizado pelo serviço
Relay para distribuir tráfego aos HCMs é uma atribuição aleatória.
Adicione manualmente uma ligação híbrida
Para permitir que alguém fora da sua subscrição apresente uma instância HCM para uma determinada Ligação
Híbrida, partilhe com eles a cadeia de ligação gateway para a Ligação Híbrida. Pode ver a cadeia de ligação
gateway nas propriedades de Conexão Híbrida no portal Azure. Para utilizar esta corda, selecione Introduza
manualmente no HCM e cole na cadeia de ligação gateway.
Atualizar
Existem atualizações periódicas ao Gestor de Ligação Híbrida para corrigir problemas ou fornecer melhorias.
Quando as atualizações forem lançadas, um pop-up aparecerá na UI HCM. A aplicação da atualização aplicará as
alterações e reiniciará o HCM.
az webapp hybrid-connection
Group
az webapp hybrid-connection : Methods that list, add and remove hybrid-connections from webapps.
This command group is in preview. It may be changed/removed in a future release.
Commands:
add : Add a hybrid-connection to a webapp.
list : List the hybrid-connections on a webapp.
remove : Remove a hybrid-connection from a webapp.
Os comandos do plano de serviço de aplicações permitem definir qual a chave que uma determinada ligação
híbrida irá utilizar. Há duas teclas definidas em cada Ligação Híbrida, uma primária e uma secundária. Pode optar
por utilizar a tecla primária ou secundária com os comandos abaixo. Isto permite-lhe trocar as teclas para
quando pretender regenerar periodicamente as suas chaves.
Group
az appservice hybrid-connection : A method that sets the key a hybrid-connection uses.
This command group is in preview. It may be changed/removed in a future release.
Commands:
set-key : Set the key that all apps in an appservice plan use to connect to the hybrid-
connections in that appservice plan.
Resolução de problemas
O estado de "Conectado" significa que pelo menos um HCM está configurado com essa Ligação Híbrida, e é
capaz de chegar a Azure. Se o estado da sua Ligação Híbrida não disser Conectado, a sua Ligação Híbrida não
está configurada em nenhum HCM que tenha acesso ao Azure.
A principal razão pela qual os clientes não podem ligar-se ao seu ponto final é porque o ponto final foi
especificado usando um endereço IP em vez de um nome DNS. Se a sua aplicação não conseguir alcançar o
ponto final pretendido e utilizar um endereço IP, mude para usar um nome DNS válido no anfitrião onde o HCM
está em execução. Verifique também se o nome DNS se resolve corretamente no hospedeiro onde o HCM está
em funcionamento. Confirme que existe conectividade do hospedeiro onde o HCM está a correr até ao ponto
final de ligação híbrida.
No Serviço de Aplicações, a ferramenta da linha de comando tcpping pode ser invocada a partir da consola
Advanced Tools (Kudu). Esta ferramenta pode dizer-lhe se tem acesso a um ponto final TCP, mas não lhe diz se
tem acesso a um ponto final de Ligação Híbrida. Quando utilizar a ferramenta na consola contra um ponto final
de ligação híbrida, está apenas a confirmar que utiliza uma combinação host:porta.
Se tiver um cliente de linha de comando para o seu ponto final, pode testar a conectividade a partir da consola
de aplicações. Por exemplo, pode testar o acesso aos pontos finais do servidor web utilizando o curl.
Controlar o tráfego do Serviço de Aplicações Azure
com o Gestor de Tráfego Azure
29/04/2020 • 6 minutes to read • Edit Online
NOTE
Este artigo fornece informações sumárias para o Microsoft Azure Traffic Manager no que diz respeito ao Serviço de Aplicações
Azure. Mais informações sobre o próprio Gestor de Tráfego do Azure podem ser encontradas visitando os links no final deste
artigo.
Introdução
Pode utilizar o Gestor de Tráfego do Azure para controlar como os pedidos de clientes Web são distribuídos para as
aplicações no Serviço de Aplicações do Azure. Quando os pontos finais do Serviço de Aplicações são adicionados a
um perfil do Gestor de Tráfego do Azure, o Gestor de Tráfego do Azure mantém um registo do estado das suas
aplicações do Serviço de Aplicações (em execução, parado ou eliminado), para que possa decidir quais desses
pontos finais deve receber tráfego.
Métodos de encaminhamento
O Azure Traffic Manager utiliza quatro métodos de encaminhamento diferentes. Estes métodos são descritos na
seguinte lista, uma vez que dizem respeito ao Serviço de Aplicações Azure.
** Prioridade:** utilize uma aplicação primária para todo o tráfego e forneça cópias de segurança caso as
principais ou as aplicações de backup não estejam disponíveis.
** Ponderado:** distribua o tráfego através de um conjunto de aplicações, uniformemente ou de acordo com os
pesos, que define.
** Desempenho:** quando tiver aplicações em diferentes locais geográficos, utilize a aplicação "mais próxima"
em termos da menor latência da rede.
** Geographic:** utilizadores direcionados para aplicações específicas com base na localização geográfica de
onde provém a sua consulta de DNS.
Para mais informações, consulte os métodos de encaminhamento do Gestor de Tráfego.
Passos Seguintes
Para uma visão geral conceptual e técnica do Gestor de Tráfego Azure, consulte a visão geral do Gestor de Tráfego.
Visão geral do Cache Local do Serviço de Aplicações
Azure
09/05/2020 • 14 minutes to read • Edit Online
NOTE
A cache local não é suportada em aplicações de função ou aplicações de Serviço de Aplicações contentorizadas, como em
Recipientes Windows ou no Serviço de Aplicações no Linux.
{
"apiVersion": "2015-08-01",
"type": "config",
"name": "appsettings",
"dependsOn": [
"[resourceId('Microsoft.Web/sites/', variables('siteName'))]"
],
"properties": {
"WEBSITE_LOCAL_CACHE_OPTION": "Always",
"WEBSITE_LOCAL_CACHE_SIZEINMB": "1000"
}
}
...
Quando estiver a executar uma aplicação web, pretende estar preparado para quaisquer problemas que possam
surgir, desde 500 erros aos seus utilizadores, dizendo-lhe que o seu site está em baixo. O diagnóstico do Serviço
de Aplicações é uma experiência inteligente e interativa para ajudá-lo a resolver problemas com a sua aplicação
sem necessidade de configuração. Quando se depara com problemas com a sua aplicação, os diagnósticos do
Serviço de Aplicações apontam o que está errado em guiá-lo para a informação certa para mais facilmente e
rapidamente resolver o problema.
Embora esta experiência seja mais útil quando se está a ter problemas com a sua app nas últimas 24 horas, todos
os gráficos de diagnóstico estão sempre disponíveis para analisar.
Os diagnósticos do Serviço de Aplicações funcionam não só para a sua aplicação no Windows, mas também para
aplicações em Linux/contentores, App Service Environmente Azure Functions.
Interface interativa
Uma vez que selecione uma categoria de página inicial que melhor se alinha com o problema da sua aplicação, a
interface interativa dos diagnósticos do Serviço de Aplicações, Genie, pode guiá-lo através do diagnóstico e
resolução de problemas com a sua app. Pode utilizar os atalhos de azulejos fornecidos pela Genie para ver o
relatório completo de diagnóstico da categoria de problemas que está interessado. Os atalhos de azulejos
proporcionam-lhe uma forma direta de aceder às suas métricas de diagnóstico.
Depois de clicar nestes azulejos, pode ver uma lista de tópicos relacionados com o problema descrito no azulejo.
Estes tópicos fornecem fragmentos de informações notáveis a partir do relatório completo. Pode clicar em
qualquer um destes tópicos para investigar mais aprofundadamente as questões. Além disso, pode clicar no Ver
Relatório Completo para explorar todos os tópicos numa única página.
Relatório de diagnóstico
Depois de optar por investigar mais aprofundadamente o assunto clicando num tópico, pode ver mais detalhes
sobre o tema muitas vezes complementado com gráficos e marcações. O relatório de diagnóstico pode ser uma
ferramenta poderosa para identificar o problema com a sua aplicação.
Check-up de saúde
Se não sabe o que há de errado com a sua aplicação ou não sabe por onde começar a resolver problemas, o check-
up de saúde é um bom lugar para começar. O check-up de saúde analisa as suas aplicações para lhe dar uma visão
rápida e interativa que aponta o que é saudável e o que está errado, dizendo-lhe onde procurar investigar o
problema. A sua interface inteligente e interativa fornece-lhe orientação através do processo de resolução de
problemas. O check-up de saúde está integrado com a experiência Genie para aplicações windows e aplicação web
para baixo relatório de diagnóstico para aplicações Linux.
Gráficos de check-up de saúde
Há quatro gráficos diferentes no check-up de saúde.
pedidos e erros: Um gráfico que mostra o número de pedidos feitos nas últimas 24 horas juntamente com
erros do servidor HTTP.
desempenho da aplicação: Um gráfico que mostra o tempo de resposta nas últimas 24 horas para vários
grupos de percentil.
Utilização do CPU: Um gráfico que mostra o uso global de CPU por exemplo nas últimas 24 horas.
utilização da memória: Um gráfico que mostra o uso geral da memória física por exemplo nas últimas 24
horas.
Investigar problemas de código de aplicação (apenas para aplicação Windows)
Como muitos problemas de aplicações estão relacionados com problemas no seu código de aplicação, o
diagnóstico do App Service integra-se com os Insights de Aplicação para destacar exceções e problemas de
dependência para se relacionar com o tempo de inatividade selecionado. Os Insights de Aplicação têm de ser
ativados separadamente.
Para ver as exceções e dependências da Application Insights, selecione a aplicação web para baixo ou a
aplicação web aparatos lentos de azulejos.
Passos de resolução de problemas (apenas para aplicação Windows)
Se um problema for detetado com uma categoria de problema específico nas últimas 24 horas, pode ver o
relatório completo de diagnóstico, e os diagnósticos do Serviço de Aplicações podem levar-lhe a ver mais
conselhos de resolução de problemas e próximos passos para uma experiência mais guiada.
Ferramentas de diagnóstico (apenas para aplicação Windows)
DiagnósticoS As ferramentas incluem ferramentas de diagnóstico mais avançadas que o ajudam a investigar
problemas de código de aplicação, lentidão, cordas de ligação e muito mais. e ferramentas proativas que o ajudam
a mitigar problemas com o uso, pedidos e memória do CPU.
Monitorização proactiva do CPU
A monitorização proactiva do CPU proporciona-lhe uma forma fácil e proativa de tomar uma ação quando a sua
app ou processo infantil para a sua aplicação está a consumir elevados recursos cpu. Pode definir as suas próprias
regras de limiar de CPU para atenuar temporariamente um problema elevado de CPU até que a verdadeira causa
para o problema inesperado seja encontrada. Para mais informações, consulte atenuar os seus problemas de CPU
antes de acontecerem.
Este tópico explica como configurar configurações comuns para aplicações web, back back back móvel ou
aplicação API usando o [portal Azure].
NOTE
As definições da aplicação também podem ser resolvidas a partir do Cofre chave utilizando referências chave vault.
NOTE
Num recipiente Linux padrão ou num recipiente Linux personalizado, qualquer estrutura chave
ApplicationInsights:InstrumentationKey JSON aninhada ApplicationInsights__InstrumentationKey no nome de
definição da aplicação como deve ser configurada no App Service como para o nome chave. Por outras : palavras, __
qualquer um deve ser substituído por (duplo sublinhado).
Editar a granel
Para adicionar ou editar as definições de aplicações a granel, clique no botão de edição Avançada. Quando
terminar, clique em Atualizar . Não se esqueça de clicar em Guardar de volta na página de Configuração.
As definições da aplicação têm a seguinte formatação JSON:
[
{
"name": "<key-1>",
"value": "<value-1>",
"slotSetting": false
},
{
"name": "<key-2>",
"value": "<value-2>",
"slotSetting": false
},
...
]
Para ASP.NET e ASP.NET programadores Core, configurar as <connectionStrings> cordas de ligação no Serviço de
Aplicações é como defini-las em Web.config, mas os valores que definiu no Serviço de Aplicações sobrepõem-se
aos da Web.config. Pode manter as definições de desenvolvimento (por exemplo, um ficheiro de base de dados)
em Web.config e segredos de produção (por exemplo, credenciais de base de dados SQL) com segurança no
Serviço de Aplicações. O mesmo código utiliza as definições de desenvolvimento quando depura localmente, e
utiliza os seus segredos de produção quando implantado no Azure.
Para outras pilhas de idiomas, é melhor utilizar as definições da aplicação, porque as cordas de ligação requerem
formatação especial nas teclas variáveis para aceder aos valores. No entanto, aqui está uma exceção: certos tipos
de bases de dados do Azure são apoiados juntamente com a aplicação se configurar as suas cordas de ligação na
sua aplicação. Para mais informações, veja o que é apoiado. Se não precisar desta cópia de segurança
automatizada, utilize as definições da aplicação.
No tempo de execução, as cordas de ligação estão disponíveis como variáveis ambientais, pré-fixadas com os
seguintes tipos de ligação:
SQLServer: SQLCONNSTR_
Mysql: MYSQLCONNSTR_
SQLAzure: SQLAZURECONNSTR_
Personalizado: CUSTOMCONNSTR_
PostgreSQL: POSTGRESQLCONNSTR_
Por exemplo, uma cadeia de ligação MySql chamada string1 de ligação pode ser acedida como variável
MYSQLCONNSTR_connectionString1 ambiental . Para passos específicos da pilha de idiomas, consulte:
ASP.NET Core
Node.js
PHP
Python
Java
Ruby
Personalizar contentores
As cordas de ligação são sempre encriptadas quando armazenadas (encriptadas em repouso).
NOTE
As cordas de ligação também podem ser resolvidas a partir do Cofre chave utilizando referências chave vault.
[
{
"name": "name-1",
"value": "conn-string-1",
"type": "SQLServer",
"slotSetting": false
},
{
"name": "name-2",
"value": "conn-string-2",
"type": "PostgreSQL",
"slotSetting": false
},
...
]
Aqui, pode configurar algumas definições comuns para a aplicação. Algumas definições exigem que se dimensione
para níveis de preços mais elevados.
Configurações de stack : A pilha de software para executar a aplicação, incluindo o idioma e as versões SDK.
Para aplicações Linux e aplicações de contentores personalizadas, também pode definir um comando ou
ficheiro de arranque opcional.
Definições da plataforma : Permite configurar as definições para a plataforma de hospedagem, incluindo:
Bitness : 32-bit ou 64-bit.
Protocolo WebSocket : Para ASP.NET SignalR ou socket.io,por exemplo.
Always On : Mantenha a aplicação carregada mesmo quando não há trânsito. É necessário para
WebJobs contínuos ou para WebJobs que são desencadeados usando uma expressão CRON.
NOTE
Com a funcionalidade Always On, não se pode controlar o ponto final. Envia sempre um pedido para a raiz de
aplicação.
Versão gerida do gasoduto : O [modo de gasoduto]IIS . Desloque-o para Classic se tiver uma
aplicação antiga que requer uma versão mais antiga do IIS.
Versão HTTP : Definir para 2.0 para permitir o suporte ao protocolo HTTPS/2.
NOTE
A maioria dos navegadores modernos suportam o protocolo HTTP/2 apenas sobre tLS, enquanto o tráfego não
encriptado continua a usar HTTP/1.1. Para garantir que os navegadores de clientes se conectam à sua aplicação com
HTTP/2, guarde o seu nome DNS personalizado. Para mais informações, consulte Secure um nome DNS
personalizado com uma ligação TLS/SSL no Serviço de Aplicações Azure.
Afinidade ARR : Numa implantação em várias instâncias, certifique-se de que o cliente é encaminhado
para o mesmo caso durante a vida útil da sessão. Pode definir esta opção para Off para aplicações
apátridas.
Depuração : Ative a depuração remota para aplicações ASP.NET, ASP.NET Coreou Node.js. Esta opção desliga-se
automaticamente após 48 horas.
Cer tificados de cliente de entrada : exigir certificados de cliente em autenticação mútua.
O documento predefinido é a página web que é exibida no URL raiz para um site. O primeiro ficheiro
correspondente na lista é utilizado. Para adicionar um novo documento predefinido, clique em Novo documento .
Não se esqueça de clicar em Guardar .
Se a aplicação utilizar módulos que encaminham com base em URL em vez de servir conteúdo estático, não há
necessidade de documentos predefinidos.
NOTE
As aplicações de contentores windows suportam apenas ficheiros Azure.
Passos seguintes
Configure um nome de domínio personalizado no Serviço de Aplicações Azure
Configurar ambientes de teste no Serviço de Aplicações do Azure
Proteja um nome DNS personalizado com uma ligação TLS/SSL no Serviço de Aplicações Azure
Ativar registos de diagnóstico
Escala uma aplicação no Serviço de Aplicações Azure
Monitorização de bases no Serviço de Aplicações Azure
Alterar as definições host.config com applicationHost.xdt
Configure PHP no Azure App Service
17/06/2020 • 12 minutes to read • Edit Online
Introdução
Este guia mostra-lhe como configurar o tempo de execução PHP incorporado para aplicações web e aplicações API
no Azure App Service,fornecer um tempo de execução PHP personalizado e ativar extensões. Para utilizar o Serviço
de Aplicações, inscreva-se para o [teste gratuito.] Para obter o máximo deste guia, você deve primeiro criar uma
aplicação PHP no Serviço de Aplicações.
az login
az webapp config set --php-version {5.6 | 7.2 | 7.3} --name {app-name} --resource-group {resource-
group-name}
; Example Settings
display_errors=On
upload_max_filesize=10M
2. Crie um settings.ini ficheiro utilizando a Kudu Console (http:// < nome do site > .scm.azurewebsite.net)
no d:\home\site\ini diretório.
3. Adicione as definições de configuração ao settings.ini ficheiro utilizando a mesma sintaxe que utilizaria
num php.ini ficheiro. Por exemplo, se pretender apontar curl.cainfo a definição para um *.crt ficheiro
e definir a definição 'wincache.maxfilesize' para 512 K, o seu settings.ini ficheiro conteria este texto:
; Example Settings
curl.cainfo="%ProgramFiles(x86)%\Git\bin\curl-ca-bundle.crt"
wincache.maxfilesize=512
; Enable Extensions
extension=d:\home\site\ext\php_mongo.dll
zend_extension=d:\home\site\ext\php_xdebug.dll
NOTE
Você pode votar no suporte do compositor de primeira classe no Serviço de Aplicações aqui!
1. Na lâmina da sua aplicação PHP no portal Azure,clique em Tools > Extensões de Ferramentas .
4. Agora, numa janela terminal da sua máquina local, git add execute, git commit e para a git push sua
aplicação. Note que o Compositor está a instalar dependências definidas em composer.json.
Próximos passos
Para mais informações, consulte o Centro de Desenvolvimento PHP.
Configure um aplicativo Windows Java para o
Serviço de Aplicações Azure
09/05/2020 • 27 minutes to read • Edit Online
O Azure App Service permite que os desenvolvedores de Java construam, implementem e dimensionem
rapidamente as suas aplicações Web Tomcat num serviço totalmente gerido com base no Windows. Implemente
aplicações com plugins Maven da linha de comando ou em editores como IntelliJ, Eclipse ou Visual Studio Code.
Este guia fornece conceitos e instruções fundamentais para os desenvolvedores java que utilizam no Serviço de
Aplicações. Se nunca usou o Azure App Service, deve ler primeiro o Java quickstart. Perguntas gerais sobre a
utilização do Serviço de Aplicações que não são específicas para o desenvolvimento de Java são respondidas no
Serviço de Aplicações Windows FAQ.
Quando o registo do contentor estiver ligado, faça o seguinte comando para ver o fluxo de registo:
NOTE
Também pode inspecionar os ficheiros https://<app-name>.scm.azurewebsites.net/api/logs/docker de registo do
navegador em .
Personalização e afinação
O Azure App Service suporta a afinação e personalização da caixa através do portal Azure e clI. Reveja os seguintes
artigos para a configuração de aplicações web não específicas de Java:
Configurar as definições da aplicação
Configurar um domínio personalizado
Configure ligações TLS
Adicione um CDN
Configure o site kudu
Definir opções de tempo de execução de Java
Para definir a memória atribuída ou outras opções de JAVA_OPTS prazo de execução JVM, crie uma definição de
aplicação nomeada com as opções. O Serviço de Aplicações passa esta definição como uma variável ambiental
para o tempo de funcionação de Java quando começa.
No portal Azure, no âmbito das Definições de Aplicação para a aplicação web, criar uma nova definição de
aplicação chamada JAVA_OPTS que inclua as configurações adicionais, tais como -Xms512m -Xmx1204m .
Para configurar a definição da aplicação a partir do plugin Maven, adicione etiquetas de definição/valor na secção
plugin Azure. O exemplo que se segue define um tamanho mínimo e máximo de monte java específico:
<appSettings>
<property>
<name>JAVA_OPTS</name>
<value>-Xms512m -Xmx1204m</value>
</property>
</appSettings>
Os desenvolvedores que executam uma única aplicação com uma ranhura de implementação no seu plano de
Serviço de Aplicações podem usar as seguintes opções:
Instâncias B1 e S1: -Xms1024m -Xmx1024m
Casos B2 e S2: -Xms3072m -Xmx3072m
Casos B3 e S3: -Xms6144m -Xmx6144m
Ao afinar as definições de pilhas de aplicações, reveja os detalhes do plano do App Service e tenha em conta várias
aplicações e o slot de implementação precisa para encontrar a melhor alocação de memória.
Ligue as tomadas web
Ligue o suporte para tomadas web no portal Azure nas definições de Aplicação para a aplicação. Terá de reiniciar
a aplicação para que a definição faça efeito.
Ligue o suporte da tomada web utilizando o Azure CLI com o seguinte comando:
<appSettings>
<property>
<name>JAVA_OPTS</name>
<value>-Dfile.encoding=UTF-8</value>
</property>
</appSettings>
Aplicações seguras
As aplicações Java em execução no App Service têm o mesmo conjunto de boas práticas de segurança que outras
aplicações.
Utilizadores autenticados (Easy Auth)
Configurar a autenticação da aplicação no portal Azure com a opção Autenticação e Autorização. A partir daí,
pode ativar a autenticação utilizando o Diretório Ativo do Azure ou logins sociais como facebook, Google ou
GitHub. A configuração do portal Azure só funciona quando configurar um único fornecedor de autenticação. Para
mais informações, consulte a configuração da sua app App Service para utilizar o login do Azure Ative Directory e
os artigos relacionados para outros fornecedores de identidade. Se precisar de ativar vários fornecedores de
sessão, siga as instruções no artigo de autenticação do Serviço de Aplicações personalizado.
Tomcat
A sua aplicação Tomcat pode aceder às reclamações do utilizador diretamente a partir do servlet, lançando o objeto
principal para um objeto Map. O objeto do Mapa irá mapear cada tipo de reclamação para uma coleção das
reivindicações desse tipo. No código abaixo, request é HttpServletRequest um exemplo de .
Agora pode inspecionar Map o objeto para qualquer reclamação específica. Por exemplo, o código seguinte itera
através de todos os tipos de reclamação e imprime o conteúdo de cada coleção.
Para assinar os utilizadores, use o /.auth/ext/logout caminho. Para realizar outras ações, consulte a documentação
sobre autenticação e utilizaçãode autorização de serviço de aplicação. Existe também documentação oficial sobre a
interface Tomcat HttpServletRequest e os seus métodos. Os seguintes métodos de servlet também são hidratados
com base na configuração do seu Serviço de Aplicações:
Para desativar esta funcionalidade, WEBSITE_AUTH_SKIP_PRINCIPAL crie 1 uma Definição de Aplicação com um valor
de . Para desativar todos os filtros de servlet adicionados pelo App Service, crie uma definição com
WEBSITE_SKIP_FILTERS um valor de 1 .
Configurar TLS/SSL
Siga as instruções no nome 'Secure' um DNS personalizado com uma ligação TLS no Serviço de Aplicações Azure
para fazer o upload de um certificado TLS/SSL existente e ligá-lo ao nome de domínio da sua aplicação. Por defeito,
a sua aplicação continuará a permitir que as ligações HTTP sigam os passos específicos do tutorial para impor sSL e
TLS.
Utilizar referências keyVault
O Azure KeyVault fornece uma gestão secreta centralizada com políticas de acesso e histórico de auditoria. Pode
armazenar segredos (como palavras-passe ou cordas de ligação) no KeyVault e aceder a estes segredos na sua
aplicação através de variáveis ambientais.
Em primeiro lugar, siga as instruções para conceder o acesso da sua aplicação ao Key Vault e fazer uma referência
ao KeyVault ao seu segredo numa Definiçãode Aplicação . Pode validar que a referência resolve o segredo
imprimindo a variável ambiental ao aceder remotamente ao terminal do Serviço de Aplicações.
Para injetar estes segredos no seu ficheiro de configuração Spring ${MY_ENV_VAR} ou Tomcat, utilize sintaxe de
injeção variável ambiente (). Para os ficheiros de configuração da Mola, consulte esta documentação sobre
configurações externas.
Configure AppDynamics
1. Criar uma conta AppDynamics em AppDynamics.com
2. Descarregue o agente Java a partir do website appDynamics, o nome do ficheiro será semelhante ao
AppServerAgent-x.x.x.xxxxx.zip
3. Utilize a consola Kudu para criar um novo diretório /home/site/wwwroot/apm.
4. Faça upload dos ficheiros do agente Java para um diretório em /home/site/wwwroot/apm. Os ficheiros do seu
agente devem estar em /home/site/wwwroot/apm/appdynamics.
5. No portal Azure, navegue para a sua aplicação no Serviço de Aplicações e crie uma nova Definição de
Aplicações.
Se estiver a usar java SE, JAVA_OPTS crie
-javaagent:/home/site/wwwroot/apm/appdynamics/javaagent.jar -Dappdynamics.agent.applicationName=<app-
name>
uma <app-name> variável ambiental com o valor onde está o seu nome de Serviço de Aplicações.
Se estiver a usar o Tomcat, crie
-javaagent:/home/site/wwwroot/apm/appdynamics/javaagent.jar -Dappdynamics.agent.applicationName=<app-
name>
<app-name> uma variável ambiental com CATALINA_OPTS o valor onde está o nome do Serviço de
Aplicações.
Se já tiver uma JAVA_OPTS variável ambiental para ou CATALINA_OPTS , anexar a opção -javaagent:/... até ao
fim do valor atual.
Origens de dados
Tomcat
Estas instruções aplicam-se a todas as ligações de base de dados. Terá de preencher os espaços reservados com o
nome da classe de motorista da sua base de dados escolhida e o ficheiro JAR. Fornecido é uma tabela com nomes
de classe e transferências de motorista para bases de dados comuns.
Para configurar o Tomcat para utilizar a Conectividade da Base de Dados Java (JDBC) ou a Java Persistence API
(JPA), primeiro personalize a CATALINA_OPTS variável ambiental que é lida pela Tomcat no arranque. Defina estes
valores através de uma definição de aplicação no plugin Maven Service:
<appSettings>
<property>
<name>CATALINA_OPTS</name>
<value>"$CATALINA_OPTS -Ddbuser=${DBUSER} -Ddbpassword=${DBPASSWORD} -DconnURL=${CONNURL}"</value>
</property>
</appSettings>
<Context>
<Resource
name="jdbc/dbconnection"
type="javax.sql.DataSource"
url="${dbuser}"
driverClassName="<insert your driver class name>"
username="${dbpassword}"
password="${connURL}"
/>
</Context>
3. Atualize o web.xml da sua aplicação para utilizar a fonte de dados na sua aplicação.
<resource-env-ref>
<resource-env-ref-name>jdbc/dbconnection</resource-env-ref-name>
<resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type>
</resource-env-ref>
Finalizar a configuração
Finalmente, colocaremos os JARs do condutor na classe Tomcat e reiniciaremos o seu Serviço de Aplicações.
Certifique-se de que os ficheiros do condutor JDBC estão disponíveis para o classloader Tomcat colocando-os no
diretório /casa/tomcat/lib. (Crie este diretório se já não existir.) Para fazer o upload destes ficheiros para a sua
instância do Serviço de Aplicações, execute os seguintes passos:
1. Na Cloud Shell,instale a extensão webapp:
2. Executar o seguinte comando CLI para criar um túnel SSH do seu sistema local para o Serviço de Aplicações:
3. Ligue-se à porta de túneis local com o seu cliente SFTP e faça o upload dos ficheiros para a pasta
/home/tomcat/lib.
Em alternativa, pode utilizar um cliente FTP para carregar o condutor da JDBC. Siga estas instruções para obter as
suas credenciais FTP.
Configurar tomcat
Para editar os ficheiros de configuração da server.xml Tomcat ou de outros ficheiros de configuração, tome
primeiro uma nota da sua versão principal tomcat no portal.
1. Encontre o diretório da casa tomcat env para a sua versão executando o comando. Procure a variável
ambiental AZURE_TOMCAT que começa e corresponda à sua versão principal. Por exemplo, AZURE_TOMCAT85_HOME
aponta para o diretório Tomcat para tomcat 8.5.
2. Depois de ter identificado o diretório caseiro tomcat para a D:\home sua versão, copie o diretório de
configuração para . Por exemplo, AZURE_TOMCAT85_HOME se tivesse D:\Program Files (x86)\apache-tomcat-8.5.37
um valor de , o novo D:\home\apache-tomcat-8.5.37 caminho do diretório copiado seria .
Configure Java SE
Ao executar um . A aplicação JAR no server.port Java SE no Windows, é aprovada como uma opção de linha de
comando à medida que a sua aplicação começa. Pode resolver manualmente a porta HTTP HTTP_PLATFORM_PORT a
partir da variável ambiental, . O valor desta variável ambiental será a porta HTTP que a sua aplicação deve ouvir.
Passos seguintes
Este tópico fornece a declaração de suporte java Runtime para o Serviço de Aplicações Azure no Windows.
Para saber mais sobre hospedagem de aplicações web com o Azure App Service consulte a visão geral do
Serviço de Aplicações.
Para obter informações sobre Java sobre o desenvolvimento do Azure consulte Azure para Java Dev Center.
Integre a sua app com uma rede virtual Azure
17/06/2020 • 47 minutes to read • Edit Online
Este artigo descreve a funcionalidade de Integração VNet do Serviço de Aplicações Azure e como conehá-la com
aplicações no Azure App Service. Com a Rede Virtual Azure (VNets), pode colocar muitos dos seus recursos
Azure numa rede não-internet-routable. A funcionalidade de Integração VNet permite que as suas aplicações
acedam a recursos dentro ou através de um VNet. A Integração VNet não permite que as suas aplicações sejam
acedidas em privado.
O Azure App Service tem duas variações na funcionalidade de Integração VNet:
Os sistemas multiarrendatários que suportam toda a gama de planos de preços exceto isolados.
O App Service Environment, que se implanta no seu VNet e suporta aplicações de planos de preços isolados.
A funcionalidade de Integração VNet é utilizada em aplicações multiarrendatárias. Se a sua aplicação estiver no
App Service Environment, então já está num VNet e não requer a utilização da funcionalidade de Integração
VNet para chegar a recursos no mesmo VNet. Para obter mais informações sobre todas as funcionalidades de
networking, consulte as funcionalidades de rede do Serviço de Aplicações.
A VNet Integration dá à sua aplicação acesso aos recursos no seu VNet, mas não concede acesso privado à sua
aplicação a partir do VNet. O acesso ao site privado refere-se a tornar uma aplicação acessível apenas a partir de
uma rede privada, como por exemplo dentro de uma rede virtual Azure. A VNet Integration é usada apenas para
fazer chamadas de saída da sua aplicação para o seu VNet. A funcionalidade de Integração VNet comporta-se de
forma diferente quando é usada com VNet na mesma região e com VNet noutras regiões. A funcionalidade de
Integração VNet tem duas variações:
Integração VNet Regional : Quando se conecta a redes virtuais do Azure Resource Manager na mesma
região, deve ter uma subnet dedicada no VNet com o qual está a integrar.
Integração VNet exigida por Gateway : Quando se conecta à VNet noutras regiões ou a uma rede virtual
clássica na mesma região, precisa de um gateway de rede virtual Azure aprovisionado no Alvo VNet.
As funcionalidades de Integração VNet:
Exija um plano de preços Standard, Premium, PremiumV2 ou Elástico Premium.
Suporte TCP e UDP.
Trabalhe com aplicações do Azure App Service e aplicações de função.
Há algumas coisas que a VNet Integração não suporta, como:
Montando uma unidade.
Integração de Diretório ativo.
NetBIOS.
A VNet Integration exigida por gateway fornece acesso a recursos apenas no VNet alvo ou em redes ligadas ao
alvo VNet com peering ou VPNs. A VNet Integration exigida por Gateway não permite o acesso aos recursos
disponíveis em ligações Azure ExpressRoute ou trabalha com pontos finais de serviço.
Independentemente da versão utilizada, a VNet Integration dá à sua aplicação acesso aos recursos no seu VNet,
mas não concede acesso privado à sua aplicação a partir do VNet. O acesso ao site privado refere-se a tornar a
sua aplicação acessível apenas a partir de uma rede privada, como por exemplo dentro de um Azure VNet. A
VNet Integration é apenas para fazer chamadas de saída da sua aplicação para o seu VNet.
Ativar a integração do VNet
1. Aceda ao UI de Rede no portal do Serviço de Aplicações. Em Integração VNet, selecione Clique aqui
para configurar .
2. Selecione Adicionar VNet .
3. A lista de drop-down contém todas as redes virtuais do Azure Resource Manager na sua subscrição na
mesma região. Por baixo disso está uma lista das redes virtuais do Gestor de Recursos em todas as outras
regiões. Selecione o VNet com o quais pretende integrar-se.
Se o VNet estiver na mesma região, ou crie uma nova sub-rede ou selecione uma sub-rede pré-
existente vazia.
Para selecionar um VNet noutra região, tem de ter um gateway VNet atado com o ponto para o site
ativado.
Para se integrar com um VNet clássico, em vez de selecionar a lista de drop-down da Rede Vir tual,
selecione Clique aqui para ligar a um VNet clássico . Selecione a rede virtual clássica que deseja.
O VNet alvo já deve ter um gateway de rede virtual a provisionado com o ponto a local ativado.
Durante a integração, a sua aplicação é reiniciada. Quando a integração estiver terminada, verá detalhes sobre o
VNet com o qual está integrado.
Quando a Integração Regional de VNet está ativada, a sua aplicação faz chamadas de saída para a internet
através dos mesmos canais que o normal. Os endereços de saída listados no portal das propriedades da
aplicação são os endereços ainda utilizados pela sua aplicação. O que muda para a sua aplicação são as
chamadas para serviços de serviço seguros de ponto final, ou endereços RFC 1918 vão para o seu VNet. Se
WEBSITE_VNET_ROUTE_ALL estiver definido para 1, todo o tráfego de saída pode ser enviado para o seu VNet.
A funcionalidade suporta apenas uma interface virtual por trabalhador. Uma interface virtual por trabalhador
significa uma Integração VNet regional por plano de Serviço de Aplicação. Todas as aplicações do mesmo plano
de Serviço de Aplicações podem utilizar a mesma Integração VNet. Se precisar de uma aplicação para se ligar a
um VNet adicional, precisa de criar outro plano de Serviço de Aplicações. A interface virtual utilizada não é um
recurso a que os clientes tenham acesso direto.
Devido à natureza do funcionamento desta tecnologia, o tráfego que é usado com a Integração VNet não
aparece nos registos de fluxo da Rede Azure ou NSG.
Peering
Se utilizar o seu olhar com a Integração Regional de VNet, não precisa de fazer nenhuma configuração adicional.
Se utilizar a Integração VNet exigida por gateways com o seu espremia, tem de configurar alguns itens
adicionais. Para configurar olhando para trabalhar com a sua aplicação:
1. Adicione uma ligação de espreitar no VNet a que a sua aplicação se conecta. Ao adicionar a ligação de pares,
ative o acesso à rede vir tual e selecione Deixe o tráfego reencaminhado e permita o trânsito de
gateway .
2. Adicione uma ligação de observação no VNet que está a ser espreitada para o VNet a que está ligado.
Quando adicionar a ligação de espreitamento no destino VNet, ative o acesso à rede vir tual e selecione
Deixe o tráfego reencaminhado e permita gateways remotos .
3. Aceda ao plano de Ser viço de > Aplicações networking > VNet Integration UI no portal. Selecione o
VNet a que a sua aplicação se conecta. Na secção de encaminhamento, adicione o intervalo de endereços do
VNet que está espreguiçadado com o VNet a que a sua aplicação está ligada.
Resolução de problemas
A funcionalidade é fácil de configurar, mas isso não significa que a sua experiência será livre de problemas. Se
encontrar problemas de acesso ao ponto final pretendido, existem alguns utilitários que pode utilizar para testar
a conectividade a partir da consola de aplicações. Há duas consolas que podes usar. Uma é a consola Kudu, e a
outra é a consola no portal Azure. Para chegar à consola Kudu a partir da sua aplicação, vá a Tools > Kudu . Você
também pode chegar à consola Kudo em [sitename].scm.azurewebsites.net. Depois de o site carregar, vá ao
separador de consola Debug. Para chegar à consola azure hospedada pelo portal a partir da sua aplicação, vá
para tools > console .
Ferramentas
As ferramentas ping , nslookup , e tracer t não funcionarão através da consola devido a restrições de segurança.
Para preencher o vazio, são adicionadas duas ferramentas separadas. Para testar a funcionalidade DNS,
adicionámos uma ferramenta chamada nameresolver.exe . A sintaxe é:
Pode utilizar nameresolver para verificar os nomes de anfitriões de que a sua aplicação depende. Desta forma,
pode testar se tem algo mal configurado com o seu DNS ou talvez não tenha acesso ao seu servidor DNS. Pode
ver o servidor DNS que a sua aplicação utiliza na consola olhando para as variáveis ambientais
WEBSITE_DNS_SERVER e WEBSITE_DNS_ALT_SERVER.
Pode utilizar a ferramenta seguinte para testar a conectividade TCP com uma combinação de hospedeiro e porta.
Esta ferramenta chama-se tcpping e a sintaxe é:
O utilitário tcpping diz-lhe se pode chegar a um hospedeiro específico e porto. Só pode mostrar sucesso se
houver uma aplicação a ouvir a combinação de anfitriões e portas, e há acesso de rede da sua app ao anfitrião
especificado e à porta.
Depuração de acesso a recursos de rede virtuais hospedados em rede
Várias coisas podem impedir que a sua aplicação chegue a um anfitrião específico e à porta. A maior parte do
tempo é uma destas coisas:
Uma firewall está no caminho. Se tiver uma firewall no caminho, atinja o intervalo do TCP. O tempo de
saída do TCP é de 21 segundos neste caso. Utilize a ferramenta de tcpping para testar a conectividade. Os
intervalos de tCP podem ser causados por muitas coisas além das firewalls, mas comecem por aí.
DNS não é acessível. O tempo de saída do DNS é de 3 segundos por servidor DNS. Se tiver dois
servidores DNS, o tempo é de 6 segundos. Use nameresolver para ver se o DNS está funcionando. Não pode
usar o nslookup, porque isso não usa o DNS com o qual a sua rede virtual está configurada. Se não for
acessível, pode ter uma firewall ou NSG bloqueando o acesso ao DNS ou pode estar em baixo.
Se esses itens não responderem aos seus problemas, procure primeiro coisas como:
Integração Regional de VNet
O seu destino é um endereço não RFC1918 e não tem WEBSITE_VNET_ROUTE_ALL definido para 1?
Existe algum nSG bloqueando a saída da sua subnet de integração?
Se estiver a atravessar o Azure ExpressRoute ou uma VPN, o seu portal no local está configurado para
encaminhar o tráfego de volta para Azure? Se conseguir chegar a pontos finais na sua rede virtual, mas não
no local, verifique as suas rotas.
Tem permissão suficiente para definir delegação na subnet de integração? Durante a configuração regional
de Integração VNet, a sua subnet de integração é delegada na Microsoft.Web. O VNet Integration UI delega a
subnet para Microsoft.Web automaticamente. Se a sua conta não tiver permissões de networking suficientes
para definir a delegação, precisará de alguém que possa definir atributos na sua subnet de integração para
delegar a subnet. Para delegar manualmente a subnet de integração, vá à subnet UI da rede virtual Azure e
desloque a delegação para microsoft.Web.
Integração VNet exigida por gateway
O intervalo de endereços ponto-a-local nas gamas RFC 1918 (10.0.0.0.0.0-10.255.255.255 / 172.16.0.0-
172.31.255.255 / 192.168.0-192.168.255.255)?
O portal mostra como estando no portal? Se o seu portal está para baixo, então traga-o de volta para cima.
Os certificados mostram estar sincronizado, ou suspeita que a configuração da rede foi alterada? Se os seus
certificados estiverem dessincronizados ou suspeitar que foi feita uma alteração na configuração da sua rede
virtual que não foi sincronizada com os seus ASPs, selecione Sync Network .
Se estiver a atravessar uma VPN, a porta de entrada no local está configurada para encaminhar o tráfego de
volta para Azure? Se conseguir chegar a pontos finais na sua rede virtual, mas não no local, verifique as suas
rotas.
Está a tentar usar um portal de coexistência que suporta tanto o ponto de ponta como o ExpressRoute? Os
gateways de coexistência não são suportados com a Integração VNet.
Depurar problemas de networking é um desafio porque você não pode ver o que está bloqueando o acesso a
uma combinação específica de hospedeiro:porta. Algumas causas incluem:
Tem uma firewall no seu anfitrião que impede o acesso à porta de aplicação a partir da sua gama IP ponto-a-
local. A travessia das subredes requer frequentemente acesso público.
O seu anfitrião alvo está abatido.
A sua candidatura está em baixo.
Tinhao IP errado ou nome de anfitrião.
A sua aplicação está a ouvir num porto diferente do que esperava. Pode comparar o seu ID de processo com
a porta de audição utilizando "netstat -aon" no hospedeiro final.
Os seus grupos de segurança de rede estão configurados de forma a impedir o acesso ao seu anfitrião de
aplicação e porta a partir da sua gama IP ponto-a-local.
Não sabe qual o endereço que a sua aplicação realmente usa. Pode ser qualquer endereço na subnet de
integração ou no intervalo de endereços ponto-a-local, por isso precisa de permitir o acesso a partir de toda a
gama de endereços.
Os passos adicionais de depuração incluem:
Ligue-se a um VM na sua rede virtual e tente chegar ao seu anfitrião de recursos:porta a partir daí. Para
testar o acesso à TCP, utilize a ligação de teste de comando PowerShell . A sintaxe é:
Traga uma aplicação num VM e teste o acesso a esse anfitrião e à porta a partir da consola através da
utilização de tcpping .
Recursos no local
Se a sua aplicação não conseguir contactar um recurso no local, verifique se consegue contactar o recurso da
sua rede virtual. Utilize o comando PowerShell de ligação de rede de teste para verificar se há acesso tCP. Se
o seu VM não conseguir contactar o seu recurso no local, a sua ligação VPN ou ExpressRoute pode não estar
configurada corretamente.
Se o seu VM virtual hospedado em rede pode chegar ao seu sistema no local, mas a sua aplicação não pode, a
causa é provavelmente uma das seguintes razões:
As suas rotas não estão configuradas com a sua subnet ou intervalos de endereços ponto-a-local no seu
gateway no local.
Os seus grupos de segurança de rede estão a bloquear o acesso à sua gama IP ponto-a-site.
As suas firewalls no local estão a bloquear o tráfego da sua gama IP ponto-a-local.
Está a tentar chegar a um endereço não RFC 1918 utilizando a funcionalidade regional de Integração VNet.
Automatização
O suporte CLI está disponível para integração regional de VNet. Para aceder aos seguintes comandos, instale o
Azure CLI.
Group
az webapp vnet-integration : Methods that list, add, and remove virtual network integrations
from a webapp.
This command group is in preview. It may be changed/removed in a future release.
Commands:
add : Add a regional virtual network integration to a webapp.
list : List the virtual network integrations on a webapp.
remove : Remove a regional virtual network integration from webapp.
Group
az appservice vnet-integration : A method that lists the virtual network integrations used in an
appservice plan.
This command group is in preview. It may be changed/removed in a future release.
Commands:
list : List the virtual network integrations used in an appservice plan.
Para a integração VNet exigida por gateways, pode integrar o Serviço de Aplicações com uma rede virtual Azure
utilizando o PowerShell. Para um script pronto a executar, consulte uma aplicação no Azure App Service a uma
rede virtual Azure.
Configure ficheiros Azure num recipiente do
Windows no serviço de aplicações
29/04/2020 • 3 minutes to read • Edit Online
NOTE
Este artigo aplica-se a recipientes windows personalizados. Para ser implantado no Serviço de Aplicações no Linux, consulte o
Serve Content do Armazenamento Azure.
Este guia mostra como aceder ao Armazenamento Azure em Recipientes Windows. Apenas as ações de ficheiros
Azure e as ações premium são suportadas. Usa ações de ficheiros Azure neste como. Os benefícios incluem
conteúdo seguro, portabilidade de conteúdo, acesso a várias aplicações e múltiplos métodos de transferência.
Pré-requisitos
Azure CLI (2.0.46 ou mais tarde).
Uma aplicação existente para recipientes windows no Serviço de Aplicações Azure
Criar partilha de ficheiros Azure
Upload de ficheiros para partilha de Ficheiros Azure
NOTE
O Azure Files é um armazenamento não predefinido e faturado separadamente, não incluído na aplicação web. Não suporta
usar a configuração firewall devido a limitações de infraestrutura.
Limitações
O Armazenamento Azure em contentores Windows encontra-se em pré-visualização e não supor ta dos
cenários de produção.
O Armazenamento Azure em recipientes Windows suporta a montagem apenas de recipientes Azure Files
(Ler / Escrever).
O Armazenamento Azure em contentores Windows não é supor tado para trazer os seus próprios cenários de
código nos planos do Serviço de Aplicações windows.
O Armazenamento Azure em contentores Windows não supor ta utilizar a configuração de Firewall de
Armazenamento devido a limitações de infraestrutura.
O Armazenamento Azure em recipientes Windows permite especificar até cinco pontos de montagem por app.
O Armazenamento Azure montado numa aplicação não é acessível através de pontos finais ftp/FTPs do Serviço
de Aplicação. Utilize o explorador de armazenamento Azure.
O Azure Storage é faturado de forma independente e não incluído na sua aplicação web. Saiba mais sobre os
preços do Armazenamento Azure.
Deve fazer isto por quaisquer outros diretórios que queira estar ligado a uma partilha de Ficheiros Azure.
Verificar
Uma vez que uma partilha de Ficheiros Azure esteja ligada a uma aplicação web, pode verificar isso executando o
seguinte comando:
Passos seguintes
Migrar uma aplicação ASP.NET para o Serviço de Aplicações Azure utilizando um recipiente Windows (Pré-
visualização).
Execute a sua aplicação no Serviço de Aplicações
Azure diretamente de um pacote ZIP
29/04/2020 • 7 minutes to read • Edit Online
No Azure App Service,pode executar as suas aplicações diretamente a partir de um ficheiro de pacote ZIP de
implementação. Este artigo mostra como ativar esta funcionalidade na sua aplicação.
Todos os outros métodos de implementação no App Service têm algo em comum: os seus ficheiros são
implantados para D:\home\site\wwwroot na sua app (ou /home/site/wwwroot para aplicações Linux). Uma vez
que o mesmo diretório é utilizado pela sua app em tempo de execução, é possível que a implementação falhe
devido a conflitos de bloqueio de ficheiros, e para que a app se compore de forma imprevisível porque alguns
dos ficheiros ainda não estão atualizados.
Em contrapartida, quando se executa diretamente de um pacote, os ficheiros da embalagem não são copiados
para o diretório wwwroot. Em vez disso, o pacote ZIP em si é montado diretamente como o diretório wwwroot
apenas de leitura. Existem vários benefícios para correr diretamente a partir de um pacote:
Elimina os conflitos de bloqueio de ficheiros entre a implantação e o tempo de execução.
Garante que apenas as aplicações totalmente implementadas estão a funcionar a qualquer momento.
Pode ser implantado numa aplicação de produção (com reinício).
Melhora o desempenho das implementações do Gestor de Recursos Azure.
Pode reduzir os tempos de arranque a frio, particularmente para funções JavaScript com grandes árvores de
embalagem npm.
NOTE
Atualmente, apenas os ficheiros de pacotezip são suportados.
Numa janela de terminal local, navegue para o diretório raiz do seu projeto de aplicação.
Este diretório deve conter o ficheiro de entrada na sua aplicação web, tais como index.html, index.php, e app.js.
Também pode conter ficheiros de gestão de pacotes como project.json, composer.json, package.json, bower.json,
e requirements.txt.
A menos que pretenda que o Serviço de Aplicações execute npm bower a gulp composer automatização de
implementação para si, execute todas as tarefas de construção (por exemplo, , , e ) e pip certifique-se de que tem
todos os ficheiros necessários para executar a app. Este passo é necessário se quiser executar o seu pacote
diretamente.
Crie um arquivo ZIP de tudo no seu projeto. O comando seguinte utiliza a ferramenta predefinida no seu
terminal:
# Bash
zip -r <file-name>.zip .
# PowerShell
Compress-Archive -Path * -DestinationPath <file-name>.zip
WEBSITE_RUN_FROM_PACKAGE="1" Permite-lhe executar a sua aplicação de um pacote local para a sua aplicação.
Também pode correr a partir de um pacote remoto.
Executar o pacote
The easiest way to run a package in your App Service is with the Azure CLI az webapp deployment source config-
zip command. Por exemplo:
az webapp deployment source config-zip --resource-group <group-name> --name <app-name> --src <filename>.zip
Como WEBSITE_RUN_FROM_PACKAGE a definição da aplicação está definida, este comando não extrai o conteúdo do
pacote para o d:\home\site\wwwroot diretório da sua app. Em vez disso, ele envia o ficheiro ZIP como é para
D:\home\data\SitePackages, e cria um nome de pacote.txt no mesmo diretório, que contém o nome do pacote
ZIP para carregar no tempo de execução. Se fizer o upload do seu pacote ZIP de uma forma diferente (como
FTP),tem de criar manualmente o diretório D:\home\data\SitePackages e o ficheiro packagename.txt
manualmente.
O comando também reinicia a aplicação. Como WEBSITE_RUN_FROM_PACKAGE está definido, o App Service monta o
pacote carregado como o diretório wwwroot apenas de leitura e executa a app diretamente a partir desse
diretório montado.
Se publicar um pacote atualizado com o mesmo nome para o armazenamento Blob, precisa de reiniciar a sua
aplicação para que o pacote atualizado seja carregado no Serviço de Aplicações.
Resolução de problemas
Correr diretamente de wwwroot um pacote faz apenas leitura. A sua aplicação receberá um erro se tentar
escrever ficheiros para este diretório.
Os formatos TAR e GZIP não são suportados.
Esta função não é compatível com cache local.
Para um melhor desempenho a frio, utilize WEBSITE_RUN_FROM_PACKAGE a opção Zip local (=1).
Mais recursos
Implantação contínua para o Serviço de Aplicações Azure
Implementar código com um ficheiro ZIP ou WAR
Implemente a sua aplicação para o Azure App
Service com um ficheiro ZIP ou WAR
28/04/2020 • 11 minutes to read • Edit Online
Este artigo mostra-lhe como usar um ficheiro ZIP ou ficheiro WAR para implementar a sua aplicação web para o
Azure App Service.
Esta implementação de ficheiros ZIP utiliza o mesmo serviço Kudu que alimenta implementações contínuas
baseadas na integração. Kudu suporta a seguinte funcionalidade para a implementação de ficheiros ZIP:
Eliminação de ficheiros que sobrados de uma implantação anterior.
Opção de ativar o processo de construção predefinido, que inclui a restauração do pacote.
Personalização de implementação, incluindo scripts de implementação de execução.
Registos de implantação.
Um limite de tamanho de ficheiro de 2048 MB.
Para mais informações, consulte a documentação de Kudu.
A implementação de ficheiros WAR implementa o seu ficheiro WAR para o App Service para executar a sua
aplicação web Java. Ver Deploy WAR file.
Pré-requisitos
Para completar os passos deste artigo, crie uma app de Serviço de Aplicações, ou use uma app que criou para
outro tutorial.
Se não tiver uma subscrição do Azure,crie uma conta gratuita antes de começar.
Numa janela de terminal local, navegue para o diretório raiz do seu projeto de aplicação.
Este diretório deve conter o ficheiro de entrada na sua aplicação web, tais como index.html, index.php, e app.js.
Também pode conter ficheiros de gestão de pacotes como project.json, composer.json, package.json, bower.json, e
requirements.txt.
A menos que pretenda que o Serviço de Aplicações execute npm bower a gulp composer automatização de
implementação para si, execute todas as tarefas de construção (por exemplo, , , e ) e pip certifique-se de que tem
todos os ficheiros necessários para executar a app. Este passo é necessário se quiser executar o seu pacote
diretamente.
Crie um arquivo ZIP de tudo no seu projeto. O comando seguinte utiliza a ferramenta predefinida no seu terminal:
# Bash
zip -r <file-name>.zip .
# PowerShell
Compress-Archive -Path * -DestinationPath <file-name>.zip
Este comando implementa os ficheiros e os diretórios do ficheiro ZIP na pasta de aplicações do Serviço de
Aplicações predefinido ( \home\site\wwwroot ) e reinicia a aplicação.
Por padrão, o motor de implantação pressupõe que um ficheiro ZIP está pronto para funcionar como está e não
executa qualquer automatização de construção. Para permitir a mesma automatização de construção
SCM_DO_BUILD_DURING_DEPLOYMENT que numa implementação git,defina a definição da aplicação executando o
seguinte comando na Cloud Shell:
Este pedido aciona a colocação de pressão a partir do ficheiro .zip carregado. Pode rever as implementações atuais
https://<app_name>.scm.azurewebsites.net/api/deployments e passadas utilizando o ponto final, como mostra o
exemplo cURL seguinte. Mais uma <app_name> vez, substitua-o pelo nome da sua aplicação e <deployment_user>
pelo nome de utilizador das suas credenciais de implementação.
Com o PowerShell
O exemplo seguinte utiliza o upload do Ficheiro .zip Publish-AzWebapp. Substitua os <group-name> espaços
<app-name> reservados, e <zip-file-path> .
$username = "<deployment-user>"
$password = "<deployment-password>"
$apiUrl = "https://<app-name>.scm.azurewebsites.net/api/deployments"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,
$password)))
$userAgent = "powershell/1.0"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent
$userAgent -Method GET
Com o PowerShell
O exemplo seguinte utiliza o upload do Ficheiro .war Publish-AzWebapp. Substitua os <group-name> espaços
<app-name> reservados, e <war-file-path> .
Passos seguintes
Para cenários de implantação mais avançados, tente implantar-se para Azure com Git. A implantação baseada em
Git para o Azure permite o controlo da versão, restauro de pacotes, MSBuild e muito mais.
Mais recursos
Kudu: Implantação de um ficheiro zip
Credenciais de implantação do serviço de aplicações Azure
Implemente a sua aplicação para o Serviço de
Aplicações Azure utilizando FTP/S
29/04/2020 • 8 minutes to read • Edit Online
Este artigo mostra-lhe como usar FTP ou FTPS para implementar a sua aplicação web, backend de aplicações
móveis ou app API para o Azure App Service.
O ponto final ftp/S para a sua aplicação já está ativo. Nenhuma configuração é necessária para permitir a
implantação ftp/S.
NOTE
Autenticar para um ponto final FTP/FTPS utilizando credenciais de nível de utilizador requer um nome de utilizador no
seguinte formato:
<app-name>\<user-name>
Uma vez que as credenciais de nível de utilizador estão ligadas ao utilizador e não a um recurso específico, o nome de
utilizador deve estar neste formato para direcionar a ação de início de sessão para o ponto final da aplicação certa.
NOTE
Ao contrário das implementações baseadas em Git,a implantação ftp não suporta as seguintes automatizações de
implantação:
dependência restaura (tais como nuGet, NPM, PIP e automações de compositor)
compilação de binários .NET
geração de web.config (aqui é um exemplo de Node.js)
Gere estes ficheiros necessários manualmente na sua máquina local e, em seguida, implemente-os juntamente com a sua
aplicação.
Impor FTPS
Para uma maior segurança, deve permitir ftp apenas sobre TLS/SSL. Também pode desativar tanto o FTP como o
FTPS se não utilizar a implantação ftp.
Na página de recursos da sua aplicação no portal Azure,selecioneconfigurações gerais de configuração > a
partir da navegação à esquerda.
Para desativar o FTP não encriptado, selecione FTPS apenas no estado FTP . Para desativar totalmente o FTP e
o FTPS, selecione Desativado . Quando terminar, clique em Guardar . Se utilizar apenas ftps, deve impor TLS
1.2 ou superior, navegando para a lâmina de definições TLS/SSL da sua aplicação web. Os TLS 1.0 e 1.1 não
são suportados apenas com FTPS .
Automatizar com scripts
Para a implementação de FTP utilizando o Azure CLI,consulte Criar uma aplicação web e implementar ficheiros
com FTP (Azure CLI).
Para a implementação ftp utilizando o Azure PowerShell,consulte ficheiros upload para uma aplicação web
utilizando FTP (PowerShell).
Passos seguintes
Para cenários de implantação mais avançados, tente implantar-se para Azure com Git. A implantação baseada
em Git para o Azure permite o controlo da versão, restauro de pacotes, MSBuild e muito mais.
Mais recursos
Credenciais de implantação do serviço de aplicações Azure
Sincronizar conteúdo de uma pasta de nuvem para o
Serviço de Aplicações Azure
29/04/2020 • 3 minutes to read • Edit Online
Este artigo mostra-lhe como sincronizar o seu conteúdo com o Serviço de Aplicações Azure a partir do Dropbox e
do OneDrive.
A implantação de sincronização de conteúdo sonoro a pedido é alimentada pelo motor de implantação Do Serviço
de Aplicação Kudu. Pode trabalhar com o seu código de aplicações e conteúdo numa pasta de nuvem designada e,
em seguida, sincronizar para o Serviço de Aplicações com o clique de um botão. A sincronização de conteúdo
utiliza o servidor de construção Kudu.
Só precisa de autorizar com o OneDrive ou o Dropbox uma vez. Se já estiver autorizado, basta clicar em
Continuar . Pode alterar a conta OneDrive ou Dropbox autorizada clicando na conta Change .
Na página Configure, selecione a pasta que pretende sincronizar. Esta pasta é criada sob o seguinte caminho de
conteúdo designado no OneDrive ou Dropbox.
OneDrive : Apps\Azure Web Apps
Dropbox : Apps\Azure
Quando terminar, clique em Continuar .
Na página Resumo, verifique as suas opções e clique em Terminar .
Sincronizar conteúdo
Quando pretender sincronizar conteúdo na sua pasta de nuvem com o Serviço de Aplicações, volte à página do
Centro de Implementação e clique em Sync .
NOTE
Devido às diferenças subjacentes nas APIs, o OneDrive for Business não é suportado neste momento.
Passos seguintes
Desdobre-se a partir de Git repo local
Implantação contínua para o Serviço de Aplicações
Azure
29/04/2020 • 14 minutes to read • Edit Online
O Serviço de Aplicações Azure permite a implantação contínua dos repositórios GitHub, BitBucket e Azure Repos,
puxando as últimas atualizações. Este artigo mostra-lhe como usar o portal Azure para implantar continuamente
a sua app através do serviço de construção Kudu ou dos Oleodutos Azure.
Para obter mais informações sobre os serviços de controlo de fontes, consulte [Criar um repo (GitHub)], [Criar
um repo (BitBucket)]ou [Criar um novo Repo Git (Azure Repos)].
PHP index.php
Para personalizar a sua implementação, inclua um ficheiro .deployment na raiz do repositório. Para mais
informações, consulte personalizar implementações e script de implementação personalizado.
NOTE
Se desenvolver no Visual Studio, deixe o Visual Studio criar um repositório para si. O projeto está imediatamente pronto
para ser implementado usando Git.
Autorizar o Serviço de Aplicações Azure
Para utilizar o Azure Repos, certifique-se de que a sua organização Azure DevOps está ligada à sua subscrição
Azure. Para mais informações, consulte A configuração de uma conta Azure DevOps Servicespara que possa ser
implementada para uma aplicação web .
Para bitbucket ou GitHub, autorize o Serviço de Aplicações Azure a ligar-se ao seu repositório. Só precisa
autorizar com um serviço de controlo de fontes uma vez.
1. No portal Azure,procure serviços de aplicações e selecione.
NOTE
Para utilizar o Azure Repos, certifique-se de que a sua organização Azure DevOps Services está ligada à sua
subscrição Azure. Para mais informações, consulte A configuração de uma conta Azure DevOps Servicespara que
possa ser implementada para uma aplicação web .
4. Para o GitHub ou Azure Repos, na página do fornecedor Build, selecione o serviço de construção do
Ser viço de Aplicações, e depois selecione Continuar . O Bitbucket usa sempre o serviço de construção
do Serviço de Aplicações.
5. Na página Configure:
Para o GitHub, desça e selecione a Organização , Repositório e Ramo que pretende implementar
continuamente.
NOTE
Se não vir quaisquer repositórios, poderá ter de autorizar o Azure App Service no GitHub. Navegue no seu
repositório GitHub e vá aAplicações OAuth autorizadas de > Definições. > Settings Selecione O
Serviço de Aplicações Azure e, em seguida, selecione Grant . Para os repositórios da organização, você
deve ser um proprietário da organização para conceder as permissões.
Para bitbucket, selecione a Equipa Bitbucket, repositório e Branch que pretende implementar
continuamente.
Para o Azure Repos, selecione a Organização Azure DevOps , Projeto, Repositório e Ramo que
pretende implementar continuamente.
NOTE
Se a sua organização Azure DevOps não estiver listada, certifique-se de que está ligada à sua subscrição
Azure. Para mais informações, consulte A configuração de uma conta Azure DevOps Servicespara que
possa ser implementada para uma aplicação web ..
6. Selecione Continuar .
7. Depois de configurar o fornecedor de construção, reveja as definições na página Resumo e, em seguida,
selecione Terminar .
8. Novos compromissos no repositório e sucursal selecionados agora implantam-se continuamente na sua
app App Service. Pode rastrear os compromissos e implementações na página do Centro de
Implantação.
5. Na página Configure, na secção Código, selecione a Organização, Repositório e Ramo que pretende
implementar continuamente e selecionar Continuar .
NOTE
Se não vir quaisquer repositórios, poderá ter de autorizar o Azure App Service no GitHub. Navegue no seu
repositório GitHub e vá aAplicações OAuth autorizadas de > Definições. > Settings Selecione O Serviço de
Aplicações Azure e, em seguida, selecione Grant . Para os repositórios da organização, você deve ser um
proprietário da organização para conceder as permissões.
Na secção Build, especifique a Organização Azure DevOps, Projeto, enquadramento linguístico que os
Oleodutos Azure devem usar para executar tarefas de construção e, em seguida, selecionar Continuar .
NOTE
Se a sua organização Azure DevOps existente não estiver listada, poderá ter de ligá-la à sua subscrição Azure. Para
mais informações, consulte Defina o seu pipelinede lançamento de CD .
Na secção Build, especifique a Organização Azure DevOps, Projeto, enquadramento linguístico que os
Oleodutos Azure devem usar para executar tarefas de construção e, em seguida, selecionar Continuar .
Recursos adicionais
Investigar questões comuns com implantação contínua
Utilizar o Azure PowerShell
Documentação git
Kudu do projeto
Implantação local de Git para o Serviço de
Aplicações Azure
29/04/2020 • 17 minutes to read • Edit Online
Este guia de como fazer mostra como implementar a sua aplicação para o Azure App Service a partir de um
repositório Git no seu computador local.
Pré-requisitos
Para seguir os passos neste guia:
Se não tiver uma subscrição do Azure,crie uma conta gratuita antes de começar.
Instale Git.
Tenha um repositório git local com código que queira implementar. Para descarregar um repositório de
amostras, faça o seguinte comando na janela do terminal local:
PHP index.php
NOTE
Se desenvolver no Visual Studio, deixe o Visual Studio criar um repositório para si. O projeto está imediatamente pronto
para ser implementado usando Git.
A saída JSON mostra null a palavra-passe como . Se obtiver o erro 'Conflict'. Details: 409 , altere o nome
de utilizador. Se obtiver o 'Bad Request'. Details: 400 erro, utilize uma palavra-passe mais forte.
Grave o seu nome de utilizador e palavra-passe para utilizar para implementar as suas aplicações web.
Obtenha o URL de implementação
Para obter o URL para permitir a implementação az webapp deployment source config-local-git local de Git
para uma aplicação existente, executar na Cloud Shell. Substitua <o nome <da aplicação> e o nome de
grupo> pelos nomes da sua aplicação e do seu grupo de recursos Azure.
NOTE
Se estiver a utilizar um plano de serviço de aplicações linux, tem de adicionar este parâmetro: --pitão de execução;3.7
Ou, para criar uma nova aplicação az webapp create ativada por Git, executada na Cloud Shell com o
--deployment-local-git parâmetro. Substitua <> de <nome de aplicativo,> de nome de grupo e <> de nome
de plano com os nomes da sua nova app Git, do seu grupo de recursos Azure e do seu plano de Serviço de
Aplicações Azure.
Utilize o URL que regressa para implementar a sua aplicação no próximo passo.
Implementar a aplicação web
1. Abra uma janela terminal local para o seu repositório git local e adicione um telecomando Azure. No
comando seguinte, <substitua o url> pelo URL específico do utilizador de implementação ou URL
específico da aplicação que obteve do passo anterior.
NOTE
Se a sua organização Azure DevOps existente não estiver listada, poderá ter de ligá-la à sua subscrição Azure.
Para mais informações, consulte Defina o seu pipelinede lançamento de CD .
6. Dependendo do seu nívelde preços do plano de app service, pode ver uma página de
implementação. Escolha se ativa as ranhurasde implementação e, em seguida, selecione Continue .
7. Na página Resumo, reveja as definições e, em seguida, selecione Terminar .
8. Quando o Gasoduto Azure estiver pronto, copie o URL de repositório Git da página do Centro de
Implantação para utilizar no próximo passo.
9. Na janela do terminal local, adicione um telecomando Azure ao seu repositório git local. No comando,
<substitua a url> com o URL do repositório Git que obteve do passo anterior.
10. Empurre para o git push azure master comando Azure com .
11. Na página git Credential Manager, inscreva-se com o seu nome de utilizador visualstudio.com. Para
outros métodos de autenticação, consulte a visão geral da autenticação dos Serviços Azure DevOps.
12. Uma vez terminada a implantação, veja o progresso da construção em
, e o progresso da implantação
https://<azure_devops_account>.visualstudio.com/<project_name>/_build
em https://<azure_devops_account>.visualstudio.com/<project_name>/_release .
13. Navegue na sua aplicação no portal Azure para verificar se o conteúdo está implementado.
Implantação de problemas
Pode ver as seguintes mensagens de erro comuns quando utilizar o Git para publicar numa aplicação do App
Service em Azure:
Unable to access '[siteURL]': A aplicação não está a funcionar. Inicie a aplicação no portal Azure. A
Failed to connect to implementação da Git não está
[scmAddress]
disponível quando a aplicação web é
interrompida.
Couldn't resolve host A informação de endereço para o Utilize git remote -v o comando
'hostname' telecomando 'azul' está incorreta. para listar todos os telecomandos,
juntamente com o URL associado.
Verifique se o URL para o
telecomando 'azul' está correto. Se
necessário, remova e recrie este
controlo remoto utilizando o URL
correto.
No refs in common and none Não especificou uma git push Volte git push a correr,
specified; doing nothing. sucursal durante, ou push.default especificando
Perhaps you should specify a
branch such as 'master'. não .gitconfig definiu o valor em . git push azure master o ramo
principal: .
src refspec [branchname] does Tentaste empurrar para um ramo que Volte git push a correr,
not match any. não seja o mestre no controlo remoto especificando
azul. git push azure master o ramo
principal: .
RPC failed; result=22, HTTP Este erro pode acontecer se tentar Mude a configuração git na
code = 5xx. empurrar um repositório de git postBuffer máquina local para fazer
grande sobre HTTPS. o maior. Por exemplo:
git config --global
http.postBuffer 524288000
.
Error - Changes committed to Implementou uma aplicação Node.js Reveja npm ERR! as mensagens de
remote repository but your web com um ficheiro package.json que erro antes deste erro para obter mais
app not updated.
especifica módulos adicionais contexto sobre a falha. Seguem-se as
necessários. causas conhecidas npm ERR! deste
erro e as mensagens correspondentes:
Recursos adicionais
Documentação do Projeto Kudu
Implantação contínua para o Serviço de Aplicações Azure
Amostra: Criar uma aplicação web e implementar código a partir de um repositório git local (Azure CLI)
Amostra: Criar uma aplicação web e implementar código a partir de um repositório git local (PowerShell)
Implementar para o Serviço de Aplicações usando
ações do GitHub
17/06/2020 • 8 minutes to read • Edit Online
GitHub Actions dá-lhe a flexibilidade para construir um fluxo de trabalho de ciclo de vida de desenvolvimento de
software automatizado. Com as Ações de Serviço de Aplicações Azure para GitHub, pode automatizar o seu fluxo
de trabalho para implantar no Azure App Service utilizando ações do GitHub.
IMPORTANT
GitHub Actions está atualmente em versão beta. Primeiro tem de se inscrever para se juntar à pré-visualização utilizando a
sua conta GitHub.
Um fluxo de trabalho é definido por um ficheiro YAML (.yml) no caminho do /.github/workflows/ seu repositório.
Esta definição contém os vários passos e parâmetros que compõem o fluxo de trabalho.
Para um fluxo de trabalho do Azure App Service, o ficheiro tem três secções:
SEC T IO N TA REFA S
Neste exemplo, substitua os espaços reservados no recurso pelo ID de subscrição, nome de grupo de recursos e
nome da aplicação. A saída são as credenciais de atribuição de funções que fornecem acesso à sua aplicação De
Serviço de Aplicações. Copie este objeto JSON, que pode utilizar para autenticar a partir do GitHub.
NOTE
Não precisa de criar um principal de serviço se decidir utilizar o perfil de publicação para autenticação.
IMPORTANT
É sempre uma boa prática conceder o mínimo acesso. É por isso que o âmbito do exemplo anterior está limitado à aplicação
específica do Serviço de Aplicações e não a todo o grupo de recursos.
- uses: azure/webapps-deploy@v2
with:
publish-profile: ${{ secrets.azureWebAppPublishProfile }}
.NET actions/setup-dotnet
Java actions/setup-java
JavaScript actions/setup-node
Python actions/setup-python
Os exemplos a seguir mostram a parte do fluxo de trabalho que configura o ambiente para as várias línguas
apoiadas:
JavaScript
Python
.NET
Python
.NET
Java
- uses: actions/checkout@v1
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build with Maven
run: mvn -B package --file pom.xml
PA RÂ M ET RO EXP L IC A Ç Ã O
nome slot (Opcional) Introduza uma ranhura existente que não seja a
ranhura de produção
# File: .github/workflows/workflow.yml
on: push
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# checkout the repo
- name: 'Checkout GitHub Action'
uses: actions/checkout@master
- name: 'Run Azure webapp deploy action using publish profile credentials'
uses: azure/webapps-deploy@v2
with:
app-name: node-rn
publish-profile: ${{ secrets.azureWebAppPublishProfile }}
on: [push]
name: Node.js
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# checkout the repo
- name: 'Checkout GitHub Action'
uses: actions/checkout@master
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
# Azure logout
- name: logout
run: |
az logout
Passos seguintes
Você pode encontrar o nosso conjunto de Ações agrupadas em diferentes repositórios no GitHub, cada um
contendo documentação e exemplos para ajudá-lo a usar GitHub para CI/CD e implementar suas aplicações para
Azure.
Fluxo de trabalho de ações para implantar para Azure
Início de sessão no Azure
Azure WebApp
Azure WebApp para contentores
Login/logout do Docker
Eventos que desencadeiam fluxos de trabalho
Implantação de K8s
Fluxos de trabalho de arranque
Fornecimento e implantação de microserviços
previsivelmente em Azure
28/04/2020 • 29 minutes to read • Edit Online
Este tutorial mostra como fornecer e implementar uma aplicação composta por microserviços no Serviço de
Aplicações Azure como uma única unidade e de forma previsível usando modelos de grupo de recursos JSON e
scripts PowerShell.
Ao fornecer e implementar aplicações de alta escala compostas por microserviços altamente dissociados, a
repetível e a previsibilidade são cruciais para o sucesso. O Azure App Service permite-lhe criar microserviços que
incluam aplicações web, back ends móveis e aplicações API. O Azure Resource Manager permite-lhe gerir todos os
microserviços como uma unidade, juntamente com dependências de recursos, tais como bases de dados e
configurações de controlo de fontes. Agora, você também pode implementar tal aplicação usando modelos JSON
e scripts powerShell simples.
4. Em seguida, clique em Implementar para iniciar o processo de implementação. Uma vez que o processo
http://todoappse esgote, clique no link XXXX.azurewebsites.net para navegar na aplicação implementada.
O UI seria um pouco lento quando se navega pela primeira vez porque as aplicações estão apenas a
começar, mas convença-se de que é uma aplicação totalmente funcional.
5. De volta à página 'Enviar', clique no link Gerir para ver a nova aplicação no Portal Azure.
6. No dropdown Essentials, clique no link do grupo de recursos. Note também que a aplicação já está ligada
ao repositório GitHub no âmbito do Projeto Externo .
7. Na lâmina do grupo de recursos, note que já existem duas apps e uma Base de Dados SQL no grupo de
recursos.
Tudo o que viu em poucos minutos é uma aplicação de dois microserviços totalmente implantada, com todos os
componentes, dependências, configurações, base de dados e publicação contínua, criada por uma orquestração
automatizada no Azure Resource Manager. Tudo isto foi feito por duas coisas:
O botão Deploy para Azure
azuredeploy.json na raiz repo
Pode implementar esta mesma aplicação dezenas, centenas ou milhares de vezes e ter sempre a mesma
configuração. A repetível e a previsibilidade desta abordagem permitem-lhe implementar aplicações de alta escala
com facilidade e confiança.
2. Da raiz do repositório, azuredeploy.json aberto no Estúdio Visual. Se não vir o painel de contorno jSON,
precisa de instalar o Azure .NET SDK.
Não vou descrever todos os detalhes do formato JSON, mas a secção Mais Recursos tem links para aprender a
linguagem do modelo do grupo de recursos. Aqui, vou mostrar-lhe as funcionalidades interessantes que podem
ajudá-lo a começar a fazer o seu próprio modelo personalizado para implementação de apps.
Parâmetros
Dê uma olhada na secção de parâmetros para ver se a maioria destes parâmetros são o que o botão Deploy to
Azure o leva a inserir. O local por trás do botão Deploy to Azure povoa o UI de entrada utilizando os parâmetros
definidos em azuredeploy.json. Estes parâmetros são utilizados ao longo das definições de recursos, tais como
nomes de recursos, valores de propriedade, etc.
Recursos
No nó de recursos, você pode ver que 4 recursos de alto nível são definidos, incluindo uma instância SQL Server,
um plano de Serviço de Aplicações e duas aplicações.
Plano do App Service
Vamos começar com um simples recurso de nível de raiz no JSON. No contorno jSON, clique no plano de serviço
de aplicações nomeado [hostingPlanName] para destacar o código JSON correspondente.
Note que type o elemento especifica a cadeia para um plano de Serviço de Aplicações (foi chamado de quinta de
servidores há muito, muito tempo), e outros elementos e propriedades são preenchidos usando os parâmetros
definidos no ficheiro JSON, e este recurso não tem recursos aninhados.
NOTE
Note também que apiVersion o valor do diz ao Azure com que versão da API REST utilizar a definição {} de recursos
JSON, e pode afetar a forma como o recurso deve ser formatado dentro da .
SQL Server
Em seguida, clique no recurso SQL Server chamado SQLSer ver no contorno JSON.
Note o seguinte sobre o código JSON realçado:
A utilização de parâmetros garante que os recursos criados são nomeados e configurados de uma forma
que os torna consistentes uns com os outros.
O recurso SQLServer tem dois recursos aninhados, cada um tem um valor diferente para type .
Os recursos aninhados no interior, “resources”: […] onde a dependsOn base de dados e as regras de
firewall são definidas, têm um elemento que especifica o ID de recurso do recurso SQLServer de nível raiz.
Isto diz ao Azure Resource Manager, "antes de criar este recurso, esse outro recurso já deve existir; e se esse
outro recurso for definido no modelo, então crie-o primeiro".
NOTE
Para obter informações detalhadas sobre como utilizar a resourceId() função, consulte funções de modelo de
gestor de recursos do Azure.
O efeito dependsOn do elemento é que o Gestor de Recursos Azure pode saber quais os recursos que
podem ser criados em paralelo e quais os recursos que devem ser criados sequencialmente.
Aplicação do Serviço de Aplicações
Agora, vamos passar para as próprias aplicações, que são mais complicadas. Clique na aplicação
[variáveis('apiSiteName')] no Contorno JSON para destacar o seu código JSON. Vais reparar que as coisas estão a
ficar muito mais interessantes. Para este fim, falarei sobre as características, uma a uma:
R e c u r so d e r a i z
A aplicação depende de dois recursos diferentes. Isto significa que o Gestor de Recursos Azure só criará a app
depois de criado o plano de Serviço de Aplicações e a instância do Servidor SQL.
D e fi n i ç õ e s d a a p l i c a ç ã o
PROJECT é um cenário KUDU que diz à implantação do Azure qual o projeto a utilizar numa solução de estúdio
visual multi-projeto. Mostrar-lhe-ei mais tarde como o controlo de fontes está configurado, mas como o código
ToDoApp está numa solução de estúdio visual multi-projeto, precisamos desta definição.
clientUrl é simplesmente uma definição de aplicação que o código de aplicação utiliza.
Cadei as de l i gaç ão
TIP
Para obter uma lista definitiva dos tipos de cordas de [ligação, execute o seguinte comando em Azure PowerShell:
Enum:GetNames ("Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebEntities.DatabaseType")
C o n t r o l o d e c ó d i g o fo n t e
As definições de controlo de origem também são definidas como um recurso aninhado. O Azure Resource
Manager utiliza este recurso para configurar a publicação contínua (ver ressalva mais IsManualIntegration tarde)
e também para iniciar a implementação do código de aplicação automaticamente durante o processamento do
ficheiro JSON.
RepoUrl e branch deve ser bastante intuitivo e deve apontar para o repositório Git e o nome da sucursal para
publicar. Mais uma vez, estes são definidos por parâmetros de entrada.
Note no dependsOn elemento que, além do próprio sourcecontrols/web recurso da config/appsettings
config/connectionstrings aplicação, também depende e . Isto porque sourcecontrols/web uma vez configurado, o
processo de implementação do Azure tentará automaticamente implementar, construir e iniciar o código de
aplicação. Por isso, inserir esta dependência ajuda-o a certificar-se de que a aplicação tem acesso às definições de
aplicação e às cordas de ligação necessárias antes de o código de aplicação ser executado.
NOTE
Nota também IsManualIntegration que true está definido para . Esta propriedade é necessária neste tutorial porque
você realmente não é dono do repositório GitHub, e assim não pode realmente conceder permissão ao Azure para
configurar a publicação contínua do ToDoApp (isto é, impulsionar atualizações automáticas de repositório para Azure). Só
pode utilizar false o valor predefinido para o repositório especificado se tiver configurado as credenciais GitHub do
proprietário no portal Azure antes. Por outras palavras, se tiver configurado o controlo de origem para o GitHub ou
BitBucket para qualquer aplicação no Portal Azure anteriormente, utilizando as credenciais de utilizador, então o Azure
lembrar-se-á das credenciais e usá-las-á sempre que implementar qualquer aplicação do GitHub ou BitBucket no futuro. No
entanto, se ainda não o fez, a implementação do modelo JSON falhará quando o Gestor de Recursos do Azure tentar
configurar as definições de controlo de fonte da aplicação, porque não consegue entrar no GitHub ou bitBucket com as
credenciais do proprietário do repositório.
Se perfurar uma aplicação, deverá ser capaz de ver detalhes de configuração da aplicação semelhantes ao
screenshot abaixo:
Mais uma vez, os recursos aninhados devem ter uma hierarquia muito semelhante às do seu ficheiro de modelo
JSON, e você deve ver as definições da aplicação, cordas de ligação, etc., devidamente refletidas no painel JSON. A
ausência de definições aqui pode indicar um problema com o seu ficheiro JSON e pode ajudá-lo a resolver o seu
ficheiro de modelo JSON.
Agora poderá ver vários novos recursos que, dependendo do recurso e do que faz, têm dependências do
plano de Serviço de Aplicações ou da app. Estes recursos não são ativados pela sua definição existente e tu
vais mudar isso.
8. No Contorno JSON, clique em appInsights AutoScale para destacar o seu código JSON. Este é o ajuste de
escala para o seu plano de Serviço de Aplicações.
9. No código JSON destacado, location localize as propriedades e enabled coloque-as como mostrado
abaixo.
10. No Contorno JSON, clique em CPUHigh appInsights para destacar o seu código JSON. Isto é um alerta.
11. Localize location isEnabled as propriedades e coloque-as como mostrado abaixo. Faça o mesmo com os
outros três alertas (lâmpadas roxas).
12. Está pronto para partir. Clique no direito do projeto e selecione Implementar > Nova Implementação .
13. Inicie sessão na sua conta Azure se ainda não o fez.
14. Selecione um grupo de recursos existente na sua subscrição ou crie um novo, selecione
azuredeploy.json e, em seguida, clique em Editar Parâmetros .
Agora poderá editar todos os parâmetros definidos no ficheiro do modelo numa mesa bonita. Os
parâmetros que definem os incumprimentos já terão os seus valores predefinidos, e os parâmetros que
definem uma lista de valores permitidos serão mostrados como downdowns.
15. Preencha todos os parâmetros vazios e utilize o endereço de repo GitHub para ToDoApp no repoUrl . Em
seguida, clique em Guardar .
NOTE
A autoscalcificação é uma funcionalidade oferecida no nível Standard ou superior, e os alertas de nível de plano são
funcionalidades oferecidas em nível Básico ou superior, terá de definir o parâmetro sku para Standard ou
Premium para ver todos os seus novos recursos app Insights iluminarem-se.
O último cmdlet, New-AzureResourceGroup é aquele que realmente realiza a ação. Tudo isto deve demonstrar-lhe
que, com a ajuda da ferramenta, é relativamente simples implementar a sua aplicação na nuvem previsivelmente.
Sempre que executar o cmdlet no mesmo modelo com o mesmo ficheiro de parâmetro, terá o mesmo resultado.
Resumo
Em DevOps, a repetível e a previsibilidade são chaves para qualquer implementação bem sucedida de uma
aplicação de alta escala composta por microserviços. Neste tutorial, implementou uma aplicação de dois
microserviços para o Azure como um único grupo de recursos utilizando o modelo do Gestor de Recursos Azure.
Esperemos que tenha lhe dado o conhecimento de que precisa para começar a converter a sua aplicação em Azure
num modelo e pode fortí-la e implantá-la previsivelmente.
Mais recursos
Linguagem do modelo do gestor de recursos azure
Autor de modelos de gestor de recursos azure
Funções de modelo de gestor de recursos azure
Implementar uma aplicação com o modelo de Gestor de Recursos Azure
Utilizar o Azure PowerShell com o Azure Resource Manager
Implantações de grupos de recursos de resolução de problemas em Azure
Passos seguintes
Para conhecer a sintaxe da JSON e propriedades para tipos de recursos implantados neste artigo, consulte:
Microsoft.Sql/servidores
Microsoft.Sql/servidores/bases de dados
Microsoft.Sql/servidores/firewallRules
Microsoft.Web/serverfarms
Microsoft.Web/sites
Microsoft.Web/sites/slots
Microsoft.Insights/autoscalesettings
Configure credenciais de implementação para o
Serviço de Aplicações Azure
20/05/2020 • 6 minutes to read • Edit Online
O Azure App Service suporta dois tipos de credenciais para a implantação local de Git e implantação ftp/s. Estas
credenciais não são as mesmas que as suas credenciais de subscrição Azure.
Credenciais ao nível do utilizador : um conjunto de credenciais para toda a conta Azure. Pode ser
usado para implementar no App Service para qualquer aplicação, em qualquer subscrição, que a conta
Azure tenha permissão para aceder. É o conjunto padrão que é surgido no portal GUI (como a visão geral
e propriedades da página de recursosda app). Quando um utilizador tem acesso à aplicação através de
permissões de Controlo de Acesso Baseados em Funções (RBAC) ou de coadmino, esse utilizador pode
utilizar as suas próprias credenciais de nível de utilizador até que o acesso seja revogado. Não partilhe
estas credenciais com outros utilizadores do Azure.
Credenciais de nível de aplicações : um conjunto de credenciais para cada aplicação. Pode ser usado
para implantar apenas nessa aplicação. As credenciais para cada aplicação são geradas automaticamente
na criação de apps. Não podem ser configurados manualmente, mas podem ser reiniciados a qualquer
momento. Para que um utilizador tenha acesso a credenciais de nível de aplicações através de RBAC, esse
utilizador deve ser contribuinte ou superior na aplicação (incluindo a função incorporada do Colaborador
do Website). Os leitores não estão autorizados a publicar, e não podem aceder a essas credenciais.
A saída JSON mostra a palavra-passe como null . Se obtiver o erro 'Conflict'. Details: 409 , altere o nome de
utilizador. Se obtiver o 'Bad Request'. Details: 400 erro, utilize uma palavra-passe mais forte.
No portal
No portal Azure, deve ter pelo menos uma aplicação antes de poder aceder à página de credenciais de
implementação. Para configurar as suas credenciais de nível de utilizador:
1. No portal Azure, a partir do menu esquerdo, selecione Ser viços de Aplicação > ** < any_app>**
Centro de > Implantação > FTP > Dashboard .
Ou, se já configurar a implementação do Git, selecione App Ser vices > ** < any_app>** > Deployment
center > FTP/Credentials .
NOTE
O Azure não mostra a sua senha de implementação ao nível do utilizador. Se esquecer a palavra-passe, pode redefinir as
suas credenciais seguindo os passos nesta secção.
Passos seguintes
Descubra como usar estas credenciais para implementar a sua aplicação a partir de Git local ou usando FTP/S.
Configurar ambientes de teste no Serviço de
Aplicações do Azure
09/05/2020 • 36 minutes to read • Edit Online
Quando implementa a sua aplicação web, aplicação web no Linux, back back back móvel ou aplicação API
para o Azure App Service,pode utilizar uma ranhura de implementação separada em vez da ranhura de
produção padrão quando estiver a funcionar no nível de plano de plano standard , Premium ou Isolated
App Service. As ranhuras de implementação são aplicações ao vivo com os seus próprios nomes de
anfitriões. Os elementos de conteúdo e configuração da aplicação podem ser trocados entre duas ranhuras
de implementação, incluindo a ranhura de produção.
A implementação da sua aplicação para uma ranhura não produtiva tem os seguintes benefícios:
Pode validar as alterações de aplicações numa ranhura de implementação de encenação antes de trocá-
la com a ranhura de produção.
A implementação de uma aplicação para uma ranhura primeiro e a sua troca em produção certifica-se
de que todos os casos da ranhura são aquecidos antes de serem trocados em produção. Isto elimina o
tempo de inatividade quando implementa a sua aplicação. A reorientação do tráfego é perfeita, e
nenhum pedido é retirado por causa de operações de permuta. Pode automatizar todo este fluxo de
trabalho configurando a troca de automóveis quando não é necessária a validação pré-swap.
Depois de uma troca, a ranhura com aplicação previamente encenada tem agora a app de produção
anterior. Se as alterações trocadas na ranhura de produção não forem como espera, pode realizar a
mesma troca imediatamente para recuperar o seu "último bom site conhecido".
Cada nível de plano de app service suporta um número diferente de slots de implementação. Não há
nenhuma taxa adicional para usar ranhuras de implantação. Para saber o número de slots dos suportes de
nível da sua aplicação, consulte os limitesdo Serviço de Aplicações .
Para escalar a sua aplicação para um nível diferente, certifique-se de que o nível de destino suporta o
número de slots que a sua aplicação já utiliza. Por exemplo, se a sua aplicação tiver mais de cinco slots, não
pode escaloná-la para o nível Standard, porque o nível Standard suporta apenas cinco slots de
implementação.
Adicionar um bloco
A aplicação deve estar a funcionar no nível Standard , Premium ou Isolado para que possa ativar várias
ranhuras de implementação.
1. no portal Azure,procure e selecione Ser viços de Aplicações e selecione a sua aplicação.
2. No painel esquerdo, selecione ranhuras > de implantaçãoAdicione ranhuras .
NOTE
Se a aplicação ainda não estiver no nível Standard , Premium, ou Isolado, recebe uma mensagem que
indica os níveis suportados para permitir a publicação encenada. Neste ponto, tem a opção de selecionar
upgrade e ir ao separador Escala da sua aplicação antes de continuar.
3. Na caixa de diálogo Adicionar, dar um nome à ranhura e selecionar se clonar uma configuração de
aplicação a partir de outra ranhura de implementação. Selecione Adicionar para continuar.
Pode clonar uma configuração a partir de qualquer ranhura existente. As definições que podem ser
clonadas incluem definições de aplicativos, cordas de ligação, versões de enquadramento de idioma,
tomadas web, versão HTTP e bitness da plataforma.
4. Depois de adicionada a ranhura, selecione Feche para fechar a caixa de diálogo. A nova ranhura está
agora mostrada na página de ranhuras de implantação. Por predefinição, o tráfego % está
definido para 0 para a nova ranhura, com todo o tráfego do cliente encaminhado para a ranhura de
produção.
5. Selecione a nova ranhura de implementação para abrir a página de recursos da ranhura.
A slot de encenação tem uma página de gestão como qualquer outra app do App Service. Pode
alterar a configuração da ranhura. Para lembrá-lo que está a visualizar a ranhura de implementação,
o nome da aplicação é mostrado como ** <nome de aplicação>/<nome de slot>**, e o tipo de
aplicação é App Service (Slot) . Também pode ver a ranhura como uma aplicação separada no seu
grupo de recursos, com as mesmas designações.
6. Selecione o URL da aplicação na página de recursos da ranhura. A ranhura de implementação tem o
seu próprio nome de anfitrião e é também uma aplicação ao vivo. Para limitar o acesso do público à
ranhura de implantação, consulte as restrições IP do Serviço de Aplicações Azure.
A nova ranhura de implementação não tem conteúdo, mesmo que clone as definições de uma ranhura
diferente. Por exemplo, pode publicar nesta ranhura com Git. Você pode implantar para a ranhura a partir
de um ramo de repositório diferente ou de um repositório diferente.
NOTE
Algumas definições de aplicações que se aplicam a definições não trocadas também não são trocadas. Por exemplo,
uma vez que as definições WEBSITE_HTTPLOGGING_RETENTION_DAYS DIAGNOSTICS_AZUREBLOBRETENTIONDAYS de
diagnóstico não são trocadas, as configurações de aplicações relacionadas como e também não são trocadas, mesmo
que não apareçam como configurações de slot.
Para configurar uma definição de aplicação ou uma cadeia de ligação para se agarrar a uma ranhura
específica (não trocada), vá à página de Configuração para essa ranhura. Adicione ou edite uma definição
e, em seguida, selecione a definição de ranhura de implementação . A seleção desta caixa de verificação diz
ao Serviço de Aplicações que a definição não é permutável.
A caixa de diálogo Swap mostra as definições na fonte selecionada e as ranhuras de destino que
serão alteradas.
2. Selecione as ranhuras de Origem e Alvo desejadas. Normalmente, o alvo é a ranhura de produção.
Além disso, selecione os separadores de Alterações de Origem e Alterações de Destino e verifique
se as alterações de configuração são esperadas. Quando terminar, pode trocar imediatamente as
ranhuras selecionando Swap .
Para ver como o seu slot de destino funcionaria com as novas definições antes da troca realmente
acontecer, não selecione Swap , mas siga as instruções em Troca com pré-visualização.
3. Quando terminar, feche a caixa de diálogo selecionando Fechar .
Se tiver algum problema, consulte as trocas de Troubleshoot.
Troque com pré -visualização (troca de várias fases)
Antes de trocar em produção como o slot alvo, valide que a aplicação funciona com as definições trocadas.
A ranhura de origem também é aquecida antes da conclusão da permuta, o que é desejável para aplicações
críticas de missão.
Quando realiza uma troca com pré-visualização, o Serviço de Aplicações realiza a mesma operação de
swap, mas faz pausas após o primeiro passo. Em seguida, pode verificar o resultado da ranhura de
preparação antes de concluir a troca.
Se cancelar a troca, o Serviço de Aplicações reaplica elementos de configuração à ranhura de origem.
Para trocar com pré-visualização:
1. Siga os passos nas ranhuras de implementação swap, mas selecione Executar a troca com pré-
visualização .
A caixa de diálogo mostra-lhe como a configuração da ranhura de origem muda na fase 1 e como a
fonte e a ranhura do alvo mudam na fase 2.
2. Quando estiver pronto para iniciar a troca, selecione Iniciar a troca .
Quando a fase 1 terminar, é notificado na caixa de diálogo. Pré-visualizar a troca na
https://<app_name>-<source-slot-name>.azurewebsites.net ranhura de origem indo para .
3. Quando estiver pronto para completar o swap pendente, selecione 'Swap' completo na ação
Swap e selecione 'Swap Completo ' .
Para cancelar uma troca pendente, selecione Cancelar Trocar em vez disso.
4. Quando terminar, feche a caixa de diálogo selecionando Fechar .
Se tiver algum problema, consulte as trocas de Troubleshoot.
Para automatizar uma troca de várias fases, consulte Automatizar com PowerShell.
A troca de automóveis dinamiza cenários Azure DevOps onde pretende implementar a sua aplicação
continuamente com zero arranques a frio e zero tempo de inatividade para os clientes da app. Quando a
troca automática é ativada a partir de uma ranhura para a produção, sempre que empurra slot alterações de
código para essa ranhura, o Serviço de Aplicações troca automaticamente a app em produção depois de
aquecida na ranhura de origem.
NOTE
Antes de configurar a troca automática para a ranhura de produção, considere testar a troca automática numa
ranhura-alvo não produtiva.
3. Execute um impulso de código para a ranhura de origem. A troca de automóveis acontece após um
curto período de tempo e a atualização reflete-se no URL da sua ranhura-alvo.
Se tiver algum problema, consulte as trocas de Troubleshoot.
<system.webServer>
<applicationInitialization>
<add initializationPage="/" hostName="[app hostname]" />
<add initializationPage="/Home/About" hostName="[app hostname]" />
</applicationInitialization>
</system.webServer>
NOTE
O <applicationInitialization> elemento de configuração faz parte de cada start-up de cada aplicação,
enquanto as duas definições de aplicativos de comportamento de aquecimento aplicam-se apenas a swaps de slot.
Tráfego de rota
Por padrão, todos os pedidos do cliente http://<app_name>.azurewebsites.net para o URL de produção da
aplicação são encaminhados para a ranhura de produção. Pode saquear uma parte do tráfego para outra
ranhura. Esta funcionalidade é útil se precisar de feedback do utilizador para uma nova atualização, mas não
está pronto para lançá-la para produção.
Tráfego de produção de rotas automaticamente
Para encaminhar automaticamente o tráfego de produção:
1. Vá à página de recursos da sua aplicação e selecione ranhuras de implementação .
2. Na coluna Tráfego % da ranhura que pretende encaminhar para, especificar uma percentagem
(entre 0 e 100) para representar a quantidade total de tráfego que pretende encaminhar. Selecione
Guardar .
Após a definição ser guardada, a percentagem especificada de clientes é aleatoriamente encaminhada para
a ranhura de não produção.
Depois de um cliente ser automaticamente encaminhado para uma vaga específica, é "fixado" para aquela
ranhura para a vida daquela sessão de cliente. No navegador cliente, pode ver qual a ranhura a que
x-ms-routing-name a sua sessão está fixada olhando para o cookie nos seus cabeçalhos HTTP. Um pedido
que é encaminhado para a ranhura de x-ms-routing-name=staging "encenação" tem o cookie. Um pedido que
é encaminhado para a ranhura x-ms-routing-name=self de produção tem o cookie.
NOTE
Junto ao portal Azure, também az webapp traffic-routing set pode utilizar o comando no Azure CLI para
definir as percentagens de encaminhamento de ferramentas CI/CD, como os gasodutos DevOps ou outros sistemas
de automação.
<webappname>.azurewebsites.net/?x-ms-routing-name=staging
Por padrão, são dadas novas ranhuras com uma regra de encaminhamento de 0% , mostrada em cinza.
Quando define explicitamente 0% este valor (mostrado em texto preto), os seus utilizadores
x-ms-routing-name podem aceder manualmente à ranhura de paragem utilizando o parâmetro de consulta.
Mas não serão encaminhados automaticamente para a ranhura porque a percentagem de encaminhamento
está definida para 0. Este é um cenário avançado onde pode "esconder" a sua ranhura de encenação do
público, permitindo que as equipas internas testem alterações na ranhura.
O Azure PowerShell é um módulo que fornece cmdlets para gerir o Azure através do Windows PowerShell,
incluindo suporte para gerir slots de implementação no Serviço de Aplicações Azure.
Para obter informações sobre a instalação e configuração do Azure PowerShell e sobre a autenticação do
Azure PowerShell com a sua subscrição Azure, consulte como instalar e configurar o Microsoft Azure
PowerShell.
New-AzWebApp -ResourceGroupName [resource group name] -Name [app name] -Location [location] -
AppServicePlan [app service plan name]
New-AzWebAppSlot -ResourceGroupName [resource group name] -Name [app name] -Slot [deployment slot name]
-AppServicePlan [app service plan name]
Iniciar uma troca com uma pré -visualização (permuta de várias fases) e aplicar a configuração da ranhura
de destino na ranhura de origem
Este modelo de Gestor de Recursos é idempotente, o que significa que pode ser executado repetidamente e
produzir o mesmo estado das ranhuras. Após a primeira targetBuildVersion execução, buildVersion
corresponderá à corrente, pelo que não será desencadeada uma troca.
<conditions>
<add input="{WARMUP_REQUEST}" pattern="1" negate="true" />
<add input="{REMOTE_ADDR}" pattern="^100?\." negate="true" />
...
</conditions>
Sem um aquecimento personalizado, as regras de reescrita de URL ainda podem bloquear pedidos
HTTP. Para resolver este problema, modifique as suas regras de reescrita adicionando a seguinte
condição:
<conditions>
<add input="{REMOTE_ADDR}" pattern="^100?\." negate="true" />
...
</conditions>
Algumas regras de restrição IP podem impedir que a operação de swap envie pedidos HTTP para a
sua aplicação. Os intervalos de endereços 10. 100. IPv4 que começam e são internos à sua
implantação. Deve permitir que se conectem à sua aplicação.
Após trocas de slot, a aplicação pode experimentar reiniciações inesperadas. Isto porque, após uma
troca, a configuração de ligação do nome de anfitrião fica dessincronizada, o que por si só não causa
reinícios. No entanto, certos eventos de armazenamento subjacentes (tais como falhas no volume de
armazenamento) podem detetar estas discrepâncias e forçar todos os processos dos trabalhadores a
reiniciar. Para minimizar este tipo de reinícios, defina a
WEBSITE_ADD_SITENAME_BINDINGS_IN_APPHOST_CONFIG=1 definição da aplicação em todas as ranhuras. No
entanto, esta definição de aplicações não funciona com aplicações da Windows Communication
Foundation (WCF).
Passos seguintes
Bloquear o acesso a faixas horárias não produtivas
Orientação sobre a implementação de aplicações
web utilizando modelos de Gestor de Recursos Azure
29/04/2020 • 7 minutes to read • Edit Online
Este artigo fornece recomendações para a criação de modelos do Gestor de Recursos Azure para implementar
soluções do Serviço de Aplicações Azure. Estas recomendações podem ajudá-lo a evitar problemas comuns.
Definir dependências
Definir dependências para aplicações web requer uma compreensão de como os recursos dentro de uma aplicação
web interagem. Se especificar dependências numa ordem incorreta, poderá causar erros de implantação ou criar
uma condição de corrida que trave a implantação.
WARNING
Se incluir uma extensão do site MSDeploy no seu modelo, deve definir quaisquer recursos de configuração conforme
dependente do recurso MSDeploy. As alterações de configuração fazem com que o site reinicie assíncronamente. Ao tornar
os recursos de configuração dependentes do MSDeploy, certifique-se de que o MSDeploy termina antes do reinício do site.
Sem estas dependências, o site poderá reiniciar durante o processo de implementação do MSDeploy. Para um modelo de
exemplo, consulte o modelo WordPress com dependênciade implementação web .
{
"name": "[parameters('appName')]",
"type": "Microsoft.Web/Sites",
...
"resources": [
{
"name": "MSDeploy",
"type": "Extensions",
"dependsOn": [
"[concat('Microsoft.Web/Sites/', parameters('appName'))]",
"[concat('Microsoft.Sql/servers/', parameters('dbServerName'), '/databases/',
parameters('dbName'))]",
],
...
},
{
"name": "connectionstrings",
"type": "config",
"dependsOn": [
"[concat('Microsoft.Web/Sites/', parameters('appName'), '/Extensions/MSDeploy')]"
],
...
}
]
}
Para uma amostra pronta a ser executada que utilize o código acima, consulte Modelo: Construa uma simples
Aplicação Web Umbraco.
{
"apiVersion": "2016-08-01",
"name": "[concat(parameters('siteNamePrefix'), uniqueString(resourceGroup().id))]",
"type": "Microsoft.Web/sites",
...
}
Se o seu modelo incluir um recurso Microsoft.Web/certificados para a ligação TLS/SSL, e o certificado estiver
armazenado num Cofre de Chaves, deve certificar-se de que a identidade do Serviço de Aplicações pode aceder ao
certificado.
No Azure global, o diretor de serviços de aplicações tem a identificação de abfa0a7c-a6b6-4736-8310-
5855508787cd . Para conceder acesso ao Key Vault para o diretor de serviço de aplicações, utilize:
Set-AzKeyVaultAccessPolicy `
-VaultName KEY_VAULT_NAME `
-ServicePrincipalName abfa0a7c-a6b6-4736-8310-5855508787cd `
-PermissionsToSecrets get `
-PermissionsToCertificates get
Passos seguintes
Para um tutorial sobre a implementação de aplicações web com um modelo, consulte provision e implemente
microserviços previsivelmente em Azure.
Para conhecer a sintaxe jSON e propriedades para tipos de recursos em modelos, consulte a referência do
modelo do Gestor de Recursos Azure.
Buy a custom domain name for Azure App Service
(Comprar um nome de domínio personalizado para
o Serviço de Aplicações do Azure)
30/04/2020 • 20 minutes to read • Edit Online
Os domínios do Serviço de Aplicações são domínios de alto nível que são geridos diretamente no Azure.
Facilitam a gestão de domínios personalizados para o Azure App Service. Este tutorial mostra-lhe como comprar
um domínio de Serviço de Aplicações e atribuir nomes de DNS ao Serviço de Aplicações Azure.
Para armazenamento Azure VM ou Azure, consulte o domínio de Serviço de Atribuição de Aplicações para O
Armazenamento Azure VM ou Azure. Para serviços de nuvem, consulte Configurar um nome de domínio
personalizado para um serviçode nuvem Azure .
Pré-requisitos
Para concluir este tutorial:
Crie uma aplicação do Serviço de Aplicações ou utilize uma aplicação que tenha criado para outro tutorial.
Remova o limite de gastos na sua subscrição. Não é possível comprar domínios do Serviço app com créditos
de subscrição gratuitos.
Preparar a aplicação
NOTE
Os planos de hospedagem gratuitos e partilhados (pré-visualização) são os planos de hospedagem de níveis base que
funcionam nas mesmas máquinas virtuais Azure que outras aplicações do App Service. Algumas aplicações podem
pertencer a outros clientes. Estas camadas destinam-se a ser utilizadas apenas para efeitos de desenvolvimento e teste.
Para utilizar domínios personalizados no Serviço de Aplicações Azure, o plano de Serviço de Aplicações da sua
aplicação deve ser um nível pago (Shared, Basic, Standard ou Premium). Neste passo, certifique-se de que a
aplicação está no nível de preços suportado.
Iniciar sessão no Azure
Abra ao portal do Azure e inicie sessão com a sua conta do Azure.
Navegar para a aplicação no portal do Azure
No menu à esquerda, selecione Ser viços de Aplicações e selecione o nome da aplicação Web.
Será apresentada a página de gestão da aplicação do Serviço de Aplicações.
Verificar o escalão de preço
No painel de navegação esquerdo da página da aplicação, desloque-se para a secção Definições e selecione
Aumentar ver ticalmente (plano do Ser viço de Aplicações) .
O escalão atual da aplicação é realçado com um limite azul. Confirme que a aplicação não está no escalão F1 . O
DNS personalizado não é suportado no escalão F1 .
Se o plano de Serviço de Aplicações não estiver no nível F1, feche a página Scale up e salte para Comprar o
domínio.
Aumentar verticalmente o plano do Serviço de Aplicações
Selecione qualquer uma das camadas não gratuitas (D1 , B1 , B2 , B3 ou qualquer camada na categoria
Produção ). Para obter opções adicionais, clique em Ver opções adicionais .
Clique em Aplicar .
Quando vir a notificação seguinte, significa que a operação de dimensionamento está completa.
Comprar o domínio
Informação sobre preços
Para obter informações sobre os domínios do serviço de aplicações do Azure, visite a página de preços do
serviço de aplicações e desloque-se até ao Domínio do Serviço de Aplicações.
Iniciar sessão no Azure
Abra ao portal do Azure e inicie sessão com a sua conta do Azure.
Domínios de compra de lançamento
No separador Serviços de Aplicações, clique no nome da sua aplicação, selecione Definições e, em seguida,
selecione domínios Personalizados
NOTE
Se não conseguir ver a secção domínios do serviço de aplicações, tem de remover o limite de gastos na sua conta Azure
(ver Pré-requisitos).
Clique nas Informações de Contacto e preencha o formulário de informação de contacto do domínio. Quando
terminar, clique em OK para voltar à página de Domínio do Serviço de Aplicações.
É importante que preencha todos os campos necessários com a maior precisão possível. Dados incorretos para
informações de contacto podem resultar na não compra de domínios.
Em seguida, selecione as opções desejadas para o seu domínio. Consulte a tabela seguinte para obter
explicações:
NOTE
Os domínios do serviço de aplicações usam o GoDaddy para o registo de domínioe o Azure DNS para acolher os domínios.
Além da taxa de registo de domínio, aplicam-se taxas de utilização para o DNS Azure. Para obter informações, consulte o
Preço do DNS Azure.
De volta à página de Domínio do Serviço de Aplicações, clique ok . Enquanto a operação está em curso, vê as
seguintes notificações:
Para testar os nomes de anfitriões, navegue para os nomes de anfitriões listados no navegador. No exemplo da
imagem anterior, tente navegar para kontoso.net e www.kontoso.net.
NOTE
Todos os Domínios do Serviço de Aplicações na mesma subscrição são mostrados na página de domínios
Personalizados da aplicação. Se o seu domínio estiver na subscrição da aplicação, mas não o consegue ver na página de
domínios Personalizados da aplicação, tente reabrir a página de domínios Personalizados ou atualizar a página web.
Verifique também o sino de notificação no topo do portal Azure para obter falhas de progresso ou criação.
Renovar o domínio
O domínio do Serviço de Aplicações que comprou é válido por um ano a partir do momento da compra. Por
predefinição, o domínio está configurado para renovar automaticamente, cobrando o seu método de pagamento
para o próximo ano. Pode renovar manualmente o seu nome de domínio.
Se quiser desativar a renovação automática, ou se quiser renovar manualmente o seu domínio, siga os passos
aqui.
No separador Serviços de Aplicações, clique no nome da sua aplicação, selecione Definições e, em seguida,
selecione domínios Personalizados .
Na secção Domínios do Ser viço de Aplicações, selecione o domínio que pretende configurar.
A partir da navegação esquerda do domínio, selecione renovação de domínio. Para parar de renovar
automaticamente o seu domínio, selecione Off , e, em seguida, Guardar .
Para renovar manualmente o seu domínio, selecione Renovar o domínio . No entanto, este botão só está ativo 90
dias antes da expiração do domínio.
Se a renovação do seu domínio for bem sucedida, receberá uma notificação por e-mail dentro de 24 horas.
Esta ação abre a página da zona DNS do seu Domínio de Serviço de Aplicações em DNS Azure. Para obter
informações sobre como editar registos DNS, consulte como gerir as Zonas DNS no portal Azure.
Não é possível eliminar o Domínio do Serviço de Aplicações até que todas as ligações de nome de anfitrião
sejam eliminadas.
Elimine cada encadernação de nome de anfitrião selecionando... > Apagar . Depois de todas as ligações serem
eliminadas, selecione Guardar .
Cancelar ou excluir
No menu esquerdo do domínio, selecione Visão Geral .
Se o período de cancelamento no domínio adquirido não tiver decorrido, selecione Cancelar a compra . Caso
contrário, vê um botão Delete. Para eliminar o domínio sem reembolso, selecione Eliminar .
NOTE
Para serviços de nuvem, consulte Configurar um nome de domínio personalizado para um serviçode nuvem Azure .
Quando utiliza o Gestor de Tráfego Azure para carregar o tráfego de equilíbrio para o Serviço de Aplicações
Azure,a aplicação do Serviço de Aplicações pode ser acedida utilizando o ** <ponto final do traffic-
manager>.trafficmanager.net**. Pode atribuir um nome de domínio.personalizado, como www contoso.com, com
a sua app App Service, de forma a fornecer um nome de domínio mais reconhecível para os seus utilizadores.
Este artigo mostra-lhe como configurar um nome de domínio personalizado com uma aplicação do App Service
que está integrada com o Traffic Manager.
NOTE
Apenas os registos CNAME são suportados quando configura um nome de domínio utilizando o ponto final do Gestor de
Tráfego. Como os registos A não são suportados, um mapeamento de domínio raiz, como contoso.com também não é
suportado.
Preparar a aplicação
Para mapear um nome DNS personalizado para uma aplicação integrada com o Azure Traffic Manager, o plano de
Serviço de Aplicações da aplicação web deve estar em nível Standard ou superior. Neste passo, vai confirmar que
a aplicação do Serviço de Aplicações está no escalão de preço suportado.
Verificar o escalão de preço
No portal Azure,procure e selecione Serviços de Aplicações.
Na página de Serviços de Aplicações, selecione o nome da sua aplicação Azure.
Na navegação à esquerda da página da aplicação, selecione Scale up (plano de serviço de aplicações) .
O escalão atual da aplicação é realçado com um limite azul. Verifique se a aplicação está no nível Standard ou
superior (qualquer nível na categoria Produção ou Isolado). Se sim, feche a página Scale up e salte para Criar o
mapeamento CNAME.
Aumentar verticalmente o plano do Serviço de Aplicações
Se precisar de aumentar a sua aplicação, selecione qualquer um dos níveis de preços na categoria Produção. Para
obter opções adicionais, clique em Ver opções adicionais .
Clique em Aplicar .
Na captura de ecrã de exemplo, selecione adicionar para criar um registo. Alguns fornecedores têm ligações
diferentes para adicionar diferentes tipos de registos. Novamente, consulte a documentação do fornecedor.
NOTE
Para alguns fornecedores, como a GoDaddy, as alterações aos registos DNS só entram em vigor quando selecionar uma
ligação Guardar Alterações separada.
Embora as especificidades de cada fornecedor de domínio variem, você mapeia de um nome de domínio
personalizado não raiz (como www.contoso.com ) para o nome de domínio do Gestor de Tráfego
(contoso.trafficmanager.net ) que está integrado com a sua app.
NOTE
Se um registo já estiver a ser utilizado e precisar de ligar preventivamente as suas aplicações ao mesmo, pode criar um
registo CNAME adicional. Por exemplo, para ligar preventivamente o contoso.com. à sua aplicação, crie um registo CNAME
a partir de awcheck .www para contoso.trafficmanager.net . Em seguida, pode.adicionar "www contoso.com" à sua
aplicação sem a necessidade de alterar o registo "www" CNAME. Para mais informações, consulte Migrate um nome DNS
ativo para o Serviço de Aplicações Azure.
Depois de ter terminado de adicionar ou modificar os registos de DNS no seu fornecedor de domínio, guarde as
alterações.
E os domínios de raiz?
Uma vez que o Traffic Manager apenas suporta o mapeamento de domínio personalizado com registos CNAME, e
porque os padrões DNS não suportam registos CNAME para mapear domínios radiculares (por exemplo,
contoso.com), o Traffic Manager não suporta o mapeamento para domínios radiculares. Para resolver este
problema, utilize um redirecionamento de URL a partir do nível da aplicação. Em ASP.NET Core, por exemplo, pode
utilizar a reescrita de URL. Em seguida, utilize o Gestor de Tráfego para carregar o equilíbrio do subdomínio
( www.contoso.com ).
Para cenários de alta disponibilidade, pode implementar uma configuração DNS tolerante a falhas sem Traffic
Manager, criando vários registos A que apontam do domínio raiz para o endereço IP de cada cópia da aplicação.
Em seguida, mapeie o mesmo domínio raiz para todas as cópias da aplicação. Uma vez que o mesmo nome de
domínio não pode ser mapeado para duas aplicações diferentes na mesma região, esta configuração só funciona
quando as cópias da sua aplicação estão em diferentes regiões.
NOTE
Pode levar algum tempo para o seu CNAME propagar através do sistema DNS. Pode utilizar um serviço
https://www.digwebinterface.com/ de forma a verificar se o CNAME está disponível.
1. Uma vez que a resolução de domínio suceda, volte à sua página de aplicações no Portal Azure
2. A partir da navegação à esquerda, selecione Domínios Personalizados > Adicione nome de anfitrião .
3. Digite o nome de domínio personalizado que mapeou anteriormente e selecione Validar .
4. Certifique-se de que o tipo de registo do Nome anfitrião está definido para CNAME.(www
example.com ou qualquer subdomínio) .
5. Uma vez que a aplicação do Serviço de Aplicações está agora integrada com um ponto final do Traffic
Manager, deve ver o nome de domínio do Gestor de Tráfego sob a configuração CNAME . Selecione-o e
clique em Adicionar domínio personalizado .
Passos seguintes
Proteger um nome DNS personalizado com um enlace SSL no Serviço de Aplicações do Azure
Migrar um nome dNS ativo para o Serviço de
Aplicações Azure
30/04/2020 • 10 minutes to read • Edit Online
Este artigo mostra-lhe como migrar um nome DNS ativo para o Azure App Service sem qualquer tempo de
inatividade.
Quando migra um site ao vivo e o seu nome de domínio DNS para o App Service, esse nome DNS já está a servir
tráfego ao vivo. Pode evitar o tempo de inatividade na resolução do DNS durante a migração, ligando
preventivamente o nome DNS ativo à sua app App Service.
Se não está preocupado com o tempo de inatividade na resolução do DNS, consulte mapeie um nome dNS
personalizado existente para o Serviço de Aplicações Azure.
Pré-requisitos
Para completar este how-to:
Certifique-se de que a sua aplicação App Service não está em nível FREE.
NOTE
Pode utilizar o Azure DNS para configurar um nome DNS personalizado para o Serviço de Aplicações Azure. Para obter mais
informações, veja Utilizar o DNS do Azure para oferecer definições de domínio personalizado para um serviço do Azure.
NOTE
Para alguns fornecedores, como a GoDaddy, as alterações aos registos DNS só entram em vigor quando selecionar uma
ligação Guardar Alterações separada.
Na sua página de registos dNS, note o tipo de registo do nome DNS que pretende migrar. O Serviço de Aplicações
suporta mapeamentos de registos CNAME e A.
NOTE
Para certos fornecedores, como awverify.* o CloudFlare, não é um registo válido. Use * apenas em vez disso.
NOTE
Os * registos wildcard não validarão subdomínios com um registo cname existente. Pode ser necessário criar
explicitamente um disco TXT para cada subdomínio.
Digite o nome de domínio totalmente qualificado para o www.contoso.com que adicionou o registo TXT, como . Para
um domínio *wildcard (como .contoso.com), pode utilizar qualquer nome DNS que corresponda ao domínio
wildcard.
Selecione Validar .
O botão Adicionar nome de anfitrião é ativado.
Certifique-se de que o tipo de registo hostname está definido para o tipo de registo DNS que pretende migrar.
Selecione Adicionar nome de anfitrião .
Poderá demorar algum tempo até que o nome de anfitrião novo seja refletido na página Domínios
personalizados da aplicação. Experimente atualizar o browser para atualizar os dados.
O seu nome DNS personalizado está agora ativado na sua aplicação Azure.
Passos seguintes
Saiba como ligar um certificado Personalizado TLS/SSL ao Serviço de Aplicações.
Proteja um nome DNS personalizado com uma ligação TLS no Serviço de Aplicações Azure
Adicione um certificado TLS/SSL no Serviço de
Aplicações Azure
30/04/2020 • 31 minutes to read • Edit Online
O Serviço de Aplicações do Azure oferece um serviço de alojamento na Web altamente dimensionável e com
correção automática. Este artigo mostra-lhe como criar, carregar ou importar um certificado privado ou um
certificado público para o Serviço de Aplicações.
Assim que o certificado for adicionado à sua aplicação ou aplicação de funçãodo App Service, pode garantir um
nome DNS personalizado com ele ou usá-lo no seu códigode aplicação .
A tabela que se segue lista as opções que tem para adicionar certificados no Serviço de Aplicações:
Criar um Certificado gerido por serviço de aplicações Um certificado privado que é fácil de usar www se apenas
gratuito (Pré-visualização) precisar de garantir o seu domínio personalizado ou
qualquer domínio não nu no Serviço de Aplicações.
Comprar um certificado de serviço de aplicações Um certificado privado que é gerido pelo Azure. Combina a
simplicidade da gestão automatizada de certificados e a
flexibilidade das opções de renovação e exportação.
Importar um certificado da Key Vault Útil se utilizar o Cofre de Chaves Azure para gerir os seus
certificados PKCS12. Ver requisitos de certificado privado.
Faça upload de um certificado público Os certificados públicos não são usados para proteger
domínios personalizados, mas pode carregá-los no seu
código se precisar deles para aceder a recursos remotos.
Pré-requisitos
Para seguir este guia:
Criar uma aplicação de Serviço de Aplicações.
Certificado gratuito apenas: mapear um www.contoso.com subdomínio (por exemplo, ) para o Serviço de
Aplicações com um registo CNAME.
O Certificado Gerido pelo Serviço de Aplicações gratuito ou o certificado de Serviço de Aplicações já satisfazem
os requisitos do Serviço de Aplicações. Se optar por fazer o upload ou importar um certificado privado para o
Serviço de Aplicações, o seu certificado deve satisfazer os seguintes requisitos:
Exportado como um ficheiro PFX protegido por palavra-passe
Conter uma chave privada com, pelo menos, 2048 bits de comprimento
Conter todos os certificados intermédios na cadeia de certificados
Para garantir um domínio personalizado numa ligação TLS, o certificado tem requisitos adicionais:
Contém uma utilização de chave estendida para autenticação do servidor (OID = 1.3.6.1.5.5.7.3.1)
Ser assinado por uma autoridade de certificação fidedigna
NOTE
Os cer tificados de criptografia de cur va elíptica (ECC) podem funcionar com o Serviço de Aplicações, mas não são
abordados neste artigo. Trabalhe com a sua autoridade de certificados para saber quais são os passos exatos para criar
certificados ECC.
Confirme que a aplicação Web não está no escalão F1 ou D1 . O escalão atual da aplicação é realçado com uma
caixa azul-escura.
O SSL personalizado não é suportado nos escalões F1 ou D1 . Se precisar de aumentar verticalmente, siga os
passos na secção seguinte. Caso contrário, feche a página Scale up e salte a secção de plano seletiva para cima.
Aumentar verticalmente o seu plano do Serviço de Aplicações
Selecione qualquer uma das camadas não gratuitas (B1 , B2 , B3 ou qualquer camada na categoria Produção ).
Para obter opções adicionais, clique em Ver opções adicionais .
Clique em Aplicar .
Quando vir a notificação seguinte, significa que a operação de dimensionamento está completa.
NOTE
O certificado gratuito é emitido pela DigiCert. Para alguns domínios de alto nível, deve permitir explicitamente a DigiCert
como 0 issue digicert.com emitente de certificado, criando um registo de domínio CAA com o valor: .
Qualquer domínio não-nu devidamente mapeado para a sua aplicação com um registo CNAME está listado no
diálogo. Selecione o domínio personalizado para criar um certificado gratuito e selecione Criar . Pode criar
apenas um certificado para cada domínio personalizado suportado.
Quando a operação estiver concluída, consulte o certificado na lista de Cer tificados de Chave Privada.
IMPORTANT
Para garantir um domínio personalizado com este certificado, ainda precisa de criar um certificado vinculativo. Siga os
passos em Criar encadernação.
Utilize a tabela seguinte para o ajudar a configurar o certificado. Quando terminar, clique em Criar .
Termos Legais Clique para confirmar que concorda com os termos legais.
Os certificados são obtidos do GoDaddy.
Key Vault é um serviço Azure que ajuda a salvaguardar chaves criptográficas e segredos usados por aplicações e
serviços em nuvem. É o armazenamento de eleição para certificados de serviço de aplicações.
Na página key vault status, clique no Repositório key vault para criar um novo cofre ou escolha um cofre
existente. Se optar por criar um novo cofre, utilize a tabela seguinte para o ajudar a configurar o cofre e clique
em Criar. Crie o novo Key Vault dentro do mesmo grupo de subscrição e recursos que a sua app App Service.
Acesso à Rede Virtual Restringir o acesso ao cofre a certas redes virtuais azure.
Pode configurá-lo mais tarde, seguindo os passos em
Configurar Firewalls e Redes Virtuais
Assim que escolhero cofre, feche a página de Repositório do Cofre chave. O passo 1: A opção loja deve
mostrar uma marca de verificação verde para o sucesso. Mantenha a página aberta para o próximo passo.
Verificar a propriedade do domínio
A partir da mesma página de Configuração de Certificado que usou no último passo, clique no passo 2:
Verificar .
Selecione Verificação de Ser viço de Aplicações . Uma vez que já mapeou o domínio para a sua aplicação web
(ver Pré-requisitos),já está verificado. Basta clicar em Verificar para terminar este passo. Clique no botão
'Actualizar' até aparecer o Certificado de mensagem Verificado por domínio.
NOTE
São apoiados quatro tipos de métodos de verificação de domínios:
Serviço de Aplicações - A opção mais conveniente quando o domínio já está mapeado para uma aplicação do App
Service na mesma subscrição. Aproveita o facto de a aplicação app Service já ter verificado a propriedade do domínio.
Domínio - Verifique um domínio do Serviço de Aplicações que adquiriu ao Azure. O Azure adiciona automaticamente
o registo TXT de verificação para si e completa o processo.
Correio - Verifique o domínio enviando um e-mail ao administrador de domínio. As instruções são fornecidas quando
selecionar a opção.
Manual - Verifique o domínio utilizando uma página HTML (apenas um certificadoPadrão) ou um registo DNS TXT. As
instruções são fornecidas quando selecionar a opção.
IMPORTANT
Para garantir um domínio personalizado com este certificado, ainda precisa de criar um certificado vinculativo. Siga os
passos em Criar encadernação.
Quando a operação estiver concluída, consulte o certificado na lista de Cer tificados de Chave Privada. Se a
importação falhar com um erro, o certificado não satisfaz os requisitos parao Serviço de Aplicações .
IMPORTANT
Para garantir um domínio personalizado com este certificado, ainda precisa de criar um certificado vinculativo. Siga os
passos em Criar encadernação.
-----BEGIN CERTIFICATE-----
<your entire Base64 encoded SSL certificate>
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
<The entire Base64 encoded intermediate certificate 1>
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
<The entire Base64 encoded intermediate certificate 2>
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
<The entire Base64 encoded root certificate>
-----END CERTIFICATE-----
Quando lhe for pedido, defina uma palavra-passe de exportação. Utilizará esta palavra-passe ao enviar o seu
certificado TLS/SSL para o Serviço de Aplicações mais tarde.
Se tiver utilizado o IIS ou Certreq.exe para gerar o pedido de certificado, instale o certificado no seu computador
local e exporte-o para PFX.
Enviar certificado para o Serviço de Aplicações
Está agora pronto para carregar o certificado para o Serviço de Aplicações.
No portal Azure, a partir do menu esquerdo, selecione o**<nome da aplicação ** App Ser vices > >.
A partir da navegação à esquerda da sua aplicação, selecione > Configurações
TLS/SSL****Cer tificados dechave privados (.pfx) > Certificado de upload .
Em Ficheiro de Cer tificado PFX , selecione o ficheiro PFX. Em Palavra-passe do cer tificado , escreva a
palavra-passe que criou quando exportou o ficheiro PFX. Quando terminar, clique em Carregar .
Quando a operação estiver concluída, consulte o certificado na lista de Cer tificados de Chave Privada.
IMPORTANT
Para garantir um domínio personalizado com este certificado, ainda precisa de criar um certificado vinculativo. Siga os
passos em Criar encadernação.
NOTE
Se não clicar em Sync, o Serviço de Aplicações sincroniza automaticamente o seu certificado dentro de 48 horas.
Renovar certificado
Para ativar a renovação automática do seu certificado a qualquer momento, selecione o certificado na página de
Certificados de Serviço de Aplicações e, em seguida, clique em Definições de Renovação Automática na
navegação à esquerda. Por padrão, os Certificados de Serviço de Aplicações têm um período de validade de um
ano.
Selecione On e clique em Guardar . Os certificados podem começar a renovar automaticamente 60 dias antes
da expiração se tiver a renovação automática ligada.
Para renovar manualmente o certificado, clique em Renovar Manual . Pode solicitar a renovação manual do seu
certificado 60 dias antes da expiração.
Assim que a operação de renovação estiver concluída, clique em Sync . A operação de sincronização atualiza
automaticamente as encadernações do nome de anfitrião para o certificado no Serviço de Aplicações sem causar
qualquer inatividade nas suas apps.
NOTE
Se não clicar em Sync, o Serviço de Aplicações sincroniza automaticamente o seu certificado dentro de 48 horas.
Exportar o certificado
Como um Certificado de Serviço de Aplicações é um segredo key vault,você pode exportar uma cópia PFX do
mesmo e usá-lo para outros serviços Azure ou fora de Azure.
Para exportar o Certificado de Serviço de Aplicações como ficheiro PFX, execute os seguintes comandos na
Cloud Shell. Também pode executá-lo localmente se instalou o Azure CLI. Substitua os espaços reservados pelos
nomes utilizados quando criou o certificado de Serviço de Aplicações.
O ficheiro appservicecertificate.pfx descarregado é um ficheiro PKCS12 cru que contém certificados públicos e
privados. Em cada pedido, utilize uma corda vazia para a palavra-passe de importação e a frase de passe PEM.
Excluir certificado
A eliminação de um certificado de Serviço de Aplicações é definitiva e irreversível. A eliminação de um recurso
do Certificado de Serviço de Aplicações resulta na revogação do certificado. Qualquer encadernação no Serviço
de Aplicações com este certificado torna-se inválida. Para evitar a supressão acidental, o Azure coloca um
cadeado no certificado. Para eliminar um certificado de Serviço de Aplicações, tem primeiro de remover o
bloqueio de eliminação do certificado.
Selecione o certificado na página de Certificados de Serviço de Aplicações e, em seguida, selecione Locks na
navegação à esquerda.
Encontre o cadeado no seu certificado com o tipo de bloqueio Delete . À direita, selecione Delete .
Agora pode eliminar o certificado de Serviço de Aplicações. A partir da navegação à esquerda, selecione Visão
Geral > Delete . No diálogo de confirmação, escreva o nome do certificado e selecione OK .
Automatizar com scripts
CLI do Azure
#!/bin/bash
fqdn=<replace-with-www.{yourdomain}>
pfxPath=<replace-with-path-to-your-.PFX-file>
pfxPassword=<replace-with-your=.PFX-password>
resourceGroup=myResourceGroup
webappname=mywebapp$RANDOM
# Create an App Service plan in Basic tier (minimum required by custom domains).
az appservice plan create --name $webappname --resource-group $resourceGroup --sku B1
# Before continuing, go to your DNS configuration UI for your custom domain and follow the
# instructions at https://aka.ms/appservicecustomdns to configure a CNAME record for the
# hostname "www" and point it your web app's default domain name.
PowerShell
$fqdn="<Replace with your custom domain name>"
$pfxPath="<Replace with path to your .PFX file>"
$pfxPassword="<Replace with your .PFX password>"
$webappname="mywebapp$(Get-Random)"
$location="West Europe"
# Before continuing, go to your DNS configuration UI for your custom domain and follow the
# instructions at https://aka.ms/appservicecustomdns to configure a CNAME record for the
# hostname "www" and point it your web app's default domain name.
# Upgrade App Service plan to Basic tier (minimum required by custom SSL certificates)
Set-AzAppServicePlan -Name $webappname -ResourceGroupName $webappname `
-Tier Basic
Mais recursos
Proteja um nome DNS personalizado com uma ligação TLS/SSL no Serviço de Aplicações Azure
Impor HTTPS
Impor TLS 1.1/1.2
Utilize um certificado TLS/SSL no seu código no Serviço de Aplicações Azure
FAQ : Certificados de serviço de aplicações
Configure o seu app service ou app Funções Azure
para usar login Azure AD
17/06/2020 • 17 minutes to read • Edit Online
Este artigo mostra-lhe como configurar o Azure App Service ou as Funções Azure para utilizar o Azure Ative
Directory (Azure AD) como fornecedor de autenticação.
NOTE
O fluxo de definições expressas configura um registo de aplicação AAD V1. Se desejar utilizar o Diretório Ativo Azure v2.0
(incluindo o MSAL),siga as instruções avançadasde configuração .
NOTE
Esta funcionalidade não está atualmente disponível no plano de consumo linux para funções azure
1. No [portal Azure,]procure e selecione Ser viços de Aplicações e, em seguida, selecione a sua aplicação.
2. A partir da navegação à esquerda, selecione Autenticação / Autorização > On .
3. Selecione Azure Ative Director y > Express .
Se quiser escolher um registo de aplicação existente:
a. Escolha a aplicação AD existente e, em seguida, clique na aplicação AD Azure .
b. Escolha o registo de uma aplicação existente e clique em OK .
4. Selecione OK para registar a app Service no Diretório Ativo Azure. É criado um novo registo de
aplicações.
5. (Opcional) Por padrão, o Serviço de Aplicações fornece a autenticação, mas não restringe o acesso
autorizado aos conteúdos e APIs do seu site. Tem de autorizar os utilizadores no seu código de
aplicações. Para restringir o acesso à aplicação apenas aos utilizadores autenticados pelo Diretório Ativo
do Azure, deteteto a Ação a tomar quando o pedido não for autenticado para iniciar sessão com o
Diretório Ativo do Azure . Ao definir esta funcionalidade, a sua aplicação requer que todos os pedidos
sejam autenticados. Também redireciona todos os não autenticados para o Diretório Ativo Azure para
autenticação.
Cau t i on
Restringir o acesso desta forma aplica-se a todas as chamadas para a sua app, o que pode não ser
desejável para aplicações que tenham uma página inicial disponível ao público, como em muitas
aplicações de página única. Para tais aplicações, permitir pedidos anónimos (nenhuma ação) pode
ser preferido, com a aplicação a iniciar o login manualmente em si. Para mais informações, consulte o
fluxo de autenticação.
6. Selecione Guardar .
NOTE
Este valor é o ID DE Aplicação URI do registo da aplicação. Se a sua aplicação web necessitar de acesso a uma
API na nuvem, precisa do ID URI da aplicação web quando configurar o recurso cloud App Service. Pode usá-lo,
por exemplo, se quiser que o serviço de nuvem conceda explicitamente acesso à aplicação web.
NOTE
Para uma aplicação da Microsoft Store, utilize o pacote SID como URI.
4. Selecione Criar .
5. Após a criação do registo da aplicação, copie o valor do ID da Aplicação (cliente).
6. Selecione permissões API > Adicione uma permissão > As minhas APIs .
7. Selecione o registo de aplicações que criou anteriormente para a sua aplicação App Service. Se não vir o
registo da aplicação, certifique-se de que adicionou o âmbito de user_impersonation em Criar uma
inscrição de aplicação no Azure AD paraa sua app App Service .
8. Sob permissões delegadas, selecione user_impersonation , e, em seguida, selecione Adicionar
permissões .
Já configurou uma aplicação de cliente nativo que pode aceder à sua aplicação de Serviço de Aplicações em
nome de um utilizador.
Próximos passos
Autenticação do serviço de aplicações / visão geral da autorização.
Utilização avançada de autenticação e autorização no Serviço de Aplicações Azure
Tutorial: Autenticar e autorizar utilizadores ponto a ponto no Serviço de Aplicações do Azure
Adicione a autenticação à sua Aplicação Móvel: iOS, Android, Windows Universal, Xamarin.Android,
Xamarin.iOS, Xamarin.Forms, Cordova.
Tutorial: Autenticar e autorizar utilizadores ponto a ponto no Serviço de Aplicações do Azure
Configure o seu app service ou app Funções Azure
para usar login no Facebook
29/04/2020 • 5 minutes to read • Edit Online
Este artigo mostra como configurar o Azure App Service ou o Azure Functions para usar o Facebook como
fornecedor de autenticação.
Para completar o procedimento neste artigo, precisa de uma conta no Facebook que tenha um endereço de e-
mail verificado e um número de telemóvel. Para criar uma nova conta no Facebook, vá para facebook.com.
IMPORTANT
O segredo da aplicação é uma importante credencial de segurança. Não partilhe este segredo com ninguém nem o
distribua dentro de uma aplicação de cliente.
10. A conta do Facebook que usou para registar a aplicação é administradora da app. Neste momento, apenas
os administradores podem subscrever esta aplicação.
Para autenticar outras contas do Facebook, selecione App Review e permita tornar ** <** o seu nome de
aplicação> público para permitir ao público em geral aceder à aplicação através da autenticação do
Facebook.
Por padrão, o Serviço de Aplicações fornece a autenticação, mas não restringe o acesso autorizado aos
conteúdos e APIs do seu site. Tem de autorizar os utilizadores no seu código de aplicações.
5. (Opcional) Para restringir o acesso apenas aos utilizadores autenticados pelo Facebook, deteto uação a
tomar quando o pedido não for autenticado no Facebook . Ao definir esta funcionalidade, a sua
aplicação requer que todos os pedidos sejam autenticados. Também redireciona todos os pedidos não
autenticados para o Facebook para autenticação.
Cau t i on
Restringir o acesso desta forma aplica-se a todas as chamadas para a sua app, o que pode não ser
desejável para aplicações que tenham uma página inicial disponível ao público, como em muitas
aplicações de página única. Para tais aplicações, permitir pedidos anónimos (nenhuma ação) pode
ser preferido para que a aplicação comece manualmente a autenticação em si. Para mais informações,
consulte o fluxo de autenticação.
6. Selecione Guardar .
Está agora pronto para usar o Facebook para autenticação na sua aplicação.
Passos seguintes
Autenticação do serviço de aplicações / visão geral da autorização.
Utilização avançada de autenticação e autorização no Serviço de Aplicações Azure
Tutorial: Autenticar e autorizar utilizadores ponto a ponto no Serviço de Aplicações do Azure
Adicione a autenticação à sua Aplicação Móvel: iOS, Android, Windows Universal, Xamarin.Android,
Xamarin.iOS, Xamarin.Forms, Cordova.
Configure o seu app service ou app Funções Azure
para usar o login do Google
29/04/2020 • 4 minutes to read • Edit Online
Este tópico mostra-lhe como configurar o Azure App Service ou as Funções Azure para utilizar o Google como
fornecedor de autenticação.
Para completar o procedimento neste tópico, deve ter uma conta no Google que tenha um endereço de e-mail
verificado. Para criar uma nova conta do Google, aceda a accounts.google.com.
IMPORTANT
O segredo da App é uma importante credencial de segurança. Não partilhe este segredo com ninguém nem o
distribua dentro de uma aplicação de cliente.
Restringir o acesso desta forma aplica-se a todas as chamadas para a sua app, o que pode não ser
desejável para aplicações que tenham uma página inicial disponível ao público, como em muitas
aplicações de página única. Para tais aplicações, permitir pedidos anónimos (nenhuma ação) pode
ser preferido para que a aplicação comece manualmente a autenticação em si. Para mais informações,
consulte o fluxo de autenticação.
6. Selecione Guardar .
Está agora pronto para utilizar o Google para autenticação na sua aplicação.
Passos seguintes
Autenticação do serviço de aplicações / visão geral da autorização.
Utilização avançada de autenticação e autorização no Serviço de Aplicações Azure
Tutorial: Autenticar e autorizar utilizadores ponto a ponto no Serviço de Aplicações do Azure
Adicione a autenticação à sua Aplicação Móvel: iOS, Android, Windows Universal, Xamarin.Android,
Xamarin.iOS, Xamarin.Forms, Cordova.
Configure o seu app service ou app Funções Azure
para usar login da Conta Microsoft
22/05/2020 • 5 minutes to read • Edit Online
Este tópico mostra-lhe como configurar o Azure App Service ou as Funções Azure para utilizar a AAD para
suportar logins pessoais da conta da Microsoft.
NOTE
Tanto as contas pessoais da Microsoft como as contas organizacionais utilizam o fornecedor de identidade AAD. Neste
momento, não é possível configurar este fornecedor de identidade para suportar ambos os tipos de login.
IMPORTANT
O valor secreto do cliente (senha) é uma importante credencial de segurança. Não partilhe a palavra-passe com
ninguém nem a distribua dentro de uma aplicação do cliente.
Restringir o acesso desta forma aplica-se a todas as chamadas para a sua app, o que pode não ser
desejável para aplicações que tenham uma página inicial disponível ao público, como em muitas
aplicações de página única. Para tais aplicações, permitir pedidos anónimos (nenhuma ação) pode
ser preferido para que a aplicação comece manualmente a autenticação em si. Para mais informações,
consulte o fluxo de autenticação.
6. Selecione Guardar .
Está agora pronto para utilizar a Conta Microsoft para autenticação na sua aplicação.
Passos seguintes
Autenticação do serviço de aplicações / visão geral da autorização.
Utilização avançada de autenticação e autorização no Serviço de Aplicações Azure
Tutorial: Autenticar e autorizar utilizadores ponto a ponto no Serviço de Aplicações do Azure
Adicione a autenticação à sua Aplicação Móvel: iOS, Android, Windows Universal, Xamarin.Android,
Xamarin.iOS, Xamarin.Forms, Cordova.
Configure o seu app service ou app Funções Azure
para usar o login do Twitter
29/04/2020 • 4 minutes to read • Edit Online
Este artigo mostra como configurar o Azure App Service ou o Azure Functions para usar o Twitter como
fornecedor de autenticação.
Para completar o procedimento neste artigo, precisa de uma conta no Twitter que tenha um endereço de e-mail
verificado e número de telefone. Para criar uma nova conta no Twitter, vá a twitter.com.
4. Na parte inferior da página, digite pelo menos 100 caracteres em Dizer-nos como esta aplicação será
usada e, em seguida, selecione Criar . Clique em Criar novamente no pop-up. Os detalhes da aplicação
são apresentados.
5. Selecione o separador Keys e Access Tokens.
Tome nota destes valores:
Chave API
Chave secreta da API
NOTE
A chave secreta da API é uma importante credencial de segurança. Não partilhe este segredo com ninguém nem o
distribua com a sua aplicação.
Restringir o acesso desta forma aplica-se a todas as chamadas para a sua app, o que pode não ser
desejável para aplicações que tenham uma página inicial disponível ao público, como em muitas
aplicações de página única. Para tais aplicações, permitir pedidos anónimos (nenhuma ação) pode
ser preferido para que a aplicação comece manualmente a autenticação em si. Para mais informações,
consulte o fluxo de autenticação.
7. Selecione Guardar .
Está agora pronto para usar o Twitter para autenticação na sua aplicação.
Passos seguintes
Autenticação do serviço de aplicações / visão geral da autorização.
Utilização avançada de autenticação e autorização no Serviço de Aplicações Azure
Tutorial: Autenticar e autorizar utilizadores ponto a ponto no Serviço de Aplicações do Azure
Adicione a autenticação à sua Aplicação Móvel: iOS, Android, Windows Universal, Xamarin.Android,
Xamarin.iOS, Xamarin.Forms, Cordova.
Utilização avançada de autenticação e autorização
no Serviço de Aplicações Azure
29/04/2020 • 21 minutes to read • Edit Online
Quando o utilizador clica num dos links, a respetiva página de sessão abre-se para iniciar sessão no utilizador.
Para redirecionar o utilizador pós-login para um post_login_redirect_url URL personalizado, utilize o
parâmetro de corda de consulta (não confundir com o Redirect URI na configuração do seu fornecedor de
identidade). Por exemplo, para navegar /Home/Index o utilizador para depois do iniciar sessão, utilize o seguinte
código HTML:
{"id_token":"<token>","access_token":"<token>"}
O formato simbólico varia ligeiramente de acordo com o fornecedor. Consulte a tabela seguinte para mais
detalhes:
aad {"access_token":"
<access_token>"}
twitter {"access_token":"
<access_token>",
"access_token_secret":"
<acces_token_secret>"}
Se o token do fornecedor for validado com authenticationToken sucesso, a API devolve com um no corpo de
resposta, que é o seu símbolo de sessão.
{
"authenticationToken": "...",
"user": {
"userId": "sid:..."
}
}
Assim que tiver esta ficha de sessão, pode X-ZUMO-AUTH aceder aos recursos de aplicações protegidos
adicionando o cabeçalho aos seus pedidos HTTP. Por exemplo:
GET https://<appname>.azurewebsites.net/api/products/1
X-ZUMO-AUTH: <authenticationToken_value>
Por predefinição, um sinal de saída bem /.auth/logout/done sucedido redireciona o cliente para o URL . Pode
alterar a página de redirecionamento post_logout_redirect_uri pós-inscrição adicionando o parâmetro de
consulta. Por exemplo:
GET /.auth/logout?post_logout_redirect_uri=/index.html
GET /.auth/logout?post_logout_redirect_uri=https%3A%2F%2Fmyexternalurl.com
F O RN EC EDO R N O M ES DE C A B EÇ A L H O
Google X-MS-TOKEN-GOOGLE-ID-TOKEN
X-MS-TOKEN-GOOGLE-ACCESS-TOKEN
X-MS-TOKEN-GOOGLE-EXPIRES-ON
X-MS-TOKEN-GOOGLE-REFRESH-TOKEN
Twitter X-MS-TOKEN-TWITTER-ACCESS-TOKEN
X-MS-TOKEN-TWITTER-ACCESS-TOKEN-SECRET
A partir do seu código de cliente (como uma aplicação móvel ou javaScript no navegador), envie um pedido
HTTP GET para /.auth/me . A JSON devolvida tem as fichas específicas do fornecedor.
NOTE
Os tokens de acesso são para aceder aos recursos do fornecedor, pelo que só estão presentes se configurar o seu
fornecedor com um segredo de cliente. Para ver como obter fichas refrescantes, consulte fichas de acesso Refresh.
5. Clique em Colocar .
Uma vez configurado o seu fornecedor, pode encontrar o token de atualização e o tempo de validade para o
token de acesso na loja de fichas.
Para refrescar o seu sinal de /.auth/refresh acesso a qualquer momento, basta ligar para qualquer idioma. O
seguinte snippet usa jQuery para refrescar as suas fichas de acesso de um cliente JavaScript.
function refreshTokens() {
let refreshUrl = "/.auth/refresh";
$.ajax(refreshUrl) .done(function() {
console.log("Token refresh completed successfully.");
}) .fail(function() {
console.log("Token refresh failed. See application logs for details.");
});
}
Se um utilizador revogar as permissões concedidas /.auth/me à sua 403 Forbidden aplicação, a sua chamada
poderá falhar com uma resposta. Para diagnosticar erros, verifique os registos da sua aplicação para obter
detalhes.
NOTE
O período de carência aplica-se apenas à sessão autenticada do Serviço de Aplicações, e não aos símbolos dos
fornecedores de identidade. Não existe um período de carência para os tokens do fornecedor expirado.
"additionalLoginParams": ["domain_hint=<domain_name>"]
Esta definição adere o parâmetro de domain_hint corda de consulta ao URL de redirecionamento de login.
IMPORTANT
É possível que o cliente domain_hint remova o parâmetro depois de receber o URL de redirecionamento e, em seguida,
iniciar sessão com um domínio diferente. Por isso, embora esta função seja conveniente, não é uma funcionalidade de
segurança.
Passos seguintes
Tutorial: Autenticar e autorizar utilizadores de ponta a ponta (Windows) Tutorial: Autenticar e autorizar
utilizadores de ponta a ponta (Linux)
Restrições de acesso ao Serviço de Aplicações
Azure
30/04/2020 • 12 minutes to read • Edit Online
As restrições de acesso permitem definir uma lista de permitir/negar prioritáriamente que controla o acesso à
rede à sua aplicação. A lista pode incluir endereços IP ou subredes azure rede virtual. Quando há uma ou mais
entradas, há então um implícito "negar tudo" que existe no final da lista.
A capacidade de restrições de acesso funciona com todos os serviços de aplicação hospedados, incluindo;
aplicações web, aplicativos API, aplicativos Linux, aplicações de contentores Linux e Funções.
Quando um pedido é feito na sua aplicação, o endereço FROM é avaliado contra as regras de endereço IP na
sua lista de restrições de acesso. Se o endereço FROM estiver numa subnet configurada com pontos finais de
serviço para microsoft.Web, então a subnet de origem é comparada com as regras de rede virtual na sua lista
de restrições de acesso. Se o endereço não for permitido o acesso com base nas regras da lista, o serviço
responde com um código de estado HTTP 403.
A capacidade de restrições de acesso é implementada nas funções front-end do Serviço de Aplicações, que são
a montante dos anfitriões dos trabalhadores onde o seu código funciona. Por conseguinte, as restrições de
acesso são efetivamente ACLs de rede.
A capacidade de restringir o acesso à sua aplicação web a partir de uma Rede Virtual Azure (VNet) chama-se
pontos finaisde serviço . Os pontos finais do serviço permitem-lhe restringir o acesso a um serviço multi-
inquilino a partir de subredes selecionadas. Deve ser ativado tanto no lado da rede como no serviço com o que
está a ser ativado. Não funciona para restringir o tráfego a apps que estão hospedadas num Ambiente de
Serviço de Aplicações. Se estiver num Ambiente de Serviço de Aplicações, pode controlar o acesso à sua
aplicação com regras de endereço IP.
A lista mostrará todas as restrições atuais que estão na sua aplicação. Se tiver uma restrição VNet na sua
aplicação, a tabela mostrará se os pontos finais do serviço estão ativados para microsoft.Web. Quando não
houver restrições definidas na sua aplicação, a sua aplicação estará acessível a partir de qualquer lugar.
Para eliminar uma regra, clique no ... na sua regra e, em seguida, clique em Remover .
Bloquear um único endereço IP
Ao adicionar a sua primeira regra de restrição IP, o serviço adicionará uma regra de Negação explícita com
uma prioridade de 2147483647. Na prática, a regra explícita de Negação será executada na última regra e
bloqueará o acesso a qualquer endereço IP que não seja explicitamente permitido usando uma regra de
permitir.
Para o cenário em que os utilizadores pretendam bloquear explicitamente um único endereço IP ou bloco de
endereçoIP, mas permitir o acesso de tudo o resto, é necessário adicionar uma regra de permitir todas
explícitas.
Site SCM
Além de poder controlar o acesso à sua aplicação, também pode restringir o acesso ao site SCM utilizado pela
sua aplicação. O site scm é o ponto final de implantação da web e também a consola Kudu. Pode atribuir
separadamente restrições de acesso ao site scm da aplicação ou utilizar o mesmo conjunto tanto para a app
como para o site scm. Quando verifica a caixa para ter as mesmas restrições que a sua aplicação, tudo é
apagado. Se desverificar a caixa, são aplicadas as definições que tiver anteriormente no site scm.
Manipulação programática das regras de restrição de acesso
A Azure CLI e a Azure PowerShell têm suporte para a edição de restrições de acesso. Exemplo de adição de uma
restrição de acesso utilizando o Azure CLI:
Os valores também podem ser definidos manualmente com uma operação Azure REST API PUT na
configuração da aplicação em Resource Manager ou utilizando um modelo de Gestor de Recursos Azure. Como
exemplo, pode utilizar resources.azure.com e editar o bloco ipSecurityRestrictions para adicionar o JSON
necessário.
A localização desta informação no Gestor de Recursos é:
management.azure.com/subscriptions/ ID /recursosDedados/grupos
derecursos/fornecedores/Microsoft.Web/sites/****web app name /config/web?api-version=2018-02-
01subscription ID
A sintaxe jSON para o exemplo anterior é:
{
"properties": {
"ipSecurityRestrictions": [
{
"ipAddress": "122.133.144.0/24",
"action": "Allow",
"priority": 100,
"name": "IP example rule"
}
]
}
}
Passos seguintes
Restrições de acesso às Funções Azure
Integração de Gateway de aplicação com pontos finais de serviço
Como utilizar identidades geridas para o Serviço de
Aplicações e Funções Azure
17/06/2020 • 29 minutes to read • Edit Online
Este tópico mostra-lhe como criar uma identidade gerida para aplicações de App Service e Azure Functions e
como usá-lo para aceder a outros recursos.
IMPORTANT
As identidades geridas para o Serviço de Aplicações e Funções Azure não se comportarão como esperado se a sua
aplicação for migrada através de subscrições/inquilinos. A aplicação necessita de obter uma nova identidade, que é feita
desativando e reativando a funcionalidade. Veja a remoção de uma identidade abaixo. Os recursos a jusante também
precisam de ter políticas de acesso atualizadas para utilizar a nova identidade.
Uma identidade gerida do Azure Ative Directory (Azure AD) permite que a sua aplicação aceda facilmente a
outros recursos protegidos por AD Azure, como o Azure Key Vault. A identidade é gerida pela plataforma Azure
e não o obriga a fornecer ou rodar quaisquer segredos. Para saber mais sobre identidades geridas em Azure AD,
consulte identidades geridas para recursos Azure.
A sua aplicação pode ser concedida a dois tipos de identidades:
Uma identidade atribuída ao sistema está ligada à sua aplicação e é eliminada se a sua aplicação for
eliminada. Uma aplicação só pode ter uma identidade atribuída ao sistema.
Uma identidade atribuída ao utilizador é um recurso Azure autónomo que pode ser atribuído à sua
aplicação. Uma aplicação pode ter várias identidades atribuídas ao utilizador.
az login
2. Crie uma aplicação web utilizando o CLI. Para obter mais exemplos de como utilizar o CLI com o Serviço
de Aplicações, consulte as amostras do Serviço de Aplicações CLI:
3. Executar o identity assign comando para criar a identidade para esta aplicação:
Os seguintes passos irão acompanhá-lo através da criação de uma app e atribuindo-lhe uma identidade usando
a Azure PowerShell. As instruções para a criação de uma aplicação web e de uma aplicação de função são
diferentes.
Usando a Azure PowerShell para uma aplicação web
1. Se necessário, instale o Azure PowerShell utilizando as instruções encontradas no guia Azure
PowerShelle, em seguida, corra Login-AzAccount para criar uma ligação com a Azure.
2. Crie uma aplicação web utilizando a Azure PowerShell. Para obter mais exemplos de como utilizar o
Azure PowerShell com o Serviço de Aplicações, consulte as amostras powerShell do Serviço de
Aplicações:
3. Executar o Set-AzWebApp -AssignIdentity comando para criar a identidade para esta aplicação:
"identity": {
"type": "SystemAssigned"
}
NOTE
Uma aplicação pode ter identidades atribuídas ao sistema e atribuídas ao mesmo tempo. Neste caso, a type
propriedade seria SystemAssigned,UserAssigned
A adição do tipo atribuído ao sistema diz ao Azure para criar e gerir a identidade para a sua aplicação.
Por exemplo, uma aplicação web pode parecer o seguinte:
{
"apiVersion": "2016-08-01",
"type": "Microsoft.Web/sites",
"name": "[variables('appName')]",
"location": "[resourceGroup().location]",
"identity": {
"type": "SystemAssigned"
},
"properties": {
"name": "[variables('appName')]",
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
"hostingEnvironment": "",
"clientAffinityEnabled": false,
"alwaysOn": true
},
"dependsOn": [
"[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]"
]
}
"identity": {
"type": "SystemAssigned",
"tenantId": "<TENANTID>",
"principalId": "<PRINCIPALID>"
}
NOTE
Este artigo foi atualizado para utilizar o novo módulo AZ do Azure PowerShell. Pode continuar a utilizar o módulo
AzureRM, que continuará a receber correções de erros até, pelo menos, dezembro de 2020. Para obter mais informações
sobre o novo módulo Az e a compatibilidade do AzureRM, veja Apresentação do novo módulo Az do Azure PowerShell.
Para obter instruções de instalação do módulo Az, veja Instalar o Azure PowerShell.
Os seguintes passos irão acompanhá-lo através da criação de uma app e atribuindo-lhe uma identidade usando
a Azure PowerShell.
NOTE
A versão atual dos comandos Azure PowerShell para o Azure App Service não suporta identidades atribuídas ao utilizador.
As instruções abaixo são para Funções Azure.
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": {}
}
}
NOTE
Uma aplicação pode ter identidades atribuídas ao sistema e atribuídas ao mesmo tempo. Neste caso, a type
propriedade seria SystemAssigned,UserAssigned
A adição do tipo atribuído ao utilizador diz ao Azure para utilizar a identidade atribuída ao utilizador
especificada para a sua aplicação.
Por exemplo, uma aplicação web pode parecer o seguinte:
{
"apiVersion": "2016-08-01",
"type": "Microsoft.Web/sites",
"name": "[variables('appName')]",
"location": "[resourceGroup().location]",
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))]":
{}
}
},
"properties": {
"name": "[variables('appName')]",
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
"hostingEnvironment": "",
"clientAffinityEnabled": false,
"alwaysOn": true
},
"dependsOn": [
"[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
"[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))]"
]
}
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": {
"principalId": "<PRINCIPALID>",
"clientId": "<CLIENTID>"
}
}
}
O directorid é um identificador único para a identidade que é usada para a administração da AD Azure. O
clientId é um identificador único para a nova identidade da aplicação que é usada para especificar qual
identidade usar durante chamadas de tempo de execução.
Existe um protocolo REST simples para obter um token no Serviço de Aplicações e Funções Azure. Isto pode ser
usado para todas as aplicações e idiomas. Para .NET e Java, o Azure SDK fornece uma abstração sobre este
protocolo e facilita uma experiência de desenvolvimento local.
Utilização do protocolo REST
Uma aplicação com uma identidade gerida tem duas variáveis ambientais definidas:
IDENTITY_ENDPOINT - a URL para o serviço de fichas locais.
IDENTITY_HEADER - um cabeçalho usado para ajudar a mitigar os ataques de falsificação de pedidos do lado
do servidor (SSRF). O valor é rodado pela plataforma.
O IDENTITY_ENDPOINT é um URL local a partir do qual a sua aplicação pode solicitar tokens. Para obter um
token para um recurso, faça um pedido HTTP GET para este ponto final, incluindo os seguintes parâmetros:
N O M E DO PA RÂ M ET RO EM DESC RIP T IO N
IMPORTANT
Se estiver a tentar obter fichas para identidades atribuídas ao utilizador, deve incluir uma das propriedades opcionais. Caso
contrário, o serviço de token tentará obter um símbolo para uma identidade atribuída ao sistema, que pode ou não existir.
Uma resposta bem sucedida de 200 OK inclui um corpo JSON com as seguintes propriedades:
Esta resposta é a mesma que a resposta para o pedido de acesso ao serviço da Azure AD.
NOTE
Uma versão mais antiga deste protocolo, utilizando a versão API "2017-09-01", utilizou o secret cabeçalho em vez de
X-IDENTITY-HEADER e só aceitou a clientid propriedade para o utilizador atribuído. Também devolveu o expires_on
em formato de timetamp. MSI_ENDPOINT pode ser usado como pseudónimo para IDENTITY_ENDPOINT, e MSI_SECRET
pode ser usado como pseudónimo para IDENTITY_HEADER.
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJ0eXAi…",
"expires_on": "1586984735",
"resource": "https://vault.azure.net",
"token_type": "Bearer",
"client_id": "5E29463D-71DA-4FE0-8E69-999B57DB23B0"
}
Exemplos de código
.NET
JavaScript
Python
PowerShell
TIP
Para idiomas .NET, também pode utilizar microsoft.Azure.Services.AppAuthentication em vez de elaborar este pedido por si
mesmo.
private readonly HttpClient _client;
// ...
public async Task<HttpResponseMessage> GetToken(string resource) {
var request = new HttpRequestMessage(HttpMethod.Get,
String.Format("{0}/?resource={1}&api-version=2019-08-01",
Environment.GetEnvironmentVariable("IDENTITY_ENDPOINT"), resource));
request.Headers.Add("X-IDENTITY-HEADER", Environment.GetEnvironmentVariable("IDENTITY_HEADER"));
return await _client.SendAsync(request);
}
using Microsoft.Azure.Services.AppAuthentication;
using Microsoft.Azure.KeyVault;
// ...
var azureServiceTokenProvider = new AzureServiceTokenProvider();
string accessToken = await azureServiceTokenProvider.GetAccessTokenAsync("https://vault.azure.net");
// OR
var kv = new KeyVaultClient(new
KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure</artifactId>
<version>1.23.0</version>
</dependency>
2. Utilize o AppServiceMSICredentials objeto para autenticação. Este exemplo mostra como este mecanismo
pode ser usado para trabalhar com o Cofre da Chave Azure:
import com.microsoft.azure.AzureEnvironment;
import com.microsoft.azure.management.Azure;
import com.microsoft.azure.management.keyvault.Vault
//...
Azure azure = Azure.authenticate(new AppServiceMSICredentials(AzureEnvironment.AZURE))
.withSubscription(subscriptionId);
Vault myKeyVault = azure.vaults().getByResourceGroup(resourceGroup, keyvaultName);
"identity": {
"type": "None"
}
NOTE
Há também uma configuração de aplicação que pode ser definida, WEBSITE_DISABLE_MSI, que apenas desativa o serviço
de token local. No entanto, deixa a identidade no lugar, e a ferramenta ainda mostrará a identidade gerida como "on" ou
"ativada". Como resultado, a utilização desta definição não é recomendada.
Passos seguintes
Access SQL Database de forma segura usando uma identidade gerida
Utilize referências chave vault para serviço de
aplicações e funções azure
30/04/2020 • 8 minutes to read • Edit Online
Este tópico mostra-lhe como trabalhar com segredos do Cofre de Chaves Azure na sua aplicação App Service ou
Azure Functions sem exigir alterações de código. Azure Key Vault é um serviço que fornece gestão centralizada de
segredos, com total controlo sobre políticas de acesso e histórico de auditoria.
NOTE
Atualmente, as referências chave vault apenas suportam identidades geridas atribuídas pelo sistema. As identidades
atribuídas ao utilizador não podem ser utilizadas.
3. Crie uma política de acesso no Key Vault para a identidade de aplicação que criou anteriormente. Ative a
permissão secreta "Obter" nesta política. Não configure a "aplicação applicationId autorizada" ou as
definições, uma vez que esta não é compatível com uma identidade gerida.
NOTE
As referências key Vault não são atualmente capazes de resolver segredos armazenados num cofre chave com
restriçõesde rede .
Sintaxe de referência
Uma referência chave vault @Microsoft.KeyVault({referenceString}) é {referenceString} do formulário, onde é
substituído por uma das seguintes opções:
Nome do_cofre= nome do cofre;_ SecretName=SecretName; O Nome do Cofre deve ser o nome do seu recurso Key
SecretVersion=secretVersion Vault. O Nome Secreto deve ser o nome do segredo alvo. A
Versão Secreta deve ser a versão do segredo a usar.
Por exemplo, uma referência completa com versão seria como o seguinte:
@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/ec96f02080254f109c51a1f14cdb19
31)
Em alternativa:
@Microsoft.KeyVault(VaultName=myvault;SecretName=mysecret;SecretVersion=ec96f02080254f109c51a1f14cdb1931)
TIP
A maioria das definições de aplicação utilizando referências chave vault deve ser marcada como configurações de slot, uma
vez que deve ter cofres separados para cada ambiente.
{
//...
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "[variables('storageAccountName')]",
//...
},
{
"type": "Microsoft.Insights/components",
"name": "[variables('appInsightsName')]",
//...
},
{
"type": "Microsoft.Web/sites",
"name": "[variables('functionAppName')]",
"identity": {
"type": "SystemAssigned"
},
//...
"resources": [
{
"type": "config",
"name": "appsettings",
//...
"dependsOn": [
"[resourceId('Microsoft.Web/sites', variables('functionAppName'))]",
"[resourceId('Microsoft.Web/sites', variables('functionAppName'))]",
"[resourceId('Microsoft.KeyVault/vaults/', variables('keyVaultName'))]",
"[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'),
variables('storageConnectionStringName'))]",
"[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'),
variables('appInsightsKeyName'))]"
],
"properties": {
"AzureWebJobsStorage": "[concat('@Microsoft.KeyVault(SecretUri=',
reference(variables('storageConnectionStringResourceId')).secretUriWithVersion, ')')]",
"WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "
[concat('@Microsoft.KeyVault(SecretUri=',
reference(variables('storageConnectionStringResourceId')).secretUriWithVersion, ')')]",
"APPINSIGHTS_INSTRUMENTATIONKEY": "[concat('@Microsoft.KeyVault(SecretUri=',
reference(variables('appInsightsKeyResourceId')).secretUriWithVersion, ')')]",
"WEBSITE_ENABLE_SYNC_UPDATE_SITE": "true"
//...
}
},
{
"type": "sourcecontrols",
"name": "web",
//...
"dependsOn": [
"[resourceId('Microsoft.Web/sites', variables('functionAppName'))]",
"[resourceId('Microsoft.Web/sites/config', variables('functionAppName'),
'appsettings')]"
],
}
]
},
{
"type": "Microsoft.KeyVault/vaults",
"name": "[variables('keyVaultName')]",
//...
"dependsOn": [
"[resourceId('Microsoft.Web/sites', variables('functionAppName'))]"
],
"properties": {
//...
"accessPolicies": [
{
"tenantId": "[reference(concat('Microsoft.Web/sites/', variables('functionAppName'),
'/providers/Microsoft.ManagedIdentity/Identities/default'), '2015-08-31-PREVIEW').tenantId]",
"objectId": "[reference(concat('Microsoft.Web/sites/', variables('functionAppName'),
'/providers/Microsoft.ManagedIdentity/Identities/default'), '2015-08-31-PREVIEW').principalId]",
"permissions": {
"secrets": [ "get" ]
}
}
]
},
"resources": [
{
"type": "secrets",
"name": "[variables('storageConnectionStringName')]",
//...
"dependsOn": [
"[resourceId('Microsoft.KeyVault/vaults/', variables('keyVaultName'))]",
"[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
],
"properties": {
"value": "[concat('DefaultEndpointsProtocol=https;AccountName=',
variables('storageAccountName'), ';AccountKey=', listKeys(variables('storageAccountResourceId'),'2015-05-01-
preview').key1)]"
}
},
{
"type": "secrets",
"name": "[variables('appInsightsKeyName')]",
"name": "[variables('appInsightsKeyName')]",
//...
"dependsOn": [
"[resourceId('Microsoft.KeyVault/vaults/', variables('keyVaultName'))]",
"[resourceId('Microsoft.Insights/components', variables('appInsightsName'))]"
],
"properties": {
"value": "[reference(resourceId('microsoft.insights/components/',
variables('appInsightsName')), '2015-05-01').InstrumentationKey]"
}
}
]
}
]
}
NOTE
Neste exemplo, a implementação do controlo de origem depende das definições de aplicação. Normalmente, este
comportamento é normalmente inseguro, uma vez que a atualização de definição de aplicações se comporta
assincronicamente. No entanto, como WEBSITE_ENABLE_SYNC_UPDATE_SITE incluímos a definição de aplicação, a
atualização é sincronizada. Isto significa que a implementação do controlo de fonte só começará depois de as definições de
aplicação terem sido totalmente atualizadas.
No seu código de aplicação, pode aceder aos certificados públicos ou privados que adiciona ao Serviço de
Aplicações. O seu código de aplicação pode funcionar como cliente e aceder a um serviço externo que requer a
autenticação do certificado, ou pode ter de executar tarefas criptográficas. Este guia de como fazer mostra como
utilizar certificados públicos ou privados no seu código de candidatura.
Esta abordagem à utilização de certificados no seu código utiliza a funcionalidade TLS no Serviço de Aplicações,
que requer que a sua aplicação esteja no nível Básico ou superior. Se a sua aplicação estiver em nível Livre ou
Par tilhado, pode incluir o ficheiro de certificado no seu repositóriode aplicações .
Quando permite que o Serviço de Aplicações gere os seus certificados TLS/SSL, pode manter os certificados e o
código de aplicação separadamente e salvaguardar os seus dados sensíveis.
Pré-requisitos
Para seguir este guia:
Criar uma aplicação do Serviço de Aplicações
Adicione um certificado à sua aplicação
using System;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
if (cert is null)
throw new Exception($"Certificate with thumbprint {certThumbprint} was not found");
// Use certificate
Console.WriteLine(cert.FriendlyName);
// Consider to call Dispose() on the certificate after it's being used, avaliable in .NET 4.6 and later
}
No código Java, acede ao certificado da loja "Windows-MY" utilizando o campo Nome Comum sujeito (ver
certificado de chave pública). O seguinte código mostra como carregar um certificado de chave privada:
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
import java.security.KeyStore;
import java.security.cert.Certificate;
import java.security.PrivateKey;
...
KeyStore ks = KeyStore.getInstance("Windows-MY");
ks.load(null, null);
Certificate cert = ks.getCertificate("<subject-cn>");
PrivateKey privKey = (PrivateKey) ks.getKey("<subject-cn>", ("<password>").toCharArray());
Para idiomas que não suportem ou ofereçam suporte insuficiente para a loja de certificados Windows, consulte o
certificado de carga a partir do ficheiro.
Os nomes dos ficheiros do certificado são as impressões digitais do certificado. O código C# seguinte mostra
como carregar um certificado público numa aplicação Linux.
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
...
var bytes = File.ReadAllBytes("/var/ssl/certs/<thumbprint>.der");
var cert = new X509Certificate2(bytes);
Para ver como carregar um certificado TLS/SSL a partir de um ficheiro no Node.js, PHP, Python, Java ou Ruby,
consulte a documentação para o respetivo idioma ou plataforma web.
NOTE
ASP.NET e ASP.NET Core no Windows devem aceder à loja de certificados mesmo que carregue um certificado de um ficheiro.
Para carregar um ficheiro de certificado numa aplicação Windows .NET, carregue o perfil de utilizador atual com o seguinte
comando na Cloud Shell:
Esta abordagem à utilização de certificados no seu código utiliza a funcionalidade TLS no Serviço de Aplicações, que requer
que a sua aplicação esteja no nível Básico ou superior.
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
...
var bytes = File.ReadAllBytes("~/<relative-path-to-cert-file>");
var cert = new X509Certificate2(bytes);
Para ver como carregar um certificado TLS/SSL a partir de um ficheiro no Node.js, PHP, Python, Java ou Ruby,
consulte a documentação para o respetivo idioma ou plataforma web.
Mais recursos
Proteja um nome DNS personalizado com uma ligação TLS/SSL no Serviço de Aplicações Azure
Impor HTTPS
Impor TLS 1.1/1.2
FAQ : Certificados de serviço de aplicações
Configure autenticação mútua TLS para serviço de
aplicações azure
09/05/2020 • 10 minutes to read • Edit Online
Pode restringir o acesso à sua aplicação Azure App Service, permitindo-lhe diferentes tipos de autenticação. Uma
maneira de fazê-lo é solicitar um certificado de cliente quando o pedido do cliente for sobre TLS/SSL e validar o
certificado. Este mecanismo chama-se autenticação mútua TLS ou autenticação de certificado de cliente. Este
artigo mostra como configurar a sua app para utilizar a autenticação do certificado de cliente.
NOTE
Se aceder ao seu site em HTTP e não HTTPS, não receberá qualquer certificado de cliente. Portanto, se o seu pedido requer
certificados de cliente, não deve permitir pedidos para a sua candidatura em HTTP.
Confirme que a aplicação Web não está no escalão F1 ou D1 . O escalão atual da aplicação é realçado com uma
caixa azul-escura.
O SSL personalizado não é suportado nos escalões F1 ou D1 . Se precisar de aumentar verticalmente, siga os
passos na secção seguinte. Caso contrário, feche a página Scale up e salte a secção de plano seletiva para cima.
Aumentar verticalmente o seu plano do Serviço de Aplicações
Selecione qualquer uma das camadas não gratuitas (B1 , B2 , B3 ou qualquer camada na categoria Produção ). Para
obter opções adicionais, clique em Ver opções adicionais .
Clique em Aplicar .
Quando vir a notificação seguinte, significa que a operação de dimensionamento está completa.
ASP.NET amostra
using System;
using System.Collections.Specialized;
using System.Security.Cryptography.X509Certificates;
using System.Web;
namespace ClientCertificateUsageSample
{
public partial class Cert : System.Web.UI.Page
{
public string certHeader = "";
public string errorString = "";
public string errorString = "";
private X509Certificate2 certificate = null;
public string certThumbprint = "";
public string certSubject = "";
public string certIssuer = "";
public string certSignatureAlg = "";
public string certIssueDate = "";
public string certExpiryDate = "";
public bool isValidCert = false;
//
// Read the certificate from the header into an X509Certificate2 object
// Display properties of the certificate on the page
//
protected void Page_Load(object sender, EventArgs e)
{
NameValueCollection headers = base.Request.Headers;
certHeader = headers["X-ARR-ClientCert"];
if (!String.IsNullOrEmpty(certHeader))
{
try
{
byte[] clientCertBytes = Convert.FromBase64String(certHeader);
certificate = new X509Certificate2(clientCertBytes);
certSubject = certificate.Subject;
certIssuer = certificate.Issuer;
certThumbprint = certificate.Thumbprint;
certSignatureAlg = certificate.SignatureAlgorithm.FriendlyName;
certIssueDate = certificate.NotBefore.ToShortDateString() + " " +
certificate.NotBefore.ToShortTimeString();
certExpiryDate = certificate.NotAfter.ToShortDateString() + " " +
certificate.NotAfter.ToShortTimeString();
}
catch (Exception ex)
{
errorString = ex.ToString();
}
finally
{
isValidCert = IsValidClientCertificate();
if (!isValidCert) Response.StatusCode = 403;
else Response.StatusCode = 200;
}
}
else
{
certHeader = "";
}
}
//
// This is a SAMPLE verification routine. Depending on your application logic and security
requirements,
// you should modify this method
//
private bool IsValidClientCertificate()
{
// In this example we will only accept the certificate as a valid certificate if all the
conditions below are met:
// 1. The certificate is not expired and is active for the current time on server.
// 2. The subject name of the certificate has the common name nildevecc
// 3. The issuer name of the certificate has the common name nildevecc and organization name
Microsoft Corp
// 4. The thumbprint of the certificate is 30757A2E831977D8BD9C8496E4C99AB26CB9622B
//
// This example does NOT test that this certificate is chained to a Trusted Root Authority (or
revoked) on the server
// and it allows for self signed certificates
//
if (certificate == null || !String.IsNullOrEmpty(errorString)) return false;
return true;
}
}
}
Amostra de Nó.js
O seguinte código de amostra Node.js recebe o X-ARR-ClientCert cabeçalho e utiliza a forja do nó para converter
a cadeia PEM codificada com base 64 num objeto de certificado e validá-lo:
import { NextFunction, Request, Response } from 'express';
import { pki, md, asn1 } from 'node-forge';
// Validate issuer
if (incomingCert.issuer.hash.toLowerCase() !== 'abcdef1234567890abcdef1234567890abcdef12') throw
new Error('UNAUTHORIZED');
// Validate subject
if (incomingCert.subject.hash.toLowerCase() !== 'abcdef1234567890abcdef1234567890abcdef12') throw
new Error('UNAUTHORIZED');
next();
} catch (e) {
if (e instanceof Error && e.message === 'UNAUTHORIZED') {
res.status(401).send();
} else {
next(e);
}
}
}
}
Amostra de Java
A seguinte classe Java codifica X-ARR-ClientCert o X509Certificate certificado de uma instância.
certificateIsValid() valida que a impressão digital do certificado corresponde à dada no construtor e que o
certificado não expirou.
import java.io.ByteArrayInputStream;
import java.security.NoSuchAlgorithmException;
import java.security.cert.*;
import java.security.MessageDigest;
import sun.security.provider.X509Factory;
import javax.xml.bind.DatatypeConverter;
import java.util.Base64;
import java.util.Date;
/**
* Constructor.
* @param certificate The certificate from the "X-ARR-ClientCert" HTTP header
* @param thumbprint The thumbprint to check against
* @throws CertificateException If the certificate factory cannot be created.
*/
public ClientCertValidator(String certificate, String thumbprint) throws CertificateException {
certificate = certificate
.replaceAll(X509Factory.BEGIN_CERT, "")
.replaceAll(X509Factory.END_CERT, "");
CertificateFactory cf = CertificateFactory.getInstance("X.509");
byte [] base64Bytes = Base64.getDecoder().decode(certificate);
X509Certificate X509cert = (X509Certificate) cf.generateCertificate(new
ByteArrayInputStream(base64Bytes));
this.setCertificate(X509cert);
this.setThumbprint(thumbprint);
}
/**
* Check that the certificate's thumbprint matches the one given in the constructor, and that the
* certificate has not expired.
* @return True if the certificate's thumbprint matches and has not expired. False otherwise.
*/
public boolean certificateIsValid() throws NoSuchAlgorithmException, CertificateEncodingException {
return certificateHasNotExpired() && thumbprintIsValid();
}
/**
* Check certificate's timestamp.
* @return Returns true if the certificate has not expired. Returns false if it has expired.
*/
private boolean certificateHasNotExpired() {
Date currentTime = new java.util.Date();
try {
this.getCertificate().checkValidity(currentTime);
} catch (CertificateExpiredException | CertificateNotYetValidException e) {
return false;
}
return true;
}
/**
* Check the certificate's thumbprint matches the given one.
* @return Returns true if the thumbprints match. False otherwise.
*/
private boolean thumbprintIsValid() throws NoSuchAlgorithmException, CertificateEncodingException {
MessageDigest md = MessageDigest.getInstance("SHA-1");
byte[] der = this.getCertificate().getEncoded();
md.update(der);
byte[] digest = md.digest();
String digestHex = DatatypeConverter.printHexBinary(digest);
return digestHex.toLowerCase().equals(this.getThumbprint().toLowerCase());
}
Encriptar os dados da aplicação da sua aplicação web em repouso requer uma Conta de Armazenamento Azure e
um Cofre de Chave Azure. Estes serviços são utilizados quando executa a sua aplicação a partir de um pacote de
implementação.
O Armazenamento Azure fornece encriptação em repouso. Pode utilizar as chaves fornecidas pelo sistema ou as
suas próprias chaves geridas pelo cliente. É aqui que os dados da sua aplicação são armazenados quando não
está a ser gerido numa aplicação web em Azure.
A partir de um pacote de implementação é uma funcionalidade de implementação do Serviço de Aplicações.
Permite-lhe implementar o conteúdo do seu site a partir de uma conta de armazenamento Azure utilizando um
URL de Assinatura de Acesso Partilhado (SAS).
As referências chave vault são uma característica de segurança do Serviço de Aplicações. Permite-lhe importar
segredos no prazo de execução como definições de aplicação. Utilize isto para encriptar o URL SAS da sua Conta
de Armazenamento Azure.
NOTE
Guarde este URL SAS, este é utilizado mais tarde para permitir o acesso seguro do pacote de implementação em tempo de
execução.
A adição desta definição de aplicação faz com que a sua aplicação web reinicie. Depois de a aplicação ter reiniciado,
navegue para a aplicação e certifique-se de que a aplicação começou a utilizar corretamente o pacote de
implementação. Se a aplicação não tiver começado corretamente, consulte a Corrida do guia de resolução de
problemas do pacote.
Criptografe a definição de aplicação utilizando referências chave vault
Agora pode substituir o WEBSITE_RUN_FROM_PACKAGE valor da definição de aplicação por uma referência chave vault
ao URL codificado pela SAS. Isto mantém o URL SAS encriptado no Cofre chave, que fornece uma camada extra de
segurança.
1. Utilize o az keyvault create seguinte comando para criar uma instância chave vault.
2. Siga estas instruções para dar acesso à sua aplicação ao seu cofre chave:
3. Utilize o az keyvault secret set seguinte comando para adicionar o seu URL externo como um segredo no
seu cofre chave:
4. Utilize o az webapp config appsettings set seguinte comando WEBSITE_RUN_FROM_PACKAGE para criar a
definição de aplicação com o valor como referência do Cofre chave ao URL externo:
Atualizar esta definição de aplicação faz com que a sua aplicação web reinicie. Depois de a aplicação ter reiniciado,
procure-a para se certificar de que começou corretamente a utilizar a referência do Cofre chave.
3. Atualize a referência do cofre chave na definição da sua aplicação para a nova versão secreta:
Resumo
Os ficheiros de aplicação estão agora encriptados em repouso na sua conta de armazenamento. Quando a sua
aplicação web começa, ele recupera o URL SAS do seu cofre chave. Finalmente, a aplicação web carrega os ficheiros
da aplicação a partir da conta de armazenamento.
Se precisar de revogar o acesso da aplicação web à sua conta de armazenamento, pode revogar o acesso ao cofre
da chave ou rodar as chaves da conta de armazenamento, o que invalida o URL SAS.
Passos seguintes
Referências chave vault para serviço de aplicações
Encriptação azure storage para dados em repouso
Aumentar uma aplicação no Azure App Service
17/06/2020 • 5 minutes to read • Edit Online
Este artigo mostra-lhe como escalar a sua app no Azure App Service. Existem dois fluxos de trabalho para
escala, escala e escala, e este artigo explica a escala de fluxo de trabalho.
Escala para cima: Obtenha mais CPU, memória, espaço em disco e funcionalidades extra como máquinas
virtuais dedicadas (VMs), domínios e certificados personalizados, slots de encenação, autoscalcificação e
muito mais. Escala-se alterando o nível de preços do plano de Serviço de Aplicações a que a sua aplicação
pertence.
Escala para fora: Aumente o número de casos vm que executam a sua aplicação. Pode aumentar até 30
instâncias, dependendo do seu nível de preços. O App Service Environments em nível isolado aumenta
ainda mais a sua contagem de escala para 100 instâncias. Para obter mais informações sobre o
escalonamento, consulte a contagem de exemplos de escala manualmente ou automaticamente. Lá, você
descobre como usar autoscalcificação, que é escalar a contagem de instâncias automaticamente com base
em regras e horários pré-definidos.
As definições de escala demoram apenas alguns segundos a aplicar e a afetar todas as aplicações do seu
plano de Serviço de Aplicações. Não exigem que altere o seu código ou reimplemente a sua aplicação.
Para obter informações sobre os preços e funcionalidades dos planos individuais do App Service, consulte os
detalhes dos preços do serviço de aplicações.
NOTE
Antes de mudar um plano de Serviço de Aplicações do free tier, primeiro deve remover os limites de gastos em vigor
para a sua subscrição Azure. Para visualizar ou alterar opções para a subscrição do Microsoft Azure App Service,
consulte as subscrições do Microsoft Azure.
2. Na parte resumo da página do grupo Recursos, selecione um recurso que pretende escalar. A
imagem que se segue mostra um recurso de base de dados SQL.
Para aumentar o recurso relacionado, consulte a documentação para o tipo de recurso específico. Por
exemplo, para aumentar uma única base de dados SQL, consulte os recursos de base de dados
individuais da Escala na Base de Dados Azure SQL. Para escalar uma Base de Dados Azure para o
recurso MySQL, consulte os recursos Scale MySQL.
Mais recursos
Scale instance count manually or automatically (Dimensionar a contagem de instâncias manual ou
automaticamente)
Configure o nível PremiumV2 para o Serviço de Aplicações
Configure premiumV2 nível para serviço de
aplicações Azure
28/04/2020 • 8 minutes to read • Edit Online
O novo nível de preços PremiumV2 dá-lhe processadores mais rápidos, armazenamento SSD e duplica a relação
memória-núcleo dos níveis de preços existentes. Com a vantagem de desempenho, você poderia economizar
dinheiro executando as suas aplicações em menos casos. Neste artigo, aprende-se a criar uma aplicação no
escalão PremiumV2 ou a aumentar uma aplicação para o nível PremiumV2.
Pré-requisitos
Para escalar uma aplicação para PremiumV2, é necessário ter uma app Azure App Service que seja de um nível
de preços inferior ao PremiumV2 , e a aplicação deve estar a funcionar numa implementação do App Service que
suporta o PremiumV2.
Disponibilidade PremiumV2
O nível PremiumV2 está disponível para o Serviço de Aplicações tanto no Windows como no Linux.
PremiumV2 está disponível na maioria das regiões do Azure. Para ver se está disponível na sua região, execute o
seguinte comando Azure CLI na Concha da Nuvem Azure:
Se a sua operação terminar com sucesso, a página geral da sua aplicação mostra que está agora num nível
PremiumV2.
Se tiver um erro
Alguns planos de Serviço de Aplicações não podem escalar até ao nível PremiumV2 se a implementação
subjacente ao Serviço de Aplicações não suportar o PremiumV2. Consulte a Scale up de um grupo de recursos
não apoiados e uma combinação de região para mais detalhes.
Na página da aplicação Clone, pode criar um plano de Serviço de Aplicações utilizando premiumV2 na
região que deseja, e especificar as definições e configurações da aplicação que pretende clonar.
Automatizar com scripts
Pode automatizar a criação de aplicações no nível PremiumV2 com scripts, utilizando o Azure CLI ou o Azure
PowerShell.
CLI do Azure
O seguinte comando cria um plano de Serviço de Aplicações em P1V2. Podes executá-lo na Cloud Shell. As
opções para --sku são P1V2, _P2V2_e P3V2.
Azure PowerShell
NOTE
Este artigo foi atualizado para utilizar o novo módulo AZ do Azure PowerShell. Pode continuar a utilizar o módulo AzureRM,
que continuará a receber correções de erros até, pelo menos, dezembro de 2020. Para obter mais informações sobre o novo
módulo Az e a compatibilidade do AzureRM, veja Apresentação do novo módulo Az do Azure PowerShell. Para obter
instruções de instalação do módulo Az, veja Instalar o Azure PowerShell.
O seguinte comando cria um plano de Serviço de Aplicações em P1V2. As opções -WorkerSize para são
Pequenas, _Médias_e Grandes.
Mais recursos
Aumentar verticalmente uma aplicação no Azure
Scale instance count manually or automatically (Dimensionar a contagem de instâncias manual ou
automaticamente)
Introdução ao Dimensionamento Automático no
Azure
07/05/2020 • 8 minutes to read • Edit Online
Este artigo descreve como configurar as definições de escala automática para o seu recurso no portal Microsoft
Azure.
A escala automática Do Monitor Azure aplica-se apenas a conjuntos de escala de máquinas virtuais, serviços de
cloud, serviço de aplicações - Aplicações Webe serviços de Gestão API.
3. Clique em Escala Automática para ver todos os recursos para os quais a Escala Automática é aplicável,
juntamente com o seu estado atual de escala Automática.
Pode utilizar o painel de filtros na parte superior para analisar a lista para selecionar recursos num grupo de
recursos específicos, tipos de recursos específicos ou um recurso específico.
Para cada recurso, encontrará a contagem de instâncias atuais e o estado de escala automática. O estado de escala
automática pode ser:
Não configurado : Ainda não ativou a Escala Automática para este recurso.
Ativado : Ativou a escala Automática para este recurso.
Desativado: Desativou a escala automática para este recurso.
3. Forneça um nome para a definição de escala e, em seguida, clique em Adicionar uma regra . Note as
opções de regra de escala que se abrem como um painel de contexto no lado direito. Por padrão, isto define
a opção de escalar a sua contagem de instâncias em 1 se a percentagem de CPU do recurso exceder 70%.
Deixe-o nos seus valores padrão e clique em Adicionar .
4. Agora criaste a tua regra de primeira escala. Note que o UX recomenda as melhores práticas e afirma que
"recomenda-se ter pelo menos uma escala em regra." Para tal:
a. Clique em Adicionar uma regra .
b. Definir operador para menos de .
c. Definir limiar para 20 .
d. Definir Operação para Diminuir a contagem por .
Deve agora ter uma regulação de escala que escala/escala sem escalas com base na utilização do CPU.
5. Clique em Guardar .
Parabéns! Criou com sucesso a sua definição de primeira escala para escalar automaticamente a sua aplicação web
com base no uso do CPU.
NOTE
Os mesmos passos são aplicáveis para começar com um conjunto de escala de máquina virtual ou função de serviço em
nuvem.
Outras considerações
Escala com base num horário
Além da escala baseada no CPU, pode definir a sua escala de forma diferente para dias específicos da semana.
1. Clique Em adicionar uma condição de escala .
2. A definição do modo de escala e as regras são as mesmas que a condição predefinida.
3. Selecione Repita os dias específicos para o horário.
4. Selecione os dias e o tempo de início/fim para quando a condição de escala deve ser aplicada.
Se quiser ver o histórico de escala completa (por um prazo de até 90 dias), selecione Clique aqui para ver mais
detalhes . O registo de atividade abre, com escala automática pré-selecionada para o seu recurso e categoria.
Veja a definição de escala do seu recurso
A escala automática é um recurso do Gestor de Recursos Azure. Pode visualizar a definição de escala em JSON,
mudando para o separador JSON.
Pode fazer alterações na JSON diretamente, se necessário. Estas alterações serão refletidas depois de as salvares.
Desative a escala automática e escala manualmente as suas instâncias
Pode haver momentos em que pretende desativar a sua regulação de escala atual e escalar manualmente o seu
recurso.
Clique no botão de desativação de escala automática na parte superior.
NOTE
Esta opção desativa a sua configuração. No entanto, pode voltar a fazê-lo depois de voltar a ativar a Escala Automática.
Pode sempre voltar à escala automática clicando em escala automática e, em seguida, guardar .
Passos seguintes
Crie um Alerta de Registo de Atividades para monitorizar todas as operações do motor de escala automática na
sua subscrição
Crie um Alerta de Registo de Atividades para monitorizar todas as operações falhadas de escala
automática/escala na sua subscrição
Hospedagem de alta densidade no Serviço de
Aplicações Azure usando escala por app
28/04/2020 • 6 minutes to read • Edit Online
NOTE
Este artigo foi atualizado para utilizar o novo módulo AZ do Azure PowerShell. Pode continuar a utilizar o módulo AzureRM,
que continuará a receber correções de erros até, pelo menos, dezembro de 2020. Para obter mais informações sobre o novo
módulo Az e a compatibilidade do AzureRM, veja Apresentação do novo módulo Az do Azure PowerShell. Para obter
instruções de instalação do módulo Az, veja Instalar o Azure PowerShell.
Ao utilizar o App Service, pode escalar as suas aplicações escalando o plano de Serviço de Aplicações em que
funcionam. Quando várias aplicações são executadas no mesmo plano de App Service, cada instância em escala
executa todas as aplicações do plano.
A escala por aplicação pode ser ativada ao nível do plano do App Service para permitir a escala de uma aplicação
independentemente do plano de Serviço de Aplicações que a acolhe. Desta forma, um plano de Serviço de
Aplicações pode ser dimensionado para 10 instâncias, mas uma aplicação pode ser definida para usar apenas cinco.
NOTE
A escala por app está disponível apenas para os níveis de preços Standard, Premium, Premium V2 e Isolados.
As aplicações são atribuídas ao plano de Serviço de Aplicações disponível, utilizando uma melhor abordagem de
esforço para uma distribuição uniforme em instâncias. Embora não seja garantida uma distribuição uniforme, a
plataforma garantirá que duas instâncias da mesma aplicação não serão alojadas na mesma instância do plano de
app Service.
A plataforma não depende de métricas para decidir sobre a atribuição de trabalhadores. As aplicações só são
reequilibradas quando as instâncias são adicionadas ou removidas do plano de Serviço de Aplicações.
Ative a escala por app com um Plano de -PerSiteScaling $true Serviço de Set-AzAppServicePlan Aplicações
existente, passando o parâmetro para o cmdlet.
# Enable per-app scaling for the App Service Plan using the "PerSiteScaling" parameter.
Set-AzAppServicePlan -ResourceGroupName $ResourceGroup `
-Name $AppServicePlan -PerSiteScaling $true
Ao nível da aplicação, configure o número de casos que a aplicação pode usar no plano do Serviço de Aplicações.
No exemplo abaixo, a aplicação está limitada a duas instâncias, independentemente de quantas instâncias o plano
de serviço de aplicações subjacente se baseia.
IMPORTANT
$newapp.SiteConfig.NumberOfWorkers é diferente $newapp.MaxNumberOfWorkers de . A escala por app
$newapp.SiteConfig.NumberOfWorkers utiliza para determinar as características de escala da aplicação.
Passos seguintes
Planos de serviço de aplicação azure em profundidade
Introdução ao Ambiente do Serviço de Aplicações
Monitorize aplicações no Serviço de Aplicações
Azure
09/05/2020 • 15 minutes to read • Edit Online
O Azure App Service fornece funcionalidades de monitorização incorporadas para aplicações web, aplicações
móveis e API no portal Azure.
No portal Azure, pode rever quotas e métricas para um plano de app e app service, e configurar alertas e
métricas baseadas em regras de autoscalcificação.
Compreender quotas
As aplicações que estão hospedadas no App Service estão sujeitas a certos limites nos recursos que podem
utilizar. Os limites são definidos pelo plano de Serviço de Aplicações que está associado à aplicação.
NOTE
Os planos de hospedagem gratuitos e partilhados (pré-visualização) são os planos de hospedagem de níveis base que
funcionam nas mesmas máquinas virtuais Azure que outras aplicações do App Service. Algumas aplicações podem
pertencer a outros clientes. Estas camadas destinam-se a ser utilizadas apenas para efeitos de desenvolvimento e teste.
Se a aplicação estiver hospedada num plano Gratuito ou Partilhado, os limites dos recursos que a app pode
utilizar são definidos por quotas.
Se a aplicação estiver alojada num plano Basic, Standard, ou Premium, os limites dos recursos que podem utilizar
são definidos pelo tamanho (Pequeno, Médio, Grande) e contagem de instâncias (1, 2, 3, e assim por diante) do
plano de Serviço de Aplicações.
Quotas para aplicações gratuitas ou partilhadas são:
CPU (Cur to) A quantidade de CPU permitida para esta aplicação num
intervalo de 5 minutos. Esta quota repõe a cada cinco
minutos.
A única quota aplicável às aplicações hospedadas em Basic, Standarde Premium é o Sistema de Ficheiros.
Para obter mais informações sobre as quotas, limites e funcionalidades específicas disponíveis para as várias
SKUs do Serviço de Aplicações, consulte os limites do serviço de subscrição azure.
Aplicação de quotas
Se uma aplicação exceder o CPU (curto) CPU (Dia), ou quota de largura de banda, a aplicação é interrompida até
que a quota reset. Durante este período, todos os pedidos de entrada resultam num erro HTTP 403.
Compreender as métricas
NOTE
O Uso do Sistema de Ficheiros é uma nova métrica a ser lançada globalmente, não são esperados dados a não ser que
tenha sido listado em branco para pré-visualização privada.
IMPORTANT
O tempo médio de resposta será premeditado para evitar confusões com agregações métricas. Utilize o Tempo de
Resposta como substituto.
Tempo médio de resposta (depreciado) O tempo médio de tempo para a app servir pedidos, em
segundos.
M ÉT RIC A DESC RIÇ Ã O
Conjunto de trabalho médio da memória A quantidade média de memória usada pela app, em
megabytes (MiB).
Erros do ser vidor http A contagem de pedidos que resulta num código de estado
HTTP ≥ 500, mas < 600.
IO Outros Bytes por Segundo A taxa a que o processo da aplicação está a emitir bytes para
operações de I/O que não envolvem dados, como operações
de controlo.
IO outras operações por segundo A taxa a que o processo da aplicação está a emitir operações
de I/S que não são operações de leitura ou escrita.
IO Ler Bytes por Segundo A taxa a que o processo da aplicação está a ler bytes de
operações de I/O.
IO Ler Operações por segundo A taxa a que o processo da aplicação está a emitir operações
de I/O.
IO Escrever Bytes por Segundo A taxa a que o processo da aplicação está a escrever bytes
para operações de I/O.
IO Write Operations por segundo A taxa a que o processo da aplicação está a emitir operações
de E/S.
Conjunto de trabalho de memória A quantidade atual de memória usada pela app, no MiB.
Comprimento da fila do disco O número médio de pedidos de leitura e escrita que foram
em fila no armazenamento. Um comprimento de fila de disco
elevado é uma indicação de uma aplicação que pode estar a
abrandar devido ao excesso de I/O do disco.
Azure Pode aceder às métricas diretamente a partir da página de visão geral do recurso. Aqui você verá
gráficos que representam algumas das métricas das aplicações.
Clicar em qualquer um desses gráficos irá levá-lo à vista das métricas onde você pode criar gráficos
personalizados, consultando métricas diferentes e muito mais.
Para saber mais sobre métricas, consulte as métricasde serviço monitor .
Descrição geral
O Azure fornece diagnósticos incorporados para ajudar a depurar uma aplicação de Serviço de Aplicações. Neste
artigo, aprende-se a permitir o registo de diagnóstico e a adicionar instrumentação à sua aplicação, bem como
como aceder à informação registada pelo Azure.
Este artigo utiliza o portal Azure e o Azure CLI para trabalhar com registos de diagnóstico. Para obter informações
sobre o trabalho com registos de diagnóstico utilizando o Visual Studio, consulte Troubleshooting Azure em
Visual Studio.
NOTE
Além das instruções de registo neste artigo, há uma nova capacidade de exploração madeireira integrada com a
Monitorização Azure. Você encontrará mais sobre esta capacidade na secção Enviar para o Monitor Azure (pré-visualização).
Registo de servidor web Windows Sistema de ficheiros do Raw HTTP solicita mandam
Serviço de Aplicações ou dados no formato de
blobs de armazenamento ficheiro de registo alargado
Azure W3C. Cada mensagem de
registo inclui dados como o
método HTTP, o recurso URI,
o IP do cliente, a porta
cliente, o agente utilizador, o
código de resposta, e assim
por diante.
T IP O P L ATA F O RM A LO C A L IZ A Ç Ã O DESC RIÇ Ã O
Exploração madeireira de Windows, Linux Sistema de ficheiros do Faça logs para quando
implantação Serviço de Aplicações publica conteúdo numa
aplicação. O registo de
implantação ocorre
automaticamente e não
existem configurações
configuráveis para o registo
de implantação. Ajuda-te a
determinar porque é que
um destacamento falhou.
Por exemplo, se utilizar um
script de implementação
personalizado,poderá utilizar
o registo de implementação
para determinar porque é
que o script está a falhar.
NOTE
O Serviço de Aplicações fornece uma ferramenta dedicada de diagnóstico interativa para ajudá-lo a resolver problemas com
a sua aplicação. Para mais informações, consulte a visão geral dos diagnósticos do Serviço de Aplicações Azure.
Além disso, pode utilizar outros serviços Azure para melhorar as capacidades de registo e monitorização da sua aplicação,
como o Azure Monitor.
Ativar o registo de aplicações (Windows)
NOTE
O registo de aplicações para armazenamento de bolhas só pode utilizar contas de armazenamento na mesma região que o
Serviço de Aplicações
Para permitir o registo de aplicações para aplicações windows no portal Azure,navegue para a sua aplicação e
selecione registos do Ser viço de Aplicações.
Selecione para qualquer registo de aplicações (Sistema de Ficheiros) ou Registo de Aplicações (Blob) , ou
ambos.
A opção Filesystem é para fins de depuração temporária, e desliga-se em 12 horas. A opção Blob é para a
exploração a longo prazo, e precisa de um recipiente de armazenamento de bolhas para escrever troncos. A opção
Blob também inclui informações adicionais nas mensagens de registo, InstanceId tais como Tid a identificação
da instância EventTickCount VM de origem da mensagem de log ( ), id de linha ( ) e um carimbo de tempo mais
granular ().
NOTE
Atualmente, apenas os registos de aplicações .NET podem ser escritos no armazenamento de blob. Java, PHP, Node.js, os
registos de aplicações Python só podem ser armazenados no sistema de ficheiros do Serviço de Aplicações (sem
modificações de código para escrever registos para armazenamento externo).
Além disso, se regenerar as chavesde acesso da sua conta de armazenamento, tem de redefinir a respetiva configuração de
registo para utilizar as teclas de acesso atualizadas. Para efetuar este procedimento:
1. No separador Configurar, desloque a respetiva função de registo para desligar . Guarde a sua configuração.
2. Ative o registo na bolha da conta de armazenamento novamente. Guarde a sua configuração.
Selecione o Nível , ou o nível de detalhes para registar. O quadro seguinte mostra as categorias de registo
incluídas em cada nível:
Desativado Nenhuma
NOTE
Se regenerar as chavesde acesso da sua conta de armazenamento, tem de redefinir a respetiva configuração de registo para
utilizar as teclas atualizadas. Para efetuar este procedimento:
1. No separador Configurar, desloque a respetiva função de registo para desligar . Guarde a sua configuração.
2. Ative o registo na bolha da conta de armazenamento novamente. Guarde a sua configuração.
Transmitir registos
Antes de fazer o streaming de registos em tempo real, ative o tipo de registo que deseja. Qualquer informação
escrita para ficheiros que terminem em .txt, .log ou .htm que sejam armazenadas no diretório /LogFiles
(d:/home/logfiles) é transmitida pelo Serviço de Aplicações.
NOTE
Alguns tipos de tampão de registo escrevem para o ficheiro de registo, o que pode resultar em eventos fora de ordem no
fluxo. Por exemplo, uma entrada de registo de aplicação que ocorra quando um utilizador visita uma página pode ser
exibida no fluxo antes da entrada correspondente de registo HTTP para o pedido da página.
No portal Azure
Para transmitir registos no portal Azure,navegue para a sua aplicação e selecione log stream .
Na nuvem shell
Para transmitir registos ao vivo na Cloud Shell,utilize o seguinte comando:
Para filtrar eventos específicos, tais como erros, utilize o parâmetro --Filtro. Por exemplo:
Para filtrar tipos de registo específicos, como http, utilize o parâmetro --Caminho. Por exemplo:
No terminal local
Para transmitir registos na consola local, instale o Azure CLI e inicie sessão na sua conta. Uma vez assinado,
seguiu as instruções para Cloud Shell
Para aplicações Linux/contentor, o ficheiro ZIP contém registos de saída de consolas tanto para o hospedeiro do
estivador como para o recipiente de estivador. Para uma aplicação com escala, o ficheiro ZIP contém um conjunto
de registos para cada instância. No sistema de ficheiros do Serviço de Aplicações, estes ficheiros de registo são o
conteúdo do diretório /home/LogFiles.
Para aplicações Windows, o ficheiro ZIP contém o conteúdo do diretório D:\Home\LogFiles no sistema de
ficheiros do Serviço de Aplicações. Tem a seguinte estrutura:
Registos de erros detalhados /Ficheiros de Registo/Erros Detalhados/ Contém ficheiros de erro HTM. Pode
ver os ficheiros HTM no navegador.
Outra forma de ver os vestígios de
pedido falhados é navegar para a
página da sua aplicação no portal. A
partir do menu esquerdo, selecione
Diagnosticar e resolver
problemas, em seguida, procurar
registos de rastreio de rastreio de
pedidos falhados, em seguida, clique
no ícone para navegar e ver o traço
que deseja.
Próximos passos
Registos de consulta com monitor Azure
Como monitorizar o Serviço de Aplicações Azure
Troubleshooting Azure App Service em Estúdio Visual
Analisar registos de aplicativos no HDInsight
Obtenha eventos de recursos no Serviço de
Aplicações Azure
20/05/2020 • 4 minutes to read • Edit Online
O Azure App Service fornece ferramentas incorporadas para monitorizar o estado e a saúde dos seus recursos. Os
eventos de recursos ajudam-no a compreender quaisquer alterações que tenham sido feitas aos recursos da sua
aplicação web subjacentes e tomem medidas necessárias. Os exemplos do evento incluem: escala de instâncias,
atualizações para definições de aplicações, reinício da aplicação web, e muito mais. Neste artigo, você aprenderá a
ver registos de atividade do Azure e permitirá que a Rede de Eventos monitorize eventos relacionados com a sua
aplicação web do App Service.
NOTE
A integração do Serviço de Aplicações com a Grelha de Eventos está em pré-visualização. Veja o anúncio para mais
detalhes.
Próximos passos
Registos de consulta com monitor Azure
Como monitorizar o Serviço de Aplicações Azure
Troubleshooting Azure App Service em Estúdio Visual
Analisar registos de aplicativos no HDInsight
Gerir um plano de serviço de aplicações em Azure
30/04/2020 • 8 minutes to read • Edit Online
Um plano azure App Service fornece os recursos que uma aplicação do App Service precisa de executar. Este guia
mostra como gerir um plano de Serviço de Aplicações.
Pode criar um plano de Serviço de Aplicações vazio, ou pode criar um plano como parte da criação de apps.
1. No portal Azure,selecione Criar um recurso .
2. Selecione New > Web App ou outro tipo de app de serviço de aplicação.
3. Configure a secção detalhes da instância antes de configurar o plano de serviço de aplicações. Definições
como Publicar e Sistemas Operativos podem alterar os níveis de preços disponíveis para o seu plano de
Serviço de Aplicações. A região determina onde é criado o seu plano de Serviço de Aplicações.
4. Na secção Plano de Serviço de Aplicações, selecione um plano existente ou crie um plano selecionando
criar novos .
5. Ao criar um plano, pode selecionar o nível de preços do novo plano. Em Sku e tamanho , selecione Alterar
tamanho para alterar o nível de preços.
1. No portal Azure,procure e selecione ser viços de App e selecione a app que pretende mover.
2. A partir do menu esquerdo, selecione plano de serviço de aplicações de mudança .
3. No plano de dropdown do App Ser vice, selecione um plano existente para mover a app para. A queda
mostra apenas planos que se encontram no mesmo grupo de recursos e região geográfica que o atual
plano de Serviço de Aplicações. Se não existir tal plano, permite-lhe criar um plano por defeito. Também
pode criar um novo plano manualmente selecionando criar novo .
4. Se criar um plano, pode selecionar o nível de preços do novo plano. No Nível de Preços, selecione o nível
existente para alterá-lo.
IMPORTANT
Se estiver a mover uma aplicação de um plano de nível superior para um plano de nível inferior, como de D1 para F1,
a aplicação pode perder certas capacidades no plano alvo. Por exemplo, se a sua aplicação utilizar certificados TLS/SSL,
poderá ver esta mensagem de erro:
Cannot update the site with hostname '<app_name>' because its current SSL configuration 'SNI based
SSL enabled' is not allowed in the target compute mode. Allowed SSL configuration is 'Disabled'.
IMPORTANT
A clonagem tem algumas limitações. Pode ler sobre eles na clonagem da App De Serviço de Aplicações Azure.
Escala rés-da-aplicação
Para aumentar o nível de preços de um plano de app service, consulte scale up uma app em Azure.
Para escalonar a contagem de exemplos de uma aplicação, consulte a contagem de exemplos de escala manual
mente ou automaticamente.
IMPORTANT
Os planos do Serviço de Aplicações que não têm aplicações associadas ainda incorrem em encargos porque continuam a
reservar as instâncias de VM configuradas.
Passos seguintes
Aumentar verticalmente uma aplicação no Azure
Efetuar cópia de segurança da sua aplicação no
Azure
17/06/2020 • 13 minutes to read • Edit Online
A funcionalidade de Backup e Restauro no Azure App Service permite-lhe criar facilmente cópias de segurança de
aplicações manualmente ou em horário. Pode configurar as cópias de segurança para serem mantidas até um
tempo indefinido. Pode restaurar a aplicação para uma imagem instantânea de um estado anterior,
sobressacando a aplicação existente ou restaurando para outra aplicação.
Para obter informações sobre a restauração de uma aplicação a partir de cópia de segurança, consulte Restaurar
uma aplicação no Azure.
O que é apoiado
O Serviço de Aplicações pode fazer o back up das seguintes informações para uma conta de armazenamento
Azure e um contentor que configuraram a sua aplicação para utilizar.
Configuração de aplicações
Conteúdo do ficheiro
Base de dados ligada à sua aplicação
As seguintes soluções de base de dados são suportadas com recurso de backup:
Base de Dados SQL
Base de Dados do Azure para MySQL
Base de Dados do Azure para PostgreSQL
MySQL in-app
NOTE
Cada cópia de segurança é uma cópia completa offline da sua aplicação, não uma atualização incremental.
Requisitos e restrições
A funcionalidade de Backup e Restauro requer que o plano de Serviço de Aplicações esteja no nível Standard,
Premium ou Isolado. Para obter mais informações sobre o escalonamento do seu plano de Serviço de
Aplicações para utilizar um nível mais elevado, consulte Scale up uma aplicação em Azure. Os níveis premium
e isolado permitem um maior número de back ups diários do que o nível Standard.
Precisa de uma conta de armazenamento Azure e de um recipiente na mesma subscrição que a aplicação que
pretende fazer. Para obter mais informações sobre as contas de armazenamento da Azure, consulte a visão
geral da conta de armazenamento Azure.
As cópias de segurança podem chegar a 10 GB de conteúdo de aplicações e bases de dados. Se o tamanho da
cópia de segurança exceder este limite, obtém-se um erro.
As cópias de segurança da Base de Dados Azure ativada por TLS para o MySQL não são suportadas. Se um
backup estiver configurado, receberá cópias de segurança falhadas.
Não são suportadas cópias de segurança da Base de Dados Azure ativada por TLS para PostgreSQL. Se um
backup estiver configurado, receberá cópias de segurança falhadas.
As bases de dados MySQL in-app são automaticamente apoiadas sem qualquer configuração. Se escamar
configurações manuais para bases de dados MySQL na aplicação, como adicionar cordas de ligação, as cópias
de segurança podem não funcionar corretamente.
A utilização de uma conta de armazenamento ativada por firewall, uma vez que o destino das suas cópias de
segurança não é suportado. Se um backup estiver configurado, receberá cópias de segurança falhadas.
NOTE
Se vir a seguinte mensagem, clique nela para atualizar o seu plano de Serviço de Aplicações antes de poder
proceder com cópias de segurança. Para obter mais informações, consulte Scale up uma aplicação em Azure.
2. Na página 'Backup', o backup não está configurado. Clique aqui para configurar a cópia de
segurança para a sua aplicação.
NOTE
Para que uma base de dados apareça nesta lista, a sua cadeia de ligação deve existir na secção de cordas de
Ligação da página de definições de aplicação para a sua aplicação.
As bases de dados MySQL in-app são automaticamente apoiadas sem qualquer configuração. Se escamar
configurações manuais para bases de dados MySQL na aplicação, como adicionar cordas de ligação, as cópias de
segurança podem não funcionar corretamente.
NOTE
As bases de dados individuais na cópia de segurança podem ser de 4GB no máximo, mas o tamanho máximo total da cópia
de segurança é de 10GB
Crie um ficheiro chamado _backup.filter e coloque a lista anterior no ficheiro, mas remova D:\home . Listar um
diretório ou ficheiro por linha. Assim, o conteúdo do ficheiro deve ser:
\site\wwwroot\Images\brand.png
\site\wwwroot\Images\2014
\site\wwwroot\Images\2013
Faça _backup.filter o upload do ficheiro para o D:\home\site\wwwroot\ diretório do seu site utilizando ftp ou
qualquer outro método. Se desejar, pode criar o ficheiro diretamente utilizando o Kudu DebugConsole e inserir o
conteúdo lá.
Execute cópias de segurança da mesma forma que normalmente o faria, manualmente ou automaticamente.
Agora, quaisquer ficheiros e pastas especificadas _backup.filter estão excluídos das futuras cópias de segurança
programadas ou iniciadas manualmente.
NOTE
Restaura cópias de segurança parciais do seu site da mesma forma que restauraria uma cópia de segurança regular. O
processo de restauro faz a coisa certa.
Quando uma cópia de segurança completa é restaurada, todo o conteúdo do site é substituído por tudo o que estiver na
cópia de segurança. Se um ficheiro estiver no site, mas não na cópia de segurança, é apagado. Mas quando uma cópia de
segurança parcial é restaurada, qualquer conteúdo que esteja localizado num dos diretórios da lista negra, ou em qualquer
ficheiro na lista negra, é deixado como está.
WARNING
Alterar qualquer um dos ficheiros do seu contentor de backups do seu website pode fazer com que a cópia de segurança
se torne inválida e, portanto, não seja restauradora.
Passos Seguintes
Para obter informações sobre a restauração de uma aplicação a partir de uma cópia de segurança, consulte
Restaurar uma aplicação no Azure.
Restaurar uma aplicação no Azure
28/04/2020 • 5 minutes to read • Edit Online
Este artigo mostra-lhe como restaurar uma aplicação no Azure App Service que já fez o backback (ver Back up a
sua aplicação em Azure). Pode restaurar a sua aplicação com as suas bases de dados ligadas a pedido para um
estado anterior, ou criar uma nova aplicação com base numa das cópias de segurança da sua aplicação original. O
Azure App Service suporta as seguintes bases de dados para cópia de segurança e restauro:
Base de Dados SQL
Base de Dados do Azure para MySQL
Base de Dados do Azure para PostgreSQL
MySQL in-app
Restaurar de backups está disponível para aplicações em execução em nível Standard e Premium. Para obter
informações sobre o dimensionamento da sua aplicação, consulte Scale up uma aplicação no Azure. O nível
premium permite que um maior número de backups diários seja realizado do que o nível Standard.
A opção de backup da App mostra-lhe todas as cópias de segurança existentes da aplicação atual, e pode
facilmente selecionar uma. A opção Armazenamento permite selecionar qualquer ficheiro ZIP de reserva
de qualquer conta e contentor de Armazenamento Azure existentes na sua subscrição. Se estiver a tentar
restaurar uma cópia de segurança de outra aplicação, utilize a opção Armazenamento.
3. Em seguida, especifique o destino para a restauração da aplicação no destino Restaurar .
WARNING
Se escolher A Sobreescrita, todos os dados existentes na sua aplicação atual são apagados e substituídos. Antes
de clicar em OK, certifique-se de que é exatamente o que quer fazer.
WARNING
Se o Serviço de Aplicações estiver a escrever dados para a base de dados enquanto os está a restaurar, pode
resultar em sintomas como violação da CHAVE PRIMÁRIA e perda de dados. Sugere-se que pare o Serviço de
Aplicações primeiro antes de começar a restaurar a base de dados.
Pode selecionar a App Existente para restaurar a cópia de segurança da aplicação para outra aplicação no
mesmo grupo de recursos. Antes de utilizar esta opção, já deveria ter criado outra aplicação no seu grupo
de recursos com a configuração da base de dados espelhada para a definida na cópia de segurança da
aplicação. Também pode Criar uma nova aplicação para restaurar o seu conteúdo.
4. Clique em OK .
Este artigo mostra-lhe como restaurar uma aplicação no Azure App Service a partir de um instantâneo. Pode
restaurar a sua aplicação para um estado anterior, com base numa das fotos da sua aplicação. Não é necessário
ativar a cópia de segurança de instantâneos, a plataforma guarda automaticamente uma imagem instantânea de
todas as aplicações para fins de recuperação de dados.
Os instantâneos são cópias de sombra incremental, e oferecem várias vantagens sobre cópias de segurança
regulares:
Não há erros de cópia de ficheiros devido a fechaduras de ficheiros.
Sem limitação do tamanho do armazenamento.
Não é necessária qualquer configuração.
Restaurar a partir de instantâneos está disponível para aplicações em nível Premium ou superior. Para obter
informações sobre o dimensionamento da sua aplicação, consulte Scale up uma aplicação no Azure.
Limitações
A funcionalidade encontra-se atualmente em pré-visualização.
Só pode restaurar a mesma aplicação ou uma ranhura pertencente a essa aplicação.
O Serviço de Aplicações para a aplicação alvo ou a ranhura de destino durante a restauração.
O Serviço de Aplicações mantém três meses de instantâneos para fins de recuperação de dados da plataforma.
Só pode restaurar as fotos nos últimos 30 dias.
Os serviços de aplicações que estão a funcionar num App Service Environment não suportam instantâneos.
WARNING
Se escolher a Over write , todos os dados existentes no sistema de ficheiros atual da sua aplicação são apagados e
substituídos. Antes de clicar em OK, certifique-se de que é o que quer fazer.
NOTE
Devido às limitações técnicas atuais, só é possível restaurar as aplicações na mesma unidade de escala. Esta limitação
será removida numa futura versão.
Pode selecionar a App Existente para restaurar uma ranhura. Antes de utilizar esta opção, já deveria ter
criado uma ranhura na sua aplicação.
4. Pode optar por restaurar a configuração do seu site.
5. Clique em OK .
Clonagem de aplicativos de aplicativo sinuoso
usando powershell
29/04/2020 • 10 minutes to read • Edit Online
NOTE
Este artigo foi atualizado para utilizar o novo módulo AZ do Azure PowerShell. Pode continuar a utilizar o módulo AzureRM,
que continuará a receber correções de erros até, pelo menos, dezembro de 2020. Para obter mais informações sobre o novo
módulo Az e a compatibilidade do AzureRM, veja Apresentação do novo módulo Az do Azure PowerShell. Para obter
instruções de instalação do módulo Az, veja Instalar o Azure PowerShell.
Com o lançamento da versão 1.1.1.0 do Microsoft Azure PowerShell, foi adicionada uma nova opção que
New-AzWebApp permite clonar uma aplicação app Service existente para uma aplicação recém-criada numa região
diferente ou na mesma região. Esta opção permite que os clientes implementem uma série de aplicações em
diferentes regiões de forma rápida e fácil.
A clonagem de aplicativos é suportada para planos de serviço de aplicações Standard, Premium, Premium V2 e
Isolados. A nova funcionalidade utiliza as mesmas limitações que a funcionalidade de backup de serviço de
aplicação, consulte o Back up a uma aplicação no Azure App Service.
Para criar um novo Plano de New-AzAppServicePlan Serviço de Aplicações, pode usar o comando como no
exemplo seguinte
Utilizando New-AzWebApp o comando, pode criar a nova app na região centro-norte dos EUA e ligá-la a um Plano
de Serviço de Aplicações existente. Além disso, pode utilizar o mesmo grupo de recursos que a aplicação fonte, ou
definir um novo grupo de recursos, como mostra o seguinte comando:
Para clonar uma aplicação existente, incluindo todas as IncludeSourceWebAppSlots ranhuras de implementação
associadas, é necessário utilizar o parâmetro. Note que IncludeSourceWebAppSlots o parâmetro só é suportado
para clonagem de uma aplicação inteira, incluindo todas as suas ranhuras. O seguinte comando PowerShell
demonstra a utilização New-AzWebApp desse parâmetro com o comando:
Para clonar uma aplicação existente dentro da mesma região, é necessário criar um novo grupo de recursos e um
novo plano de serviço de aplicações na mesma região e, em seguida, usar o seguinte comando PowerShell para
clonar a app:
Conhecendo o nome da ASE e o nome de grupo de recursos a que a ASE pertence, pode criar a nova app na ASE
existente, como mostra o seguinte comando:
O Location parâmetro é necessário devido à razão do legado, mas é ignorado quando se cria a aplicação numa
ASE.
O seguinte comando demonstra a criação de um clone da app de origem para uma nova aplicação:
Depois de ter o ID de manjedoura de tráfego, o seguinte comando demonstra a criação de um clone da app de
origem para uma nova aplicação, adicionando-as a um perfil de Traffic Manager existente:
$destapp = New-AzWebApp -ResourceGroupName <Resource group name> -Name dest-webapp -Location "South Central
US" -AppServicePlan DestinationAppServicePlan -SourceWebApp $srcapp -TrafficManagerProfileId $TMProfileID
Restrições atuais
Aqui estão as restrições conhecidas da clonagem de apps:
As definições de escala automática não são clonadas
As definições de horário de backup não são clonadas
As definições vNET não são clonadas
App Insights não são automaticamente configurados na aplicação de destino
As configurações easy Auth não são clonadas
Extensão de Kudu não são clonados
As regras do TIP não são clonadas
O conteúdo da base de dados não é clonado
Endereços IP de saída mudam se clonagem para uma unidade de escala diferente
Não disponível para Aplicativos Linux
Referências
Clonagem de serviço sinuoso
Back up uma app no Azure App Service
Suporte do Gestor de Recursos Azure para pré-visualização do Gestor de Tráfego do Azure
Introdução ao Ambiente do Serviço de Aplicações
Utilizar o Azure PowerShell com o Azure Resource Manager
Restaurar a aplicação do Serviço de Aplicações
eliminada com o PowerShell
17/06/2020 • 3 minutes to read • Edit Online
Se por acaso eliminar acidentalmente a sua aplicação no Azure App Service, pode restaurá-la utilizando os
comandos do módulo Az PowerShell.
NOTE
As aplicações eliminadas são expurgadas do sistema 30 dias após a eliminação inicial. Uma vez que uma aplicação foi
purgada, não pode ser recuperada.
Uma vez identificada a aplicação que pretende restaurar, pode restaurá-la Restore-AzDeletedWebApp utilizando.
Restore-AzDeletedWebApp -ResourceGroupName <my_rg> -Name <my_app> -TargetAppServicePlanName <my_asp>
NOTE
As ranhuras de implementação não são restauradas como parte da sua aplicação. Se precisar de restaurar uma ranhura de
paragem, utilize a -Slot <slot-name> bandeira.
NOTE
Se a aplicação foi hospedada e depois eliminada de um Ambiente de Serviço de Aplicações, então só pode ser restaurada se o
ambiente de serviço de aplicações correspondente ainda existir.
Este artigo descreve como mover recursos do Serviço app para uma região azure diferente. Pode transferir os seus
recursos para outra região por uma série de razões. Por exemplo, aproveitar uma nova região do Azure,
implementar recursos ou serviços disponíveis apenas em regiões específicas, para satisfazer os requisitos de
política interna e governação, ou em resposta aos requisitos de planeamento de capacidades.
Os recursos do Serviço de Aplicações são específicos da região e não podem ser movidos por regiões. Você deve
criar uma cópia dos seus recursos de Serviço de Aplicações existentes na região alvo, mover o seu conteúdo para a
nova app. Se a sua aplicação de origem utilizar um domínio personalizado, pode migrar para a nova aplicação na
região alvo quando terminar.
Para facilitar a cópia da sua aplicação, pode clonar uma aplicação individual do App Service num plano de Serviço
de Aplicações noutra região, mas tem limitações– especialmente que não suporta aplicações Linux.
Pré-requisitos
Certifique-se de que a aplicação App Service está na região do Azure, da qual pretende mover-se.
Certifique-se de que a região alvo suporta o Serviço de Aplicações e qualquer serviço relacionado, cujos
recursos pretende mover.
Preparação
Identifique todos os recursos do Serviço de Aplicações que está a utilizar. Por exemplo:
Aplicações do Serviço de Aplicações
Planos do Serviço de Aplicações
Blocos de implementação
Domínios personalizados adquiridos em Azure
Certificados SSL
Integração da Rede Virtual Azure
Ligações híbridas.
Identidades geridas
Definições de backup
Certos recursos, tais como certificados importados ou ligações híbridas, contêm integração com outros serviços
Azure. Para obter informações sobre como movimentar esses recursos através das regiões, consulte a
documentação para os respetivos serviços.
Mover
1. Crie um back up da aplicação de origem.
2. Crie uma aplicação num novo plano de Serviço de Aplicações, na região alvo.
3. Restaurar a parte de trás na app alvo
4. Se utilizar um domínio personalizado, ligue-o preventivamente à aplicação alvo e awverify. ative o domínio na
aplicação alvo.
5. Configure tudo o resto na sua aplicação alvo para ser o mesmo que a aplicação de origem e verifique a sua
configuração.
6. Quando estiver pronto para que o domínio personalizado aponte para a aplicação alvo, remape o nome de
domínio.
Passos seguintes
Clonagem de aplicativos de aplicativo sinuoso usando powershell
Move resources to a new resource group or
subscription (Mover recursos para um grupo de
recursos ou uma subscrição nova)
29/04/2020 • 19 minutes to read • Edit Online
Este artigo mostra-lhe como mover os recursos do Azure para outra subscrição do Azure ou outro grupo de
recursos sob a mesma subscrição. Para mover recursos, pode utilizar o portal do Azure, o Azure PowerShell, a CLI
do Azure ou a API REST.
Tanto o grupo de origem como o grupo alvo estão bloqueados durante a operação de movimento. As operações de
escrita e exclusão são bloqueadas nos grupos de recursos até que o movimento esteja concluído. Este bloqueio
significa que não pode adicionar, atualizar ou eliminar recursos nos grupos de recursos. Não significa que os
recursos estão congelados. Por exemplo, se mover um Servidor SQL e a sua base de dados para um novo grupo de
recursos, uma aplicação que utiliza a base de dados não experimenta tempo de inatividade. Ainda pode ler e
escrever para a base de dados. O cadeado pode durar um máximo de quatro horas, mas a maioria dos
movimentos completam-se em muito menos tempo.
Mover um recurso apenas o move para um grupo de recursos ou uma subscrição novos. Não altera a localização
do recurso.
Se as iDs de inquilino para as assinaturas de origem e destino não forem as mesmas, utilize os seguintes
métodos para conciliar as iDs dos inquilinos:
Transferir a propriedade de uma subscrição do Azure para outra conta
Como associar ou adicionar uma subscrição do Azure ao Azure Active Directory
5. A subscrição de destino tem de estar registada no fornecedor de recursos do recurso a ser movido. Caso
contrário, recebe um erro indicando que a subscrição não está registada para um tipo de recurso .
Pode ver este erro ao mover um recurso para uma nova subscrição, mas essa subscrição nunca foi utilizada
com esse tipo de recursos.
Para a PowerShell, utilize os seguintes comandos para obter o estado de registo:
Para o Azure CLI, utilize os seguintes comandos para obter o estado de registo:
6. A conta que movimenta os recursos deve ter, pelo menos, as seguintes permissões:
Microsoft.Recursos/subscrições/recursosGroups/moveResources/action on the source resource
group.
Microsoft.Recursos/subscrições/recursosGroups/write no grupo de recursos de destino.
7. Antes de mover os recursos, verifique as quotas de subscrição para a subscrição para a qual está a mover os
recursos. Se mover os recursos significa que a subscrição excederá os seus limites, terá de rever se pode
solicitar um aumento da quota. Para uma lista de limites e como solicitar um aumento, consulte os limites
de subscrição e serviço do Azure, quotas e constrangimentos.
8. Para uma mudança através das assinaturas, o recurso e os seus recursos dependentes devem
estar localizados no mesmo grupo de recursos e devem ser movidos em conjunto. Por exemplo,
um VM com discos geridos exigiria que o VM e os discos geridos fossem movidos em conjunto, juntamente
com outros recursos dependentes.
Se está a mover um recurso para uma nova subscrição, verifique se o recurso tem algum recurso
dependente e se estão localizados no mesmo grupo de recursos. Se os recursos não estiverem no mesmo
grupo de recursos, verifique se os recursos podem ser consolidados no mesmo grupo de recursos. Em caso
afirmativo, traga todos estes recursos para o mesmo grupo de recursos, utilizando uma operação de
movimento através de grupos de recursos.
Para mais informações, consulte Cenário para se deslocar através de subscrições.
Validar movimento
A operação de movimento validado permite testar o seu cenário de movimento sem realmente mover os recursos.
Utilize esta operação para verificar se o movimento terá sucesso. A validação é automaticamente chamada quando
envia um pedido de mudança. Utilize esta operação apenas quando necessitar de determinar os resultados. Para
executar esta operação, precisa do:
nome do grupo de recursos de origem
identificação de recursos do grupo de recursos-alvo
identificação de recursos de cada recurso para mover
o sinal de acesso para a sua conta
Envie o seguinte pedido:
POST https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<source-
group>/validateMoveResources?api-version=2019-05-10
Authorization: Bearer <access-token>
Content-type: application/json
Com um corpo de pedido:
{
"resources": ["<resource-id-1>", "<resource-id-2>"],
"targetResourceGroup": "/subscriptions/<subscription-id>/resourceGroups/<target-group>"
}
O código de estado de 202 indica que o pedido de validação foi aceite, mas ainda não determinou se a operação de
mudança será bem sucedida. O location valor contém um URL que utiliza para verificar o estado da operação de
longa duração.
Para verificar o estado, envie o seguinte pedido:
GET <location-url>
Authorization: Bearer <access-token>
Enquanto a operação ainda estiver em curso, continua a receber o código de estado de 202. Aguarde o número
retry-after de segundos indicado si no valor antes de tentar novamente. Se a operação de movimento validar
com sucesso, receberá o código de estado 204. Se a validação do movimento falhar, recebe uma mensagem de
erro, como:
{"error":{"code":"ResourceMoveProviderValidationFailed","message":"<message>"...}}
Utilizar o portal
Para movimentar recursos, selecione o grupo de recursos com esses recursos e, em seguida, selecione o botão
Mover.
Selecione se está a mover os recursos para um novo grupo de recursos ou para uma nova subscrição.
Selecione os recursos para mover e o grupo de recursos de destino. Reconheça que precisa atualizar scripts para
estes recursos e selecione OK . Se selecionou o ícone de subscrição de edição no passo anterior, também deve
selecionar a subscrição de destino.
Em Notificações, vê que a operação de movimento está a decorrer.
Se tiver um erro, consulte a Troubleshoot movendo os recursos do Azure para um novo grupo de recursos ou
subscrição.
Utilizar o Azure PowerShell
Para mover os recursos existentes para outro grupo de recursos ou subscrição, utilize o comando Move-
AzResource. O exemplo que se segue mostra como transferir vários recursos para um novo grupo de recursos.
Para passar para uma nova subscrição, inclua um valor para o DestinationSubscriptionId parâmetro.
Se tiver um erro, consulte a Troubleshoot movendo os recursos do Azure para um novo grupo de recursos ou
subscrição.
POST https://management.azure.com/subscriptions/{source-subscription-id}/resourcegroups/{source-resource-
group-name}/moveResources?api-version={api-version}
{
"resources": ["<resource-id-1>", "<resource-id-2>"],
"targetResourceGroup": "/subscriptions/<subscription-id>/resourceGroups/<target-group>"
}
Se tiver um erro, consulte a Troubleshoot movendo os recursos do Azure para um novo grupo de recursos ou
subscrição.
Passos seguintes
Para obter uma lista dos recursos de apoio, consulte o apoio da operação Move para recursos.
Executar tarefas de fundo com WebJobs no Serviço
de Aplicações Azure
30/04/2020 • 10 minutes to read • Edit Online
Este artigo mostra como implementar webJobs usando o portal Azure para carregar um executável ou script.
Para obter informações sobre como desenvolver e implementar WebJobs utilizando o Visual Studio, consulte o
Deploy WebJobs utilizando o Visual Studio.
Descrição geral
WebJobs é uma funcionalidade do Azure App Service que lhe permite executar um programa ou script no
mesmo caso que uma aplicação web, app API ou aplicação móvel. Não há custos adicionais para usar webJobs.
IMPORTANT
WebJobs ainda não é suportado para o Serviço de Aplicações no Linux.
O Azure WebJobs SDK pode ser usado com WebJobs para simplificar muitas tarefas de programação. Para mais
informações, consulte O Que é o WebJobs SDK.
A Azure Functions fornece outra forma de executar programas e scripts. Para uma comparação entre WebJobs e
Funções, consulte Escolha entre Fluxo, Aplicações Lógicas, Funções e WebJobs.
Tipos webJob
A tabela seguinte descreve as diferenças entre WebJobs contínuos e desencadeados.
C O N T ÍN UO DESEN C A DEA DO
Começa imediatamente quando o WebJob é criado. Para Só começa quando acionado manualmente ou num horário.
evitar que o trabalho termine, o programa ou o guião
normalmente faz o seu trabalho dentro de um ciclo
interminável. Se o trabalho acabar, pode reiniciá-lo.
Funciona em todas as instâncias em que a aplicação web Funciona numa única instância que o Azure seleciona para
funciona. Pode restringir opcionalmente o WebJob a uma equilibrar a carga.
única instância.
NOTE
Uma aplicação web pode sair após 20 minutos de inatividade. Apenas solicita à aplicação web real redefinir o temporizador.
Visualizar a configuração da aplicação no portal Azure ou https://<app_name>.scm.azurewebsites.net fazer pedidos para
o site de ferramentas avançadas ( ) não redefinir o temporizador. Se a sua aplicação funcionar continuamente ou
programada (gatilho do temporizador), ative sempre on para garantir que os WebJobs funcionam de forma fiável. Esta
funcionalidade está disponível apenas nos níveis de preçosBásico, Standard e Premium.
Tipos de ficheiros suportados para scripts ou programas
São suportados os seguintes tipos de ficheiro:
.cmd, .bat, .exe (usando Windows cmd)
.ps1 (usando powerShell)
.sh (usando Bash)
.php (utilizando PHP)
.py (usando Python)
.js (usando node.js)
.jar (usando Java)
5. Clique em OK .
O novo WebJob aparece na página WebJobs.
6. Para parar ou reiniciar um WebJob contínuo, clique no WebJob na lista e clique em Parar ou Iniciar .
Acionadores Manual
5. Clique em OK .
O novo WebJob aparece na página WebJobs.
6. Para executar o WebJob, clique no seu nome na lista e clique em Executar .
5. Clique em OK .
O novo WebJob aparece na página WebJobs.
Expressões NCRONTAB
Pode introduzir uma expressão NCRONTAB no settings.job portal ou incluir um ficheiro na raiz do seu ficheiro
WebJob .zip, como no seguinte exemplo:
{
"schedule": "0 */15 * * * *"
}
NOTE
O fuso horário predefinido utilizado para executar expressões CRON é tempo universal coordenado (UTC). Para que a
expressão cronocística funcione com base noutro fuso horário, crie uma definição de aplicação para a sua aplicação de
função chamada WEBSITE_TIME_ZONE. Para saber mais, consulte fusos horários NCRONTAB.
3. Na página WebJob Executar Detalhes, selecione Toggle Output para ver o texto do conteúdo do
registo.
Para ver o texto de saída numa janela separada do navegador, selecione download . Para descarregar o
texto em si, clique no descarregamento e use as opções do seu navegador para guardar o conteúdo do
ficheiro.
4. Selecione o link webJobs breadcrumb na parte superior da página para ir a uma lista de WebJobs.
Próximos passos
O Azure WebJobs SDK pode ser usado com WebJobs para simplificar muitas tarefas de programação. Para mais
informações, consulte O Que é o WebJobs SDK.
Develop and deploy WebJobs using Visual Studio -
Azure App Service (Programar e implementar
WebJobs com o Visual Studio – Serviço de
Aplicações do Azure)
28/04/2020 • 21 minutes to read • Edit Online
Este artigo explica como usar o Visual Studio para implementar um projeto de Aplicação de Consolas para uma
aplicação web no App Service como um WebJob Azure. Para obter informações sobre como implementar
webJobs utilizando o portal Azure,consulte as tarefas de Fundo de Execução com WebJobs.
Pode publicar vários WebJobs numa única aplicação web. Certifique-se de que cada WebJob numa aplicação web
tem um nome único.
A versão 3.x do Azure WebJobs SDK permite-lhe desenvolver WebJobs que funcionam como aplicações .NET Core
ou .NET Framework, enquanto a versão 2.x suporta apenas o .NET Framework. A forma como implementa um
projeto WebJobs é diferente para projetos .NET Core versus .NET Framework.
NOTE
.NET Core WebJobs não pode ser ligado a projetos web. Se precisar de implementar o seu WebJob com uma aplicação web,
deve criar o seu WebJob como uma aplicação de consola .NET Framework.
4. Clique em Criar um WebJob e recursos relacionados em Azure com estas definições e implementar o seu
código de projeto.
Tipos webJob
Por padrão, um WebJob publicado a partir de um projeto de consola .NET Core só funciona quando
desencadeado ou a pedido. Também pode atualizar o projeto para executar em horário ou executar
continuamente.
NOTE
Uma aplicação web pode sair após 20 minutos de inatividade. Apenas solicita à aplicação web real redefinir o temporizador.
Visualizar a configuração da aplicação no portal Azure ou https://<app_name>.scm.azurewebsites.net fazer pedidos para
o site de ferramentas avançadas ( ) não redefinir o temporizador. Se a sua aplicação funcionar continuamente ou
programada (gatilho do temporizador), ative sempre on para garantir que os WebJobs funcionam de forma fiável. Esta
funcionalidade está disponível apenas nos níveis de preçosBásico, Standard e Premium.
Execução programada
Quando publica uma aplicação de consola .NET Core para o Azure, é adicionado ao projeto um novo ficheiro de
definições.job. Utilize este ficheiro para definir um calendário de execução para o seu WebJob. Para mais
informações, consulte Agendar um WebJob acionado.
Execução contínua
Pode utilizar o Visual Studio para alterar o WebJob para funcionar continuamente quando o Always On está
ativado em Azure.
1. Se ainda não o fez, publique o projeto para o Azure.
2. No Explorador de Soluções , clique com o botão direito do rato no projeto e selecione Publicar .
3. No separador Publicar, escolha Definições .
4. No diálogo definições de perfil, escolha "Contínuo para o Tipo WebJob ", e escolha Guardar .
Pode adicionar estes itens a um projeto de aplicação de consola existente ou utilizar um modelo para criar um
novo projeto de aplicação de consola santiva ativado pelo WebJobs.
Pode implementar um projeto como WebJob por si só, ou ligá-lo a um projeto web para que ele implemente
automaticamente sempre que implementa o projeto web. Para ligar projetos, o Visual Studio inclui o nome do
projeto ativado pela WebJobs num ficheiro webjobs-list.json no projeto web.
Pré -requisitos
Se estiver a utilizar o Visual Studio 2015, instale o Azure SDK para .NET (Visual Studio 2015).
Se estiver a utilizar o Visual Studio 2017, instale a carga de trabalho de desenvolvimento do Azure.
Ativar a implementação webJobs para um projeto de aplicação de consola existente
Tem duas opções:
Ativar a implementação automática com um projeto web.
Configure um projeto de aplicação de consola existente para que ele implemente automaticamente como
um WebJob quando implementa um projeto web. Utilize esta opção quando pretender executar o seu
WebJob na mesma aplicação web na qual executa a aplicação web relacionada.
Ativar a implementação sem um projeto web.
Configure um projeto de aplicação de consola existente para implementar como um WebJob por si só, sem
qualquer ligação a um projeto web. Utilize esta opção quando pretender executar um WebJob numa
aplicação web por si só, sem que nenhuma aplicação web esteja a funcionar na aplicação web. Talvez queira
fazê-lo para poder escalar os seus recursos WebJob independentemente dos seus recursos de aplicação
web.
Ativar a implementação automática de WebJobs com um projeto web
1. Clique no projeto web no Solution Explorer e, em seguida, clique em Adicionar > Projeto Existente
como Azure WebJob .
Aparece a caixa de diálogo Add Azure WebJob, com o projeto selecionado na caixa de nome sinuosa do
Projeto.
2. Complete a caixa de diálogo Add Azure WebJob e, em seguida, clique em OK .
O assistente da Web publicar aparece. Se não quiser publicar imediatamente, feche o assistente. As
definições que introduziu são guardadas para quando pretende implementar o projeto.
Criar um novo projeto ativado pela WebJobs
Para criar um novo projeto ativado pelo WebJobs, pode utilizar o modelo do projeto de aplicação de consolae e
permitir a implementação do WebJobs, tal como explicado na secção anterior. Como alternativa, pode utilizar o
modelo de novo projeto WebJobs:
Use o modelo de novo projeto WebJobs para um WebJob independente
Crie um projeto e configure-o para implementar por si mesmo como um WebJob, sem qualquer ligação a
um projeto web. Utilize esta opção quando pretender executar um WebJob numa aplicação web por si só,
sem que nenhuma aplicação web esteja a funcionar na aplicação web. Talvez queira fazê-lo para poder
escalar os seus recursos WebJob independentemente dos seus recursos de aplicação web.
Use o modelo de novo projeto WebJobs para um WebJob ligado a um projeto web
Crie um projeto que esteja configurado para implementar automaticamente como Um WebJob quando um
projeto web na mesma solução é implementado. Utilize esta opção quando pretender executar o seu
WebJob na mesma aplicação web na qual executa a aplicação web relacionada.
NOTE
O modelo de novo projeto WebJobs instala automaticamente pacotes NuGet e inclui código em Program.cs para o
WebJobs SDK. Se não quiser utilizar o WebJobs SDK, remova host.RunAndBlock ou altere a declaração em Program.cs.
2. Siga as instruções anteriormente mostradas para tornar o projeto de Aplicação de Consola um projeto
WebJobs independente.
Use o modelo de novo projeto WebJobs para um WebJob ligado a um projeto web
1. Clique no projeto web no Solution Explorer e, em seguida, clique em Adicionar > Novo Projeto
WebJob Azure .
Aparece a caixa de diálogo Add Azure WebJob.
2. Complete a caixa de diálogo Add Azure WebJob e, em seguida, clique em OK .
O diálogo WebJob Add Azure
O diálogo Add Azure WebJob permite introduzir o nome WebJob e executar a definição de modo para o seu
WebJob.
Os campos deste diálogo correspondem aos campos do diálogo Add WebJob do portal Azure. Para mais
informações, consulte executar tarefas de Fundo com WebJobs.
NOTE
Para obter informações sobre a implantação da linha de comando, consulte a linha de comando ativação ou a entrega
contínua de WebJobs Azure.
Se implementar um WebJob e decidir que pretende alterar o tipo de WebJob e reimplementar, terá de eliminar o ficheiro
webjobs-publish-settings.json. Isto fará com que o Visual Studio mostre as opções de publicação novamente, para que
possa alterar o tipo de WebJob.
Se implementar um WebJob e, mais tarde, alterar o modo de execução de contínuo para não-contínuo ou vice-versa, o
Visual Studio cria um novo WebJob em Azure quando reimplanta. Se alterar outras definições de agendamento, mas
deixar o modo de execução o mesmo ou alternar entre o Scheduled e o On Demand, o Visual Studio atualiza o trabalho
existente em vez de criar um novo.
webjob-publish-settings.json
Quando configura uma aplicação de consola para implementação webJobs, o Visual Studio instala o pacote
Microsoft.Web.WebJobs.Publish NuGet e armazena informações de agendamento num ficheiro webjob-publish-
settings.json na pasta do projeto Propriedades do projeto WebJobs. Aqui está um exemplo desse ficheiro:
{
"$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
"webJobName": "WebJob1",
"startTime": "null",
"endTime": "null",
"jobRecurrenceFrequency": "null",
"interval": null,
"runMode": "Continuous"
}
Pode editar este ficheiro diretamente, e o Visual Studio fornece o IntelliSense. O esquema do ficheiro é
https://schemastore.org armazenado e pode ser visto lá.
webjobs-list.json
Quando liga um projeto ativado pela WebJobs a um projeto web, o Visual Studio armazena o nome do projeto
WebJobs num ficheiro webjobs-list.json na pasta Propriedades do projeto web. A lista pode conter vários projetos
WebJobs, como mostra o seguinte exemplo:
{
"$schema": "http://schemastore.org/schemas/json/webjobs-list.json",
"WebJobs": [
{
"filePath": "../ConsoleApplication1/ConsoleApplication1.csproj"
},
{
"filePath": "../WebJob1/WebJob1.csproj"
}
]
}
Pode editar este ficheiro diretamente, e o Visual Studio fornece o IntelliSense. O esquema do ficheiro é
https://schemastore.org armazenado e pode ser visto lá.
Implementar um projeto WebJobs
Um projeto WebJobs que ligou a um projeto web implementa automaticamente com o projeto web. Para obter
informações sobre a implementação do projeto web, consulte como orientar > a aplicação Deploy na
navegação à esquerda.
Para implementar um projeto WebJobs por si só, clique no projeto no Solution Explorer e clique em Publicar
como Azure WebJob....
Para um WebJob independente, aparece o mesmo assistente Web publish que é usado para projetos web, mas
com menos configurações disponíveis para alterar.
{
"schedule": "0 0 9-17 * * *"
}
NOTE
Uma aplicação web pode sair após 20 minutos de inatividade. Apenas solicita à aplicação web real redefinir o temporizador.
Visualizar a configuração da aplicação no portal Azure ou https://<app_name>.scm.azurewebsites.net fazer pedidos para
o site de ferramentas avançadas ( ) não redefinir o temporizador. Se a sua aplicação funcionar continuamente ou
programada (gatilho do temporizador), ative sempre on para garantir que os WebJobs funcionam de forma fiável. Esta
funcionalidade está disponível apenas nos níveis de preçosBásico, Standard e Premium.
Expressões cron
WebJobs usa as mesmas expressões cron para agendamento que o gatilho do temporizador nas Funções Azure.
Para saber mais sobre o suporte do CRON, consulte o artigo de referência do gatilho do temporizador.
NOTE
O fuso horário predefinido utilizado para executar expressões CRON é tempo universal coordenado (UTC). Para que a
expressão cronocística funcione com base noutro fuso horário, crie uma definição de aplicação para a sua aplicação de
função chamada WEBSITE_TIME_ZONE. Para saber mais, consulte fusos horários NCRONTAB.
definições.referência de trabalho
As seguintes definições são suportadas pelo WebJobs:
Passos seguintes
Saiba mais sobre o WebJobs SDK
Get started with the Azure WebJobs SDK for event-
driven background processing (Introdução ao SDK
de WebJobs do Azure para processamento em
segundo plano condicionado por eventos)
22/05/2020 • 29 minutes to read • Edit Online
Este artigo mostra como usar o Visual Studio 2019 para criar um projeto Azure WebJobs SDK, executá-lo
localmente e, em seguida, implementá-lo para o Azure App Service. A versão 3.x do WebJobs SDK suporta
aplicações de consola .NET Core e .NET Framework. Para saber mais sobre o trabalho com o WebJobs SDK,
consulte como utilizar o Azure WebJobs SDK para processamento de fundo orientadopara eventos .
Este artigo mostra-lhe como implementar webJobs como uma aplicação de consola .NET Core. Para implementar
webJobs como uma aplicação de consola .NET Framework, consulte webJobs como aplicações de consola .NET
Framework. Se estiver interessado na versão 2.x do WebJobs SDK, que apenas suporta o .NET Framework,
consulte Desenvolver e implementar WebJobs utilizando o Visual Studio - Azure App Service.
Pré-requisitos
Instale o Visual Studio 2019 com a carga de trabalho de desenvolvimento do Azure. Se já tem o Visual
Studio mas não tem essa carga de trabalho, adicione a carga de trabalho selecionando Ferramentas >
Obter Ferramentas e Funcionalidades .
Deve ter uma conta Azure para publicar o seu projeto WebJobs SDK para o Azure.
Criar um projeto
1. No Estúdio Visual, selecione Criar um Novo Projeto.
2. Selecione App consola (.NET Core) .
3. Nomeie o projeto WebJobsSDKSamplee, em seguida, selecione Criar .
Pacotes WebJobs NuGet
1. Instale a mais recente versão estável 3.x do Microsoft.Azure.WebJobs.Extensions pacote NuGet,que inclui
Microsoft.Azure.WebJobs .
Criar o Anfitrião
O hospedeiro é o recipiente de tempo de funcionamento para funções que ouvem os gatilhos e as funções de
chamadas. Os seguintes passos criam um hospedeiro que implementa IHost , que é o Anfitrião Genérico em
ASP.NET Core.
1. Em Program.cs, adicione estas using declarações:
using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
Em ASP.NET Core, as configurações do hospedeiro são definidas através de métodos de chamada na HostBuilder
instância. Para mais informações, consulte .NET Generic Host. O método de ConfigureWebJobs extensão inicializa o
anfitrião WebJobs. Em ConfigureWebJobs , inicializa extensões específicas do WebJobs e define propriedades
dessas extensões.
Neste comando, <3_X_VERSION> substitua-o por uma versão 3.x suportada da embalagem.
2. Em Program.cs, adicione um using comunicado:
using Microsoft.Extensions.Logging;
3. Ligue para o ConfigureLogging HostBuilder método. O AddConsole método adiciona o registo da consola
à configuração.
builder.ConfigureLogging((context, b) =>
{
b.AddConsole();
});
builder.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
b.AddAzureStorage();
});
namespace WebJobsSDKSample
{
public class Functions
{
public static void ProcessQueueMessage([QueueTrigger("queue")] string message, ILogger logger)
{
logger.LogInformation(message);
}
}
}
O atributo diz o tempo de QueueTrigger funcionamento para chamar esta função quando uma nova
mensagem é escrita numa fila de Armazenamento Azure chamada queue . O conteúdo da mensagem de
fila é fornecido ao código do método no message parâmetro. O corpo do método é onde processa os
dados do gatilho. Neste exemplo, o código apenas regista a mensagem.
O message parâmetro não tem de ser uma corda. Também pode ligar-se a um objeto JSON, uma matriz de
byte ou um objeto CloudQueueMessage. Consulte a utilização do gatilhoda fila . Cada tipo de
encadernação (como filas, bolhas ou mesas) tem um conjunto diferente de tipos de parâmetros a que se
pode ligar.
2. Sob o nó Azure no Ser ver Explorer, clique no armazenamento do clique direito, e depois selecione
create storage .
3. Na caixa de diálogo 'Conta de Armazenamento Criar', introduza um nome único para a conta de
armazenamento.
4. Escolha a mesma Região em que criou a sua app App Service, ou uma região próxima de si.
5. Selecione Criar .
6. Sob o nó de Armazenamento no Ser ver Explorer, selecione a nova conta de Armazenamento. Na janela
Propriedades, selecione a elipse (...) à direita do campo de valor de fio de ligação.
7. Copie a cadeia de ligação e guarde este valor em algum lugar onde possa copiá-la de novo prontamente.
{
"AzureWebJobsStorage": "{storage connection string}"
}
3. Substitua a cadeia de ligação de {armazenamento} com a cadeia de ligação que copiou anteriormente.
4. Selecione o ficheiro appsettings.json no Solution Explorer e na janela Proper ties, coloque copy to
Output Director y to Copy se for mais recente .
Mais tarde, irá adicionar a mesma definição de aplicação de cadeiade ligação na sua aplicação no Serviço de
Aplicações Azure.
Teste local
Nesta secção, você constrói e executa o projeto localmente e despoleta a função criando uma mensagem de fila.
1. Prima Ctrl+F5 para executar o projeto.
A consola mostra que o tempo de execução encontrou a sua função e está à espera que as mensagens de
fila a desencadeiem. A seguinte saída é gerada pelo anfitrião v3.x:
info: Microsoft.Azure.WebJobs.Hosting.JobHostService[0]
Starting JobHost
info: Host.Startup[0]
Found the following functions:
WebJobsSDKSample.Functions.ProcessQueueMessage
info: Host.Startup[0]
Job host started
Application started. Press Ctrl+C to shut down.
Hosting environment: Development
Content root path: C:\WebJobsSDKSample\WebJobsSDKSample\bin\Debug\netcoreapp2.1\
8. No diálogo Add Message, introduza Hello World! como texto de mensagem , e depois selecione OK . Há
agora uma mensagem na fila.
2. Se ainda não tiver um recurso Application Insights que possa utilizar, crie um. Definir o tipo de aplicação
para general, e saltar as secções que seguem Copiar a chave de instrumentação .
3. Se já tiver um recurso Application Insights que deseja utilizar, copie a chave de instrumentação.
Configurar as definições da aplicação
1. No Ser ver Explorer em Visual Studio, expanda o nó do Serviço de Aplicações sob o Azure .
2. Expanda o grupo de recursos em que a sua aplicação app Service está e, em seguida, clique na sua
aplicação App Service.
3. Selecione Definições de visualização .
4. Na caixa de cordas de ligação, adicione a seguinte entrada.
5. Se a caixa de Definições de Aplicação não tiver uma chave de instrumentação De Insights de Aplicação,
adicione a que copiou anteriormente. (A chave de instrumentação pode já estar lá, dependendo da forma
como criou a app App Service.)
NAME VA LO R
6. Substitua a tecla {instrumentação} com a chave de instrumentação do recurso Application Insights que está
a utilizar.
7. Selecione Guardar .
8. Adicione a ligação De Insights de Aplicação ao projeto para que possa executá-lo localmente. No ficheiro
appsettings.json, adicione um APPINSIGHTS_INSTRUMENTATIONKEY campo, como no seguinte exemplo:
{
"AzureWebJobsStorage": "{storage connection string}",
"APPINSIGHTS_INSTRUMENTATIONKEY": "{instrumentation key}"
}
Substitua a tecla {instrumentação} com a chave de instrumentação do recurso Application Insights que está
a utilizar.
9. Guarde as alterações.
Adicionar fornecedor de registo de Insights de Aplicação
Para tirar partido da registo de Informação sobre a Aplicação Insights, atualize o seu código de registo para fazer
o seguinte:
Adicione um fornecedor de registo de Insights de Aplicação com filtragempor defeito . Ao executar localmente,
todas as Informações e registos de alto nível são escritos tanto para a consola como para os Insights de
Aplicação.
Coloque o objeto LoggerFactory num bloco para garantir que a saída de using registo é lavada quando o
hospedeiro sair.
1. Instale a mais recente versão estável 3.x do Microsoft.Azure.WebJobs.Logging.ApplicationInsights pacote
NuGet.
Aqui está o comando de consola do gestor de pacotes:
Isto adiciona o fornecedor de Insights de Aplicação à exploração madeireira, utilizando a chave que
adicionou anteriormente às definições da sua aplicação.
Implementar no Azure
Durante a implementação, cria uma instância de serviço de aplicações para executar as suas funções. Quando
publica uma aplicação de consola .NET Core para o App Service em Azure, é executada automaticamente como
Um WebJob. Para saber mais sobre a publicação, consulte Desenvolver e implementar WebJobs usando o Visual
Studio.
1. No Explorador de Soluções , clique com o botão direito do rato no projeto e selecione Publicar .
2. No diálogo Publicar, selecione Microsoft Azure App Ser vice, escolha Criar Novo , e, em seguida,
selecione Publicar .
3. No diálogo Create App Ser vice, utilize as definições de hospedagem conforme especificado na tabela
abaixo da imagem:
DEF IN IÇ Ã O VA LO R SUGERIDO DESC RIÇ Ã O
4. Clique em Criar um WebJob e recursos relacionados em Azure com estas definições e implementar o seu
código de projeto.
TIP
Quando estiver a testar em Azure, utilize o modo de desenvolvimento para garantir que uma função de gatilho de
fila seja invocada imediatamente e evite atrasos devido ao recuo exponencial das sondagensem fila .
Neste código, queueTrigger encontra-se uma expressão vinculativa,o que significa que se resolve a um
valor diferente no prazo de funcionamento. No tempo de funcionação, tem o conteúdo da mensagem de
fila.
2. Adicione using um:
using System.IO;
Passos seguintes
Este artigo mostrou-lhe como criar, executar e implementar um projeto WebJobs SDK 3.x.
Saiba mais sobre o WebJobs SDK
How to use the Azure WebJobs SDK for event-
driven background processing (Como utilizar o SDK
de WebJobs do Azure para processamento em
segundo plano condicionado por eventos)
17/06/2020 • 46 minutes to read • Edit Online
Este artigo fornece orientações sobre como trabalhar com o Azure WebJobs SDK. Para começar com webJobs
imediatamente, consulte Começar com o Azure WebJobs SDK para processamento de fundo orientado por
eventos.
NOTE
As Funções Azure são construídas no WebJobs SDK, e este artigo fornece links para documentação de Funções Azure para
alguns tópicos. Note estas diferenças entre funções e o WebJobs SDK:
Azure Funções versão 2. x corresponde à versão 3 da WebJobs SDK. x, e Funções Azure 1. x corresponde ao WebJobs
SDK 2. x. Os repositórios de código fonte utilizam a numeragem SDK do WebJobs.
O código de amostra para bibliotecas de classe Azure Functions C# é como o código WebJobs SDK, exceto que não
precisa de um FunctionName atributo num projeto WebJobs SDK.
Alguns tipos de ligação são suportados apenas em Funções, como HTTP (Webhooks) e Event Grid (que é baseado em
HTTP).
Para obter mais informações, consulte as funções WebJobs SDK e Azure.
WebJobs anfitrião
O hospedeiro é um recipiente de tempo de funcionamento para funções. Ouve funções de gatilhos e chamadas.
Na versão 3. x, o hospedeiro é uma implementação de IHost . Na versão 2. x, usa-se o JobHost objeto. Cria uma
instância de anfitrião no seu código e escreve código para personalizar o seu comportamento.
Esta é uma diferença fundamental entre usar o WebJobs SDK diretamente e usá-lo indiretamente através de
Funções Azure. Em Funções Azure, o serviço controla o anfitrião e não é possível personalizar o anfitrião
escrevendo código. As Funções Azure permitem personalizar o comportamento do anfitrião através de definições
no ficheiro host.json. Essas definições são cordas, não código, e isto limita os tipos de personalizações que você
pode fazer.
Cadeias de conexão do anfitrião
O WebJobs SDK procura as cordas de conexão Azure Storage e Azure Service Bus no ficheiro local.settings.json
quando funciona localmente, ou no ambiente do WebJob quando corre em Azure. Por predefinição, é necessária
uma definição de cadeia de ligação de armazenamento AzureWebJobsStorage nomeada.
Versão 2. x do SDK permite-lhe usar os seus próprios nomes para estas cordas de ligação ou armazená-las em
outro lugar. Pode definir nomes em código usando o JobHostConfiguration , como mostrado aqui:
Porque a versão 3. x utiliza as APIs de configuração de núcleo padrão.NET, não existe API para alterar nomes de
cadeias de ligação.
Configurações de desenvolvimento do anfitrião
Você pode executar o anfitrião em modo de desenvolvimento para tornar o desenvolvimento local mais eficiente.
Aqui estão algumas das definições que são alteradas quando funciona no modo de desenvolvimento:
Versão 2. x
A JobHostConfiguration classe tem um método que permite o modo de UseDevelopmentSettings
desenvolvimento. O exemplo a seguir mostra como utilizar as definições de desenvolvimento. Para fazer
config.IsDevelopment retorno quando for executado true localmente, deslote uma variável ambiental local com
AzureWebJobsEnv o valor Development .
if (config.IsDevelopment)
{
config.UseDevelopmentSettings();
}
Acionadores
As funções devem ser métodos públicos e devem ter um atributo de gatilho ou o NoAutomaticTrigger atributo.
Gatilhos automáticos
Os gatilhos automáticos chamam uma função em resposta a um evento. Considere este exemplo de uma função
que é desencadeada por uma mensagem adicionada ao armazenamento da Fila Azure. Responde lendo uma
bolha do armazenamento de Azure Blob:
O QueueTrigger atributo diz ao tempo de execução para ligar para a função sempre que uma mensagem de fila
aparece na myqueue-items fila. O Blob atributo diz ao tempo de execução para utilizar a mensagem de fila para
ler uma bolha no recipiente de trabalho de amostra. O nome do item blob no samples-workitems recipiente é
obtido diretamente a partir do gatilho da fila como expressão de encadernação {queueTrigger} ().
NOTE
Uma aplicação web pode sair após 20 minutos de inatividade. Apenas solicita à aplicação web real redefinir o temporizador.
Visualizar a configuração da aplicação no portal Azure ou https://<app_name>.scm.azurewebsites.net fazer pedidos para
o site de ferramentas avançadas ( ) não redefinir o temporizador. Se a sua aplicação funcionar continuamente ou
programada (gatilho do temporizador), ative sempre on para garantir que os WebJobs funcionam de forma fiável. Esta
funcionalidade está disponível apenas nos níveis de preçosBásico, Standard e Premium.
Gatilhos manuais
Para ativar uma função manualmente, utilize o NoAutomaticTrigger atributo, como mostrado aqui:
[NoAutomaticTrigger]
public static void CreateQueueMessage(
ILogger logger,
string value,
[Queue("outputqueue")] out string message)
{
message = value;
logger.LogInformation("Creating queue message: ", message);
}
await host.StartAsync();
await jobHost.CallAsync("CreateQueueMessage", inputs);
await host.StopAsync();
}
}
Versão 2. x
Tipos de ligação
O processo de instalação e gestão de tipos de ligação depende se está a utilizar a versão 3. x ou versão 2. x do
SDK. Pode encontrar a embalagem para instalar para um tipo de encadernação específico na secção "Pacotes" do
artigo de referênciado tipo de ligação Azure Functions . Uma exceção é o gatilho de Ficheiros e a ligação (para o
sistema de ficheiros local), que não é suportado por Funções Azure.
Versão 3. x
Na versão 3. x, as ligações de armazenamento estão incluídas na Microsoft.Azure.WebJobs.Extensions.Storage
embalagem. Ligue para o AddAzureStorage método de extensão ConfigureWebJobs no método, como mostrado
aqui:
Para utilizar outros tipos de gatilho e de ligação, instale o pacote NuGet que os contém e chame o Add<binding>
método de extensão implementado na extensão. Por exemplo, se quiser utilizar uma ligação DB Azure Cosmos,
instale Microsoft.Azure.WebJobs.Extensions.CosmosDB e AddCosmosDB ligue, como este:
Para utilizar o gatilho do Temporizador ou a ligação ficheiros, que fazem parte dos serviços essenciais, ligue para
os AddTimers métodos ou AddFiles extensões, respectivamente.
Versão 2. x
Estes tipos de gatilho e de ligação estão incluídos na versão 2. x do Microsoft.Azure.WebJobs pacote:
Armazenamento de blobs
Armazenamento de filas
Table Storage
Para utilizar outros tipos de gatilho e de ligação, instale o pacote NuGet que os contém e chame um Use<binding>
método no JobHostConfiguration objeto. Por exemplo, se pretender utilizar um gatilho do Temporizador, instale
Microsoft.Azure.WebJobs.Extensions e ligue UseTimers o Main método, como mostrado aqui:
static void Main()
{
config = new JobHostConfiguration();
config.UseTimers();
var host = new JobHost(config);
host.RunAndBlock();
}
Versão 2. x
O Microsoft.Azure.WebJobs.Extensions pacote mencionado anteriormente também fornece um tipo especial de
encadernação que você pode registar chamando o UseCore método. Esta ligação permite definir um
ExecutionContext parâmetro na sua assinatura de função, que está ativado desta forma:
class Program
{
static void Main()
{
config = new JobHostConfiguration();
config.UseCore();
var host = new JobHost(config);
host.RunAndBlock();
}
}
Configuração de encadernação
Pode configurar o comportamento de alguns gatilhos e encadernações. O processo de configuração depende da
versão SDK.
Versão 3. x : Definir a configuração quando o Add<Binding> método for chamado ConfigureWebJobs .
Versão 2. x : Definir a configuração definindo as propriedades num objeto de configuração para o que passa
JobHost .
Estas definições específicas de encadernação são equivalentes às definições no ficheiro do projeto host.json em
Funções Azure.
Pode configurar as seguintes ligações:
Gatilho Azure CosmosDB
Gatilho de Centros de Eventos
Acionador do armazenamento de filas
Ligação SendGrid
Gatilho do ônibus de serviço
Configuração do gatilho Azure CosmosDB (versão 3).* x*)
Este exemplo mostra como configurar o gatilho Azure Cosmos DB:
});
});
var host = builder.Build();
using (host)
{
await host.RunAsync();
}
}
Versão 2. x
Expressões de enlace
Nos parâmetros de construção de atributos, pode utilizar expressões que se resolvem a valores de várias fontes.
Por exemplo, no seguinte código, o caminho para o BlobTrigger atributo cria uma expressão chamada filename
. Quando utilizado para a ligação de saída, filename resolve-se o nome da bolha de desencadeamento.
Para obter mais informações sobre expressões de encadernação, consulte expressões e padrões de ligação na
documentação Azure Functions.
Expressões de encadernação personalizadas
Por vezes, pretende especificar um nome de fila, um nome de bolha ou recipiente, ou um nome de mesa em
código em vez de codificar duramente. Por exemplo, é possível especificar o nome da fila para o QueueTrigger
atributo num ficheiro de configuração ou variável ambiental.
Podes fazer isso passando um NameResolver objeto para o JobHostConfiguration objeto. Você inclui espaços
reservados nos parâmetros de gatilho ou atributo de ligação, e o seu NameResolver código fornece os valores
reais a serem usados no lugar desses espaços reservados. Identifica-se os espaços reservados ao rodeá-los com
por cento (%) sinais, como mostrado aqui:
public static void WriteLog([QueueTrigger("%logqueue%")] string logMessage)
{
Console.WriteLine(logMessage);
}
Este código permite-lhe utilizar uma fila nomeada logqueuetest no ambiente de teste e uma nomeada em
logqueueprod produção. Em vez de um nome de fila codificado, especifica o nome de uma entrada na
appSettings coleção.
Há um padrão NameResolver que faz efeito se não fornecer um personalizado. O padrão obtém valores a partir de
configurações de aplicações ou variáveis ambientais.
A sua NameResolver turma obtém o nome da appSettings fila, como mostrado aqui:
Versão 3. x
Configura o resolver utilizando a injeção de dependência. Estas amostras requerem a seguinte using declaração:
using Microsoft.Extensions.DependencyInjection;
Adicione o resolver chamando o método de ConfigureServices HostBuilder extensão, como neste exemplo:
Versão 2. x
Passe a sua NameResolver classe para o JobHost objeto, como mostrado aqui:
A Azure Functions implementa INameResolver para obter valores a partir das definições de aplicações, como
mostra o exemplo. Quando utilizar o WebJobs SDK diretamente, pode escrever uma implementação
personalizada que obtém valores de substituição de espaços reservados a partir de qualquer fonte que prefira.
Para obter mais informações, consulte Binding at runtime na documentação Azure Functions.
Atribuir desativar
O Disable atributo permite-lhe controlar se uma função pode ser ativada.
No exemplo seguinte, se a definição da aplicação Disable_TestJob tiver um valor ou 1 True (caso insensível), a
função não será executada. Nesse caso, o tempo de execução cria uma função de mensagem de registo
'Funções.TestJob' é desativada.
[Disable("Disable_TestJob")]
public static void TestJob([QueueTrigger("testqueue2")] string message)
{
Console.WriteLine("Function with Disable attribute executed!");
}
Quando altera os valores de definição de aplicações no portal Azure, o WebJob reinicia para recolher a nova
definição.
O atributo pode ser declarado ao nível do parâmetro, método ou classe. O nome de definição também pode
conter expressões de encadernação.
Atributo timeout
O Timeout atributo faz com que uma função seja cancelada se não terminar dentro de um determinado período
de tempo. No exemplo seguinte, a função funcionaria durante um dia sem o atributo Timeout. O intervalo faz
com que a função seja cancelada após 15 segundos.
[Timeout("00:00:15")]
public static async Task TimeoutJob(
[QueueTrigger("testqueue2")] string message,
CancellationToken token,
TextWriter log)
{
await log.WriteLineAsync("Job starting");
await Task.Delay(TimeSpan.FromDays(1), token);
await log.WriteLineAsync("Job completed");
}
Pode aplicar o atributo Timeout ao nível da classe ou do método, e pode especificar um tempo limite global
utilizando JobHostConfiguration.FunctionTimeout . Os intervalos de tempo de nível de classe ou de nível
metodológico substituem os intervalos globais.
Atributo Singleton
O Singleton atributo garante que apenas uma instância de uma função é executado, mesmo quando existem
múltiplas instâncias da aplicação web anfitriã. Fá-lo utilizando o bloqueio distribuído.
Neste exemplo, apenas um único caso da ProcessImage função funciona a qualquer momento:
[Singleton]
public static async Task ProcessImage([BlobTrigger("images")] Stream image)
{
// Process the image.
}
SingletonMode.Listener
Alguns gatilhos têm apoio integrado para a gestão da concuência:
QueueTrigger . Definir JobHostConfiguration.Queues.BatchSize para 1 .
Ser viceBusTrigger . Definir ServiceBusConfiguration.MessageOptions.MaxConcurrentCalls para 1 .
FileTrigger . Definir FileProcessor.MaxDegreeOfParallelism para 1 .
Pode utilizar estas definições para garantir que a sua função funciona como singleton num único caso. Para
garantir que apenas uma instância da função está a funcionar quando a aplicação web se escala para várias
instâncias, aplique um bloqueio singleton de nível de ouvinte na função
[Singleton(Mode = SingletonMode.Listener)] (). As fechaduras dos ouvintes são adquiridas quando o JobHost
começa. Se três casos de escala começarem todos ao mesmo tempo, apenas uma das instâncias adquire o
bloqueio e apenas um ouvinte começa.
NOTE
Consulte este GitHub Repo para saber mais sobre o funcionamento do SingletonMode.Function.
Valores de âmbito
Pode especificar uma expressão/valor de âmbito num singleton. A expressão/valor garante que todas as
execuções da função num âmbito específico serão serializadas. A implementação de mais bloqueio granular desta
forma pode permitir algum nível de paralelismo para a sua função, ao mesmo tempo que serializa outras
invocações ditadas pelas suas necessidades. Por exemplo, no seguinte código, a expressão de âmbito liga-se ao
Region valor da mensagem de entrada. Quando a fila contém três mensagens nas regiões Leste, Leste e Oeste,
respectivamente, as mensagens que têm região Leste são executadas em série enquanto a mensagem com a
região Oeste é executada em paralelo com as do Leste.
[Singleton("{Region}")]
public static async Task ProcessWorkItem([QueueTrigger("workitems")] WorkItem workItem)
{
// Process the work item.
}
SingletonScope.Host
O âmbito padrão para uma fechadura SingletonScope.Function é, o que significa que o âmbito de bloqueio (o
caminho de locação blob) está ligado ao nome de função totalmente qualificado. Para bloquear as funções,
especifique SingletonScope.Host e use um nome de identificação de âmbito que seja o mesmo em todas as
funções que não pretende executar simultaneamente. No exemplo seguinte, apenas um caso de AddItem ou corre
de cada RemoveItem vez:
[Singleton("ItemsLock", SingletonScope.Host)]
public static void AddItem([QueueTrigger("add-item")] string message)
{
// Perform the add operation.
}
[Singleton("ItemsLock", SingletonScope.Host)]
public static void RemoveItem([QueueTrigger("remove-item")] string message)
{
// Perform the remove operation.
}
Fichas de cancelamento
Para obter informações sobre como lidar com fichas de cancelamento, consulte a documentação do Azure
Functions sobre fichas de cancelamento e paragem graciosa.
Múltiplas instâncias
Se a sua aplicação web funcionar em várias instâncias, um WebJob contínuo funciona em cada instância, ouvindo
os gatilhos e as funções de chamada. As várias ligações ao gatilho são projetadas para partilhar eficientemente o
trabalho colaborativamente em todos os casos, de modo que a escala para mais instâncias permite-lhe lidar com
mais carga.
Embora alguns gatilhos possam resultar em duplo processamento, os gatilhos de armazenamento de fila e bolhas
impedem automaticamente uma função de processar uma mensagem de fila ou uma bolha mais de uma vez.
Para obter mais informações, consulte design para obter uma entrada idêntica na documentação Azure Functions.
O gatilho do temporizador assegura automaticamente que apenas uma instância do temporizador é executado,
para que não obtenha mais do que uma instância de função a funcionar numa determinada hora programada.
Se quiser garantir que apenas uma instância de uma função é executado mesmo quando existem múltiplas
instâncias da aplicação web anfitriã, pode usar o Singleton atributo.
Filtros
Os Filtros de Função (pré-visualização) fornecem uma forma de personalizar o pipeline de execução WebJobs
com a sua própria lógica. Os filtros são semelhantes aos filtros do núcleo ASP.NET. Pode implementá-los como
atributos declarativos que são aplicados às suas funções ou classes. Para obter mais informações, consulte filtros
de funções.
Rastreio 0
Depurar 1
Informações 2
Aviso 3
Erro 4
N ÍVEL DE REGISTO C Ó DIGO
Crítico 5
Nenhum 6
Pode filtrar independentemente cada categoria para um determinado LogLevel . Por exemplo, é melhor ver todos
os registos para processamento de gatilhos blob, mas apenas Error e mais alto para tudo o resto.
Versão 3. x
Versão 3. x do SDK depende da filtragem incorporada em .NET Core. A LogCategories classe permite definir
categorias para funções específicas, gatilhos ou utilizadores. Também define filtros para estados de acolhimento
específicos, como Startup e Results . Isto permite-lhe afinar a saída de registo. Se não for encontrada
correspondência nas categorias definidas, o filtro volta ao valor ao Default decidir filtrar a mensagem.
LogCategories requer a seguinte declaração:
using Microsoft.Azure.WebJobs.Logging;
O exemplo a seguir constrói um filtro que, por defeito, filtra todos os registos ao Warning nível. As Function
results categorias e categorias (equivalente à Host.Results versão 2.* x*) são filtrados ao Error nível. O filtro
compara a categoria atual a todos os níveis registados no LogCategories caso e escolhe a correspondência mais
longa. Isto significa que o Debug nível registado para Host.Triggers fósforos Host.Triggers.Queue ou
Host.Triggers.Blob . Isto permite-lhe controlar categorias mais amplas sem precisar de adicionar cada uma
delas.
Versão 2. x
Na versão 2. x do SDK, usa-se a LogCategoryFilter classe para controlar a filtragem. A LogCategoryFilter
propriedade tem um valor inicial de , o que significa que Default Information quaisquer mensagens no
Information , , ou Warning Error Critical níveis são registados, mas quaisquer mensagens nos Debug níveis
ou Trace níveis são filtradas.
Como LogCategories na versão 3.* x*, a CategoryLevels propriedade permite especificar níveis de registo para
categorias específicas para que possa afinar a saída de registo. Se não for encontrada correspondência dentro do
CategoryLevels dicionário, o filtro volta ao valor ao Default decidir se filtra a mensagem.
O exemplo a seguir constrói um filtro que por predefinição filtra todos os registos ao Warning nível. As Function
Host.Results categorias e categorias são filtradas ao Error nível. LogCategoryFilter O compara a categoria
atual a todos os CategoryLevels inscritos e escolhe o jogo mais longo. Assim, o Debug nível registado
Host.Triggers para irá corresponder Host.Triggers.Queue ou Host.Triggers.Blob . Isto permite-lhe controlar
categorias mais amplas sem precisar de adicionar cada uma delas.
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.Channel;
Ligue ConfigureServices para o construtor para adicionar o seu costume ao ITelemetryInitializer oleoduto.
static async Task Main()
{
var builder = new HostBuilder();
builder.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
});
builder.ConfigureLogging((context, b) =>
{
// Add logging providers.
b.AddConsole();
Se quiser modificar qualquer parte do pipeline Application Insights, pode fornecer o seu próprio
ITelemetryClientFactory , e o anfitrião utilizará a sua classe para construir um TelemetryClient . Por exemplo,
este código substitui DefaultTelemetryClientFactory para modificar uma propriedade ServerTelemetryChannel de:
private class CustomTelemetryClientFactory : DefaultTelemetryClientFactory
{
public CustomTelemetryClientFactory(string instrumentationKey, Func<string, LogLevel, bool> filter)
: base(instrumentationKey, new SamplingPercentageEstimatorSettings(), filter)
{
}
return channel;
}
}
Próximos passos
Este artigo forneceu código snippets que mostram como lidar com cenários comuns para trabalhar com o
WebJobs SDK. Para obter amostras completas, consulte amostras azure-webjobs-sdk.
Subscrição do Azure e limites, quotas e limitações do
serviço (Azure subscription and service limits, quotas,
and constraints)
17/06/2020 • 195 minutes to read • Edit Online
Este documento enumera alguns dos limites mais comuns do Microsoft Azure, que também são por vezes
chamados de quotas.
Para saber mais sobre os preços da Azure, consulte a visão geral dos preços do Azure. Aí, pode estimar os seus
custos utilizando a calculadora de preços. Também pode ir à página de detalhes de preços para um determinado
serviço, por exemplo, VMs Windows. Para obter dicas para ajudar a gerir os seus custos, consulte Prevenir custos
inesperados com faturação da Azure e gestão de custos.
Limites de gestão
NOTE
Alguns serviços têm limites ajustáveis.
Quando um serviço não tem limites ajustáveis, as seguintes tabelas utilizam o limite do cabeçalho . Nesses casos, o
incumprimento e os limites máximos são os mesmos.
Quando o limite pode ser ajustado, as tabelas incluem limite de predefinição e cabeçalhos limite máximos. O limite
pode ser elevado acima do limite de incumprimento, mas não acima do limite máximo.
Se pretender elevar o limite ou quota acima do limite por defeito, abra gratuitamente um pedido de apoio ao cliente online.
As assinaturas de teste gratuito não são elegíveis para aumentos de limites ou quotas. Se tiver uma subscrição de
Teste Gratuito,pode fazer upgrade para uma subscrição Pay-As-You-Go. Para obter mais informações, consulte a
atualização da subscrição do Azure Free Trial para uma subscrição Pay-As-You-Go e a subscrição de teste gratuito
FAQ.
Alguns limites são geridos a nível regional.
Vamos usar as quotas vCPU como exemplo. Para solicitar um aumento de quota com apoio para vCPUs, você deve
decidir quantos vCPUs você quer usar em que regiões. Em seguida, faça um pedido específico para quotas vCPU
do grupo de recursos Azure para os montantes e regiões que deseja. Se precisa de utilizar 30 vCPUs na Europa
Ocidental para executar a sua aplicação lá, solicite especificamente 30 vCPUs na Europa Ocidental. A sua quota
vCPU não é aumentada em nenhuma outra região, só a Europa Ocidental tem a quota de 30 vCPU.
Como resultado, decida quais as suas quotas de grupo de recursos Azure para a sua carga de trabalho em
qualquer região. Em seguida, solicite esse montante em cada região em que pretende implantar. Para obter ajuda
na forma de determinar as suas quotas atuais para regiões específicas, consulte os erros de Resolução para quotas
de recursos.
Limites gerais
Para limites de nomes de recursos, consulte as regras de nomeação e as restrições para os recursos da Azure.
Para obter informações sobre a API do Gestor de Recursos, leia e escreva limites, consulte os pedidos do Gestor de
Recursos Throttling.
Limites do grupo de gestão
Os seguintes limites aplicam-se aos grupos de gestão.
REC URSO L IM IT E
REC URSO L IM IT E
1 Pode aplicar até 50 tags diretamente a uma subscrição. No entanto, a subscrição pode conter um número
ilimitado de tags que são aplicadas a grupos de recursos e recursos dentro da subscrição. O número de etiquetas
por grupo de recursos ou recursos é limitado a 50. O Gestor de Recursos devolve uma lista de nomes e valores
únicos na subscrição apenas quando o número de tags for de 10.000 ou menos. Ainda pode encontrar um recurso
por etiqueta quando o número ultrapassa os 10.000.
2 Se atingir
o limite de 800 implementações, elimine as implementações da história que já não são necessárias.
Para eliminar as implementações de nível de subscrição, utilize a eliminação de remove-azDeployment ou az
implementação sub eliminar.
Limites de grupo de recursos
REC URSO L IM IT E
Recursos por grupo de recursos Os recursos não são limitados por grupo de recursos. Em vez
disso, são limitados por tipo de recursos num grupo de
recursos. Veja a próxima fila.
Recursos por grupo de recursos, por tipo de recurso 800 - Alguns tipos de recursos podem exceder o limite de
800. Ver Recursos não limitados a 800 instâncias por grupo de
recursos.
1 A partirde junho de 2020, as implementações serão automaticamente eliminadas do histórico à medida que se
aproxima do limite. Excluir uma entrada do histórico de implantação não afeta os recursos implantados. Para obter
mais informações, consulte as supressões automáticas do histórico de implantação.
Limites de modelo
VA LO R L IM IT E
Parâmetros 256
Variáveis 256
Saídas 64
Tamanho do modelo 4 MB
Pode exceder alguns limites de modelo usando um modelo aninhado. Para obter mais informações, consulte Utilize
modelos ligados quando implementar recursos Azure. Para reduzir o número de parâmetros, variáveis ou saídas,
pode combinar vários valores num objeto. Para obter mais informações, consulte os Objetos como parâmetros.
Funções e permissões de administrador Um grupo não pode ser adicionado como proprietário.
Um grupo não pode ser designado para um papel.
A capacidade dos utilizadores de lerem as informações
de diretório de outros utilizadores não podem ser
restringidas fora do interruptor da organização Azure
AD para desativar o acesso de todos os utilizadores
não administradores a todas as informações de
diretório (não recomendadas). Mais informações sobre
permissões por defeito aqui.
Pode levar até 15 minutos ou assinar/assinar antes que
as adições e revogações de cargos de administração
entrem em vigor.
1 Os limites de escala dependem do nível de preços. Para obter mais informações sobre os níveis de preços e os
seus limites de escala, consulte os preços da Gestão DaAPi.
2 O tamanho do cache por unidade depende do nível de preços. Para ver os níveis de preços e os seus limites de
número de recursos de gateway auto-alojados. Para aumentar este limite, contacte o suporte. Note-se que o
número de nós (ou réplicas) associados a um recurso de gateway auto-hospedado é ilimitado no nível Premium e
limitado a um único nó no nível de Desenvolvimento.
REC URSO GRAT UITO PA RT IL H A DO B Á SIC O STA N DA RD P REM IUM ( V2) ISO L A DO
Plano de 10 por região 10 por grupo 100 por 100 por 100 por 100 por grupo
serviço de de recursos grupo de grupo de grupo de de recursos
aplicações recursos recursos recursos
Conexões de 1 1 1 5 5 5
debugger
simultâneas
por aplicação
REC URSO GRAT UITO PA RT IL H A DO B Á SIC O STA N DA RD P REM IUM ( V2) ISO L A DO
Equilibrador X X X X X10
de carga
integrado
Sempre ligado X X X X
Dimensionam X X X
ento
Automático
WebJobs11 X X X X X X
Monitorização X X X X
de ponto final
Slots de 5 20 20
encenação por
app
1 Aplicações e quotas de armazenamento são de acordo com o plano de Serviço de Aplicações, a menos que se
note o contrário.
2 O número real de aplicações que pode alojar nestas máquinas depende da atividade das aplicações, do tamanho
das instâncias da máquina e da utilização correspondente de recursos.
3 Casos dedicados podem ter tamanhos diferentes. Para mais informações, consulte os preços do Serviço de
Aplicações.
4 Mais são permitidos mediante pedido.
5 O limite de armazenamento é o tamanho total do conteúdo em todas as aplicações no mesmo plano de serviço
app. O tamanho total do conteúdo de todas as aplicações em todos os planos de serviço seletiva de um único
grupo de recursos e região não pode exceder 500GB.
6 Estes recursos são limitados por recursos físicos nas instâncias dedicadas (a dimensão da instância e o número de
instâncias).
7 Se escalar uma aplicação no nível Básico para dois casos, tem 350 ligações simultâneas para cada uma das duas
instâncias. Para o nível Standard e acima, não existem limites teóricos para as tomadas web, mas outros fatores
podem limitar o número de tomadas web. Por exemplo, os pedidos máximos maxConcurrentRequestsPerCpu
simultâneos permitidos (definidos por ) são: 7.500 por pequeno VM, 15.000 por VM médio (7.500 x 2 núcleos) e
75.000 por VM grande (18.750 x 4 núcleos).
8 As ligações IP máximas são por exemplo e dependem do tamanho da instância: 1.920 por instância B1/S1/P1V2,
isso não há conectividade pública da internet. Como resultado, algumas funcionalidades de um Serviço de
Aplicações Isoladas ILB devem ser utilizadas a partir de máquinas que tenham acesso direto ao ponto final da rede
ILB.
11 Execute executáveis e/ou scripts personalizados a pedido, numa programação, ou continuamente como uma
tarefa de fundo dentro da sua instância de Serviço de Aplicações. Always On é necessário para execução contínua
de WebJobs. Não existe um limite predefinido para o número de WebJobs que podem ser executados numa
instância do Serviço de Aplicações. Existem limites práticos que dependem do que o código de aplicação está a
tentar fazer.
Limites de automação
Automatização de processos
Limite máximo de fluxo de emprego 1 MB Um único fluxo não pode ser maior que
1 MB.
REC URSO L IM IT E N OTA S
Tempo de execução de emprego, nível 500 minutos por subscrição por mês
livre
1 Uma caixa de areia é umambiente partilhado que pode ser usado por vários trabalhos. Os empregos que
utilizam a mesma caixa de areia estão ligados às limitações de recursos da caixa de areia.
Controlo de Alterações e Inventário
A tabela seguinte mostra os limites de item rastreados por máquina para o rastreio de alterações.
REC URSO L IM IT E N OTA S
Ficheiro 500
Registo 250
Serviços 250
Daemon 250
Gestão de Atualizações
O quadro seguinte mostra os limites para a Gestão de Atualizações.
Bases de Dados 64
O Azure Cache para os limites e tamanhos do Redis é diferente para cada nível de preços. Para ver os níveis de
preços e os seus tamanhos associados, consulte o Azure Cache para os preços redis.
Para obter mais informações sobre o Azure Cache para os limites de configuração do Redis, consulte a
configuração do servidor Predefinido Redis.
Uma vez que a configuração e gestão do Azure Cache para os casos Redis é feita pela Microsoft, nem todos os
comandos Redis são suportados em Azure Cache para Redis. Para mais informações, consulte comandos Redis não
suportados em Azure Cache for Redis.
1 Cada Serviço Azure Cloud com funções web ou operárias pode ter duas implementações, uma para produção e
outra para encenação. Este limite refere-se ao número de funções distintas, isto é, configuração. Este limite não se
refere ao número de instâncias por função, isto é, escalando.
Serviços 1 16 16 8 6 6 6 6
máximos
Escala N/D 3 SU 36 SU 36 SU 36 SU 36 SU 36 SU 36 SU
máxima
em
unidades
de busca
(SU)2
1 O Free baseia-se em recursos partilhados, não dedicados. A escala não é apoiada em recursos partilhados.
2 As unidades de pesquisa são unidades de faturação, atribuídas como uma réplica ou uma divisória. Precisa de
ambos os recursos para operações de armazenamento, indexação e consulta. Para saber mais sobre as
computações da SU, consulte os níveis de recursos de escala para consultas e cargas de trabalho indexadas.
Limites por ser viço de pesquisa
Um serviço de pesquisa é limitado pelo espaço do disco ou por um limite rígido no número máximo de índices ou
indexadores, o que vier em primeiro lugar. Os seguintes documentos de tabela limitam-se ao armazenamento. Para
obter limites máximos de objetos, consulte Limites por recurso.
Partições N/D 1 12 12 12 3 12 12
por
serviço
Réplicas N/D 3 12 12 12 12 12 12
1 O básico temuma divisória fixa. Unidades de pesquisa adicionais podem ser usadas para adicionar réplicas para
volumes de consulta maiores.
2 Os contratos de nível de serviço estão em vigor para serviços faturados em recursos dedicados. Serviços
gratuitos e funcionalidades de pré-visualização não têm SLA. Para serviços de faturação, os SLAs efetuam efeitos
quando prevê redundância suficiente para o seu serviço. São necessárias duas ou mais réplicas para consulta (ler)
SLAs. São necessárias três ou mais réplicas para consulta e indexação (read-write) SLAs. O número de divisórias
não é uma consideração da SLA.
Para saber mais sobre limites a um nível mais granular, como tamanho de documento, consultas por segundo,
chaves, pedidos e respostas, consulte os limites de serviço na Pesquisa Cognitiva Azure.
T IP O L IM IT E EXEM P LO
Uma mistura de recursos de Serviços Máximo de 200 recursos totais dos 100 recursos de Visão Computacional
Cognitivos Serviços Cognitivos. em West US 2, 50 Recursos do Speech
Service no Oeste dos EUA e 50 recursos
de Análise de Texto no Leste dos EUA.
Um único tipo de recursos dos Serviços Máximo de 100 recursos por região, 100 recursos de Visão Computacional
Cognitivos. com um máximo de 200 recursos totais em West US 2 e 100 recursos de Visão
dos Serviços Cognitivos. Computacional no Leste dos EUA.
REC URSO L IM IT E
O quadro seguinte descreve os limites das operações de gestão realizadas nos clusters do Azure Data Explorer.
 M B ITO O P ERA Ç Ã O L IM IT E
Cluster escrever (por exemplo, criar uma base 1000 por hora
de dados)
Aumentar horizontalmente Orientada por eventos Orientada por eventos Manual/escala automática
Ligações de saída max (por 600 ativos (1200 no total) sem limites sem limites
exemplo)
P L A N O DE SERVIÇ O DE
REC URSO P L A N O DE C O N SUM O P L A N O P REM IUM A P L IC A Ç Õ ES
Planos do Serviço de 100 por região 100 por grupo de recursos 100 por grupo de recursos
Aplicações
Suporte sSL de domínio Conexão SNI SSL não Conexões SNI SSL e 1 IP SSL Conexões SNI SSL e 1 IP SSL
personalizado limitada incluída incluídas incluídas
1 Para limites específicos para as várias opções do plano de app service, consulte os limites do plano do Serviço de
Aplicações.
2 Por predefinição, o tempo limite para as Funções 1.x tempo de execução num plano de Serviço de Aplicações não
está limitado.
3 Requer que o plano de serviço de aplicações seja definido para sempre ligado. Pague a preçospadrão.
4 Estes limites estão fixados no hospedeiro.
5 O número real de aplicações de função que pode acolher depende da atividade das aplicações, do tamanho das
aplicações no mesmo plano de Serviço de Aplicações. O plano de consumo utiliza ficheiros Azure para
armazenamento temporário.
7 Quando a sua aplicação de funções estiver hospedada num plano de consumo,apenas a opção CNAME é
suportada. Para aplicações de função num plano Premium ou num plano de Serviço de Aplicações,pode mapear
um domínio personalizado usando um CNAME ou um registo A.
8 Garantido até 60 minutos.
Nómáximo por cluster com conjuntos de escala de máquina 1000 (100 nós por piscina de nós)
virtual e Balancer de carga padrão SKU
Cápsulas máximas por nó: Rede avançada com interface de Implementação da CLI do Azure: 301
rede de contentores Azure Modelo de Gestor de Recursos Azure: 301
Implementação do portal: 30
1 Quando implementa um cluster de Serviço Azure Kubernetes (AKS) com o Modelo Azure CLI ou um Gestor de
Recursos, este valor é configurável até 250 cápsulas por nó. Não é possível configurar cápsulas máximas por nó
depois de já ter implantado um cluster AKS, ou se implementar um cluster utilizando o portal Azure.
O quadro seguinte mostra o limite acumulado de tamanho de dados para contas Do Azure Maps numa subscrição
do Azure. O serviço de dados Do Azure Maps está disponível apenas no nível de preços S1.
REC URSO L IM IT E
Para obter mais informações sobre os níveis de preços do Azure Maps, consulte os preços do Azure Maps.
Alertas métricos (clássico) 100 regras de alerta ativo por Apoio de chamada.
subscrição.
REC URSO L IM IT E P REDEF IN IDO L IM IT E M Á XIM O
Alertas do registo de atividades 100 regras de alerta ativo por O mesmo que o padrão.
subscrição.
Definições de escala automática 100 por região por subscrição. O mesmo que o padrão.
Perfis de escala automática 20 perfis por definição de escala O mesmo que o padrão.
automática.
Grupos de ação
REC URSO L IM IT E P REDEF IN IDO L IM IT E M Á XIM O
Impulso da aplicação Azure 10 ações de aplicações Azure por grupo Apoio de chamada.
de ação.
Tempo na fila da moeda 2,5 minutos Se uma consulta se sentar na fila por
mais de 2,5 minutos sem ser iniciada,
será terminada com uma resposta de
erro HTTP com o código 429.
M EDIR L IM IT E P O R UT IL IZ A DO R DESC RIÇ Ã O
Taxa de consulta 200 consultas por 30 segundos Esta é a taxa global que as consultas
podem ser submetidas por um único
utilizador a todos os espaços de
trabalho. Este limite aplica-se a consultas
programáticas ou consultas iniciadas
por peças de visualização, como os
dashboards Azure e a página de resumo
do espaço de trabalho Log Analytics.
Otimize as suas consultas conforme descrito nas consultas de registo otimizadas no Monitor Azure.
Dashboards e livros de trabalho podem conter múltiplas consultas numa única vista que geram uma explosão
de consultas sempre que carregam ou atualização. Considere dividi-los em várias visões que carregam a
pedido.
No Power BI, considere extrair apenas resultados agregados em vez de troncos brutos.
Áreas de trabalho do Log Analytics
Volume e retenção de recolha de dados
Nível de preços atual por GB Sem limite 30 - 730 dias A retenção de dados para
(introduzido abril de 2018) além dos 31 dias está
disponível para encargos
adicionais. Saiba mais sobre
os preços do Monitor Azure.
Legado Autónomo por nível Sem limite 30 a 730 dias A retenção de dados para
GB além dos 31 dias está
(introduzido abril de 2016) disponível para encargos
adicionais. Saiba mais sobre
os preços do Monitor Azure.
ESC A L Ã O L IM IT E P O R DIA RET EN Ç Ã O DE DA DO S C O M EN TÁ RIO
Legado por nó (OMS) Sem limite 30 a 730 dias A retenção de dados para
(introduzido abril de 2016) além dos 31 dias está
disponível para encargos
adicionais. Saiba mais sobre
os preços do Monitor Azure.
Nível Padrão Legado Sem limite 30 dias A retenção não pode ser
ajustada
Nível Legacy Premium Sem limite 365 dias A retenção não pode ser
ajustada
Todos os outros níveis Sem limite Está limitado pelo número de recursos
dentro de um grupo de recursos e pelo
número de grupos de recursos por
subscrição.
API de Pesquisa
Taxa máxima de pedido 200 pedidos por 30 segundos por Consulte os limites de tarifa ção para
utilizador aAD ou endereço IP do cliente mais detalhes.
Exportação de dados Não disponível atualmente Utilize a Função Azure ou a App Lógica
para agregar e exportar dados.
Operation
|where OperationCategory == "Ingestion"
|where Detail startswith "The rate of data crossed the threshold"
NOTE
Dependendo do tempo que tem usado o Log Analytics, poderá ter acesso a níveis de preços antigos. Saiba mais sobre os
níveis de preços do legado Log Analytics.
Application Insights
Existem alguns limites para o número de métricas e eventos por aplicação, isto é, por chave de instrumentação. Os
limites dependem do plano de preços que escolher.
Para mais informações, consulte About pricing and quotas in Application Insights (Acerca de preços e quotas no
Application Insights).
O N DE O Q UÊ C O N TA GEM M Á XIM A
Para solicitar uma atualização dos limites predefinidos da sua subscrição, abra um bilhete de suporte.
Limites de backup
Para um resumo das definições e limitações de suporte de backup Azure, consulte Matrizesde Suporte de Backup
Azure .
Limites de lote
REC URSO L IM IT E P REDEF IN IDO L IM IT E M Á XIM O
1 Para solicitar um aumento para além deste limite, contacte o Suporte Azure.
IMPORTANT
Estamos a mudar a forma como solicita e gere quota dedicada. O total de vCPUs dedicados é o valor atualmente aplicado,
mas em breve iremos impor quotas dedicadas por série VM. A quota de baixa prioridade continuará a ser aplicada com base
no limite total; não será aplicada pela série VM.
NOTE
Os limites predefinidos variam consoante o tipo de subscrição que utiliza para criar uma conta Batch. As quotas de núcleos
apresentadas são para contas Batch no modo de serviço Batch. Veja as quotas na sua conta Batch.
IMPORTANT
Para nos ajudar a gerir melhor a capacidade durante a pandemia global de saúde, as quotas fundamentais padrão para novas
contas de Lote em algumas regiões e para alguns tipos de subscrição foram reduzidas do intervalo de valores acima, em
alguns casos para núcleos zero. Quando criar uma nova conta Batch, verifique a sua quota principal e solicite um aumento de
quota de base,se necessário.
1 Casos extra pequenos contam como um vCPU em direção ao limite vCPU, apesar de utilizar um núcleo de CPU
parcial.
2 O limite da conta de armazenamento inclui contas de armazenamento Standard e Premium.
Portas por IP 5
Webhooks 2 10 500
1 Os limites de armazenamento especificados são a quantidade de armazenamento incluído para cada nível. É-lhe
cobrada uma taxa diária adicional por GiB para armazenamento de imagem acima destes limites. Para obter
informações sobre tarifas, consulte os preços do Registo de Contentores de Azure.
2ReadOps, WriteOpse Largura de Banda são estimativas mínimas. O Registo de Contentores Azure esforça-se por
Uma subscrição da Rede de Entrega de Conteúdos pode conter um ou mais perfis da Rede de Entrega de
Conteúdos. Um perfil da Rede de Entrega de Conteúdos pode conter um ou mais pontos finais da Rede de Entrega
de Conteúdos. É possível que pretenda utilizar vários perfis para organizar os pontos finais da sua Rede de Entrega
de Conteúdos por domínio de internet, aplicação web ou outros critérios.
1 A unidade de integração de dados (DIU) é utilizada numa operação de cópia cloud-to-cloud, aprenda mais com as
unidades de integração de dados (versão 2). Para obter informações sobre faturação, consulte os preços da Fábrica
de Dados azure.
2 O Tempo de Execução de Integração Azure está globalmente disponível para garantir a conformidade, eficiência e
redução dos custos de egress da rede.
Grupo regional 1 Eua Central, Leste dos EUA, LESTE US2, Norte da Europa,
Europa Ocidental, Oeste dos EUA, Oeste DOS EUA
Grupo regional 2 Austrália Leste, Austrália Sudeste, Brasil Sul, Índia Central,
Japão Leste, Northcentral EUA, Southcentral EUA, Sudeste
Asiático, Oeste Dos EUA
Grupo 3 da região Canadá Central, Ásia Oriental, França Central, Coreia Central,
Reino Unido Sul
3 O pipeline, o conjunto de dados e os objetos de serviço ligados representam um agrupamento lógico da sua
carga de trabalho. Os limites para estes objetos não se relacionam com a quantidade de dados que pode mover e
processar com a Azure Data Factory. A Data Factory foi concebida para escalar para lidar com petabytes de dados.
Versão 1
REC URSO L IM IT E P REDEF IN IDO L IM IT E M Á XIM O
1 O pipeline, o conjunto de dados e os objetos de serviço ligados representam um agrupamento lógico da sua
carga de trabalho. Os limites para estes objetos não se relacionam com a quantidade de dados que pode mover e
processar com a Azure Data Factory. A Data Factory foi concebida para escalar para lidar com petabytes de dados.
2 Os núcleos HDInsight a pedido são atribuídos fora da subscrição que contém a fábrica de dados. Como resultado,
o limite anterior é o limite central imposto pela Fábrica de Dados para os núcleos HDInsight a pedido. É diferente
do limite central que está associado à sua subscrição azure.
3 A unidade de movimento de dados em nuvem (DMU) para a versão 1 é utilizada numa operação de cópia cloud-
to-cloud, saiba mais com as unidades de movimento de dados cloud (versão 1). Para obter informações sobre
faturação, consulte os preços da Fábrica de Dados azure.
Número máximo de contas data Lake 5 Para aumentar este limite, contacte o
Analytics por região por subscrição Microsoft Support.
REC URSO L IM IT E
REC URSO L IM IT E
Taxa de publicação para um tópico personalizado (ingresso) 5.000 eventos por segundo por tópico
Taxa de publicação para um domínio de evento (ingress) 5.000 eventos por segundo
L IM IT E Â M B ITO N OTA S VA LO R
F UN C IO N A L IDA DE L IM IT ES
Tamanho da mensagem 1 MB
Grupos de consumidores Sem limite por CU, 1000 por centro de eventos
Captura Incluído
NOTE
Se antecipar a utilização de mais de 200 unidades com um hub de nível S1 ou S2 ou 10 unidades com um hub de nível S3,
contacte o Microsoft Support.
A tabela que se segue enumera os limites aplicáveis aos recursos do IoT Hub.
REC URSO L IM IT E
Tamanho máximo do batch do dispositivo para a cloud AMQP e HTTP: 256 KB para todo o lote
MQTT: 256 KB para cada mensagem
Número máximo de fluxos de dispositivos ligados 50 (apenas para S1, S2, S3 e F1)
simultaneamente
REC URSO L IM IT E
Transferência máxima de dados de fluxo de dispositivos 300 MB por dia (apenas para S1, S2, S3 e F1)
NOTE
Se precisar de mais de 50 hubs IoT pagos numa subscrição do Azure, contacte o Microsoft Support.
NOTE
Atualmente, o número total de dispositivos mais módulos que podem ser registados num único hub IoT está limitado a
1.000.000. Se quiser aumentar este limite, contacte o Suporte da Microsoft.
L IM ITA Ç Ã O VA LO R P O R H UB
Envios do dispositivo para a cloud 6.000/seg/unidade (para S3), 120/seg/unidade (para S2),
12/seg/unidade (para S1).
Mínimo de 100/seg.
Débito de operação tarefas por dispositivo 50/seg/unidade (para S3), máximo de 10/seg ou
1/seg/unidade (para S2), 10/seg (para S1).
Taxa de iniciação do fluxo do dispositivo 5 novos fluxos/seg (apenas para S1, S2, S3 e F1).
REC URSO L IM IT E
Número máximo de AE 25
NOTE
Para aumentar o número de inscrições e inscrições no seu serviço de provisionamento, contacte o Microsoft Support.
NOTE
O aumento do número máximo de AE não é suportado.
O Serviço de Fornecimento de Dispositivos acelera os pedidos quando as seguintes quotas são excedidas.
L IM ITA Ç Ã O VA LO R P O R UN IDA DE
Operações 200/min/serviço
NOTE
Na tabela anterior, vemos que para as chaves de software RSA de 2.048 bits, são permitidas 2.000 transações GET por 10
segundos. Para rsa 2.048 bits HSM-keys, 1.000 transações GET por 10 segundos são permitidas.
Os limiares de estrangulamento são ponderados, e a aplicação da lei está na sua soma. Por exemplo, como mostrado na
tabela anterior, quando executa operações GET em chaves RSA HSM, é oito vezes mais caro usar teclas de 4.096 bits em
comparação com 2.048 bits. Isso é porque 1.000/125 = 8.
Num intervalo de 10 segundos, um cliente azure key vault só pode 429 fazer uma das seguintes operações antes de
encontrar um código de estado HTTP estrangulado:
2.000 RSA 2.048 bits-chave de software GET transações
1.000 RSA 2.048 bits HSM-key GET transações
125 RSA 4.096 bits HSM-key GET transações
124 RSA 4.096-bits hSM-key GET e 8 rSA 2.048 bits HSM-key GET transações
Para obter informações sobre como lidar com a estrangulamento quando estes limites são ultrapassados, consulte
a orientação de estrangulamento do Cofre-Chave Azure.
1 Um limite de subscrição para todos os tipos de transações é cinco vezes por limite de cofre chave. Por exemplo,
outras transações HSM por subscrição estão limitadas a 5.000 transações em 10 segundos por subscrição.
Integração de Ligações Privadas Azure
REC URSO L IM IT E
Limites de conta
REC URSO L IM IT E P REDEF IN IDO
Limites de ativos
REC URSO L IM IT E P REDEF IN IDO
Tamanho dos ficheiros Em alguns cenários, existe um limite para o tamanho máximo
dos ficheiros suportados para o processamento em Serviços
de Media. (1)
1 O tamanho máximo suportado para uma única bolha é atualmente de até 5 TB no Armazenamento De Blob
Azure. Limites adicionais aplicam-se nos Serviços de Media com base nos tamanhos vm que são utilizados pelo
serviço. O limite de tamanho aplica-se aos ficheiros que envia e também aos ficheiros que são gerados em
resultado do processamento de Serviços de Media (codificação ou análise). Se o seu ficheiro de origem for
superior a 260 GB, o seu Trabalho provavelmente falhará.
A tabela seguinte mostra os limites das unidades reservadas aos meios de comunicação S1, S2 e S3. Se o seu
ficheiro fonte for maior do que os limites definidos na tabela, o seu trabalho de codificação falha. Se codificar
fontes de resolução 4K de longa duração, é obrigado a utilizar unidades reservadas aos meios de comunicação S3
para obter o desempenho necessário. Se tiver um conteúdo 4K maior do que o limite de 260 GB nas unidades
reservadas aos meios de comunicação S3, abra um bilhete de apoio.
S1 26
S2 60
T IP O DE UN IDA DE RESERVA DO A O S M EIO S DE
C O M UN IC A Ç Ã O TA M A N H O M Á XIM O DE EN T RA DA ( GB )
S3 260
3 Este número inclui trabalhos em fila, acabados, ativos e cancelados. Não inclui empregos apagados.
Qualquer registo de emprego na sua conta com mais de 90 dias será automaticamente eliminado, mesmo que o
número total de registos esteja abaixo da quota máxima.
Limites de streaming ao vivo
REC URSO L IM IT E P REDEF IN IDO
4 Para obterinformações detalhadas sobre as limitações do Evento Ao Vivo, consulte a comparação e limitaçõesdos
tipos de eventos ao vivo .
5 Saídas ao vivo começam na criação e param quando eliminados.
Limites de entrega de & de embalagem
REC URSO L IM IT E P REDEF IN IDO
6
6 Ao utilizar
uma Política de Streamingpersonalizada, deve conceber um conjunto limitado de tais políticas para a
sua conta de Serviço de Media e reutilizá-las para os seus Localizadores de Streaming sempre que forem
necessárias as mesmas opções e protocolos de encriptação. Não deve criar uma nova Política de Streaming para
cada Localizador de Streaming.
7 Os localizadores de streaming não foram concebidos para gerir o controlo de acesso por utilizador. Para conceder
direitos de acesso diferentes a utilizadores individuais, utilize soluções de Gestão de Direitos Digitais (Digital Rights
Management, DRM).
Limites de proteção
REC URSO L IM IT E P REDEF IN IDO
Licenças por mês para cada um dos tipos de DRM no serviço 1 000 000
de entrega chave de Serviços de Media por conta
Bilhete de apoio
Para recursos que não estão fixos, pode pedir que as quotas sejam aumentadas, abrindo um bilhete de apoio.
Incluir informações detalhadas no pedido sobre as alterações de quota desejadas, cenários de caso de utilização e
regiões necessárias.
Não crie contas dos Serviços de Multimédia do Azure adicionais numa tentativa de obter limites superiores.
Serviços de Multimédia v2 (legados)
Para limites específicos dos Serviços de Mídia v2 (legado), consulte Os Serviços de Mídia v2 (legado)
Chamadas à API 500 000 1,5 milhões por unidade 15 milhões por unidade
Notificações push Azure Notification Hubs Free Centros de Notificação Nível Nível padrão de Centros de
tier incluído, até 1 milhão de básico incluído, até 10 Notificação incluído, até 10
pushs milhões de pushs milhões de pushs
Para obter mais informações sobre limites e preços, consulte os preços dos Serviços Móveis Azure.
Limites de rede
Limites de networking - Gestor de Recursos Azure
Os seguintes limites aplicam-se apenas aos recursos de networking geridos através do Gestor de Recursos
Azure por região por subscrição. Saiba como visualizar o seu uso atual de recursos contra os seus limitesde
subscrição .
NOTE
Recentemente aumentámos todos os limites de incumprimento para os seus limites máximos. Se não houver uma coluna de
limite máximo, o recurso não tem limites ajustáveis. Se teve estes limites aumentados pelo suporte no passado e não vê
limites atualizados nas tabelas seguintes, abra um pedido de apoio ao cliente online sem custos
REC URSO L IM IT E
Fluxos simultâneos de TCP ou UDP por NIC de uma máquina 500 000
virtual ou exemplo de função
REC URSO L IM IT E
1 O limite é de até 150recursos, em qualquer combinação de recursos de máquinas virtuais autónomas, recursos
definidos de disponibilidade e grupos de colocação de escala de máquina virtual.
Balanceador de Carga Básico
REC URSO L IM IT E
Os seguintes limites aplicam-se apenas aos recursos de networking geridos através do modelo de implantação
clássico por subscrição. Saiba como visualizar o seu uso atual de recursos contra os seus limitesde subscrição .
Fluxos simultâneos de TCP ou UDP por 500.000, até 1.000.000 para dois ou 500.000, até 1.000.000 para dois ou
NIC de uma máquina virtual ou mais NICs. mais NICs.
exemplo de função
Limites ExpressRoute
REC URSO L IM IT E
Número de ligações de rede virtual permitidas por circuito Consulte o Número de redes virtuais por tabela de circuitos
ExpressRoute ExpressRoute.
50 Mbps 10 20
100 Mbps 10 25
200 Mbps 10 25
500 Mbps 10 40
1 Gbps 10 50
2 Gbps 10 60
5 Gbps 10 75
10 Gbps 10 100
40 Gbps* 10 100
NOTE
As ligações Global Reach contam contra o limite de ligações de rede virtual por Circuito ExpressRoute. Por exemplo, um
Circuito Premium de 10 Gbps permitiria 5 ligações Global Reach e 95 ligações às Ligações ExpressRoute Gateways ou 95
ligações Global Reach e 5 ligações aos Gateways ExpressRoute ou qualquer outra combinação até ao limite de 100 ligações
para o circuito.
Entrada por ligação VVpN Virtual WAN (2 túneis) 2 Gbps com 1 túnel Gbps/IPsec
1 No caso de SKUs ativadas por WAF, recomendamos que limite o número de recursos a 40 para um desempenho
ótimo.
Limites do Observador de Rede
REC URSO L IM IT E N OTA
Sessões de captura de pacotes 10.000 por região Número de sessões apenas, não salvas
capturas.
REC URSO L IM IT E
Número de Configurações IP num serviço de ligação privada 8 (Este número destina-se aos endereços IP NAT utilizados por
PLS)
*Pode variar devido a outras sessões de RDP em curso ou outras sessões de SSH em curso.
**Pode variar se existirem ligações RDP existentes ou utilização de outras sessões de SSH em curso.
Limites de DNS de Azure
Zonas públicas de DNS
REC URSO L IM IT E
Número de zonas privadas de DNS uma rede virtual pode ficar 1000
ligada
Valores de timeout
Cliente para porta da frente
A Porta da Frente tem um tempo limite de ligação TCP inativo de 61 segundos.
Porta da Frente para aplicação back-end
Se a resposta for uma resposta em pedaços, um 200 é devolvido se ou quando o primeiro pedaço for recebido.
Depois de o pedido HTTP ser encaminhado para a parte de trás, a Porta da Frente aguarda 30 segundos pelo
primeiro pacote a partir da parte de trás. Depois devolve um erro 503 ao cliente. Este valor é configurável
através do campo sendRecvTimeoutSeconds na API.
Para cenários de cache, este tempo não é configurável e por isso, se um pedido for cache e demorar mais
de 30 segundos para o primeiro pacote da Porta da Frente ou do backend, então um erro de 504 é
devolvido ao cliente.
Depois de o primeiro pacote ser recebido a partir da parte de trás, a Porta da Frente espera por 30 segundos
num intervalo de tempo inativo. Depois devolve um erro 503 ao cliente. Este valor de tempo não é configurável.
Porta da frente para o intervalo de sessão tCP de trás para trás é de 90 segundos.
Limite de dados de upload e descarregamento
C O M C O DIF IC A Ç Ã O DE
T RA N SF ERÊN C IA SA B OTA DA ( T EC ) SEM H T T P C H UN K IN G
Carregar Não há limite, desde que cada O tamanho não pode ser maior que 2
carregamento de CTE seja inferior a 2 GB.
GB.
Outros limites
Tamanho máximo do URL - 8.192 bytes - Especifica o comprimento máximo do URL bruto (esquema + nome de
anfitrião + porta + caminho + cadeia de consulta do URL)
Tamanho máximo da corda de consulta - 4.096 bytes - Especifica o comprimento máximo da corda de consulta,
em bytes.
Tamanho máximo do cabeçalho de resposta HTTP da URL da sonda de saúde - 4.096 bytes - Especificou o
comprimento máximo de todos os cabeçalhos de resposta das sondas de saúde.
Para obter mais informações sobre limites e preços, consulte os preços dos Centros de Notificação.
Número de tópicos ou filas Espaço de nomes Os pedidos subsequentes de 10.000 para o nível Básico
por espaço de nome criação de um novo tópico ou Standard. O número total
ou fila no espaço de nome de tópicos e filas num
são rejeitados. Como espaço de nome deve ser
resultado, se configurado inferior ou igual a 10.000.
através do portal
Azure,gera-se uma Para o nível Premium, 1.000
mensagem de erro. Se for por unidade de mensagens
chamado pela API de gestão, (MU). Limite máximo é de
uma exceção é recebida pelo 4.000.
código de chamada.
N O M E DE Q UOTA Â M B ITO N OTA S VA LO R
Número de tópicos ou filas Espaço de nomes Os pedidos subsequentes de Níveis básicos e standard:
divididos por espaço de criação de um novo tópico 100.
nome ou fila dividido no espaço de
nome são rejeitados. Como As entidades divididas não
resultado, se configurado são apoiadas no escalão
através do portal Premium.
Azure,gera-se uma
mensagem de erro. Se for Cada fila ou tópico dividido
chamado da API de gestão, conta para a quota de 1.000
a exceção entidades por espaço de
QuotaExceededException nome.
é recebida pelo código de
chamada.
Tamanho máximo do
cabeçalho: 64 KB.
Número máximo de
propriedades cabeçalho no
saco de propriedade:
byte/int. MaxValue.
Número de assinaturas por Entidade Os pedidos subsequentes de 2.000 por tópico para o nível
tópico criação de subscrições Standard.
adicionais para o tópico são
rejeitados. Como resultado,
se configurado através do
portal, é mostrada uma
mensagem de erro. Se for
chamado pela API de gestão,
uma exceção é recebida pelo
código de chamada.
Tamanho dos filtros ou ações Espaço de nomes Os pedidos subsequentes de Comprimento máximo da
SQL criação de filtros adicionais cadeia de condição do filtro:
são rejeitados e uma exceção 1.024 (1 K).
é recebida pelo código de
chamada. Comprimento máximo da
corda de ação de regra:
1.024 (1 K).
Número máximo de
expressões por ação de
regra: 32.
Número de regras de Regras Entidade, espaço de nome Os pedidos subsequentes de Número máximo de regras
de Regras de Acesso criação de regras adicionais por entidade tipo: 12.
partilhadopor espaço de são rejeitados e uma exceção
nome, fila ou tópico é recebida pelo código de As regras configuradas num
chamada. espaço de nome do Ônibus
de serviço aplicam-se a
todos os tipos: filas, tópicos.
N O M E DE Q UOTA Â M B ITO N OTA S VA LO R
IDEN T IF IC A DO R DE L IM IT E L IM IT E
Limites de armazenamento
A tabela seguinte descreve os limites predefinidos para as contas de armazenamento de blob de uso geral da
Azure v1, v2, Blob e block blob. O limite de entrada refere-se a todos os dados enviados para uma conta de
armazenamento. O limite de saída refere-se a todos os dados recebidos de uma conta de armazenamento.
REC URSO L IM IT E
Taxa máxima de pedido1 por conta de armazenamento 20.000 pedidos por segundo
Entrada máxima1 por conta de armazenamento (regiões que 5 Gbps se ra-GRS/GRS estiver ativado, 10 Gbps para LRS/ZRS2
não os EUA e a Europa)
Saída máxima para contas de armazenamento v1 para fins 20 Gbps se ra-GRS/GRS estiver ativado, 30 Gbps para
gerais (regiões dos EUA) LRS/ZRS2
Saída máxima para as contas de armazenamento v1 para fins 10 Gbps se ra-GRS/GRS estiver ativado, 15 Gbps para
gerais (regiões não americanas) LRS/ZRS2
1 As contas padrão de armazenamento Azure suportam limites de capacidade mais elevados e limites mais
elevados para a entrada por pedido. Para solicitar um aumento dos limites de conta, contacte o Suporte Azure.
2 Se a sua conta de armazenamento tiver acesso de leitura ativado com armazenamento geo-redundante (RA-GRS)
ou armazenamento de geo-zona redundante (RA-GZRS), então os alvos de saída para a localização secundária são
idênticos aos da localização primária. As opções de replicação do Armazenamento Azure incluem:
Armazenamento localmente redundante (LRS)
Armazenamento redundante em zona (ZRS)
Armazenamento georredundante (GRS)
Armazenamento georredundante com acesso de leitura (RA-GRS)
Armazenamento com redundância entre zonas (GZRS)
Armazenamento geozona-redundante de acesso de leitura (RA-GZRS)
3 Azure Data Lake Storage Gen2 é um conjunto de capacidades dedicadas à análise de big data, construídas no
armazenamento de Azure Blob.
NOTE
A Microsoft recomenda que utilize uma conta de armazenamento v2 para a maioria dos cenários. Pode facilmente atualizar
uma conta de armazenamento V1 ou Azure Blob para uma conta V2 para fins gerais, sem tempo de inatividade e sem
necessidade de copiar dados. Para obter mais informações, consulte upgrade para uma conta de armazenamento v2 para fins
gerais.
Se as necessidades da sua aplicação excederem os objetivos de escalabilidade de uma única conta de
armazenamento, pode construir a sua aplicação para utilizar várias contas de armazenamento. Em seguida, pode
dividir os seus objetos de dados através dessas contas de armazenamento. Para obter informações sobre os preços
de volume, consulte os preços de armazenamento Azure.
Todas as contas de armazenamento funcionam numa topologia de rede plana, independentemente de quando
foram criadas. Para obter mais informações sobre a arquitetura da rede plana Azure Storage e sobre a
escalabilidade, consulte o Microsoft Azure Storage: Um serviço de armazenamento de nuvem altamente disponível
com forte consistência.
Para obter mais informações sobre os limites das contas de armazenamento padrão, consulte os objetivos de
Escalaability para contas de armazenamento padrão.
Limites do fornecedor de recursos de armazenamento
Os seguintes limites aplicam-se apenas quando realiza operações de gestão utilizando o Gestor de Recursos Azure
com o Armazenamento Azure.
REC URSO L IM IT E
Operações de gestão de conta de armazenamento (escrita) 10 por segundo / 1200 por hora
Tamanho máximo do recipiente de bolha única O mesmo que a capacidade máxima da conta de
armazenamento
Tamanho máximo de uma bolha de bloco 50.000 X 100 MiB (aproximadamente 4,75 TiB)
Tamanho máximo de uma bolha de apêndice 50.000 x 4 MiB (aproximadamente 195 GiB)
Taxa de pedido de destino para uma única bolha Até 500 pedidos por segundo
Entrada de destino para uma única página blob Até 60 MiB por segundo
Entrada de alvo para uma única bolha de bloco Até limites de entrada/saída da conta de armazenamento1
1 A entrada para uma única bolha depende de vários fatores, incluindo, mas não se limitando a: concurrency,
tamanho de pedido, nível de desempenho, velocidade de fonte para uploads e destino para downloads. Para tirar
partido das melhorias de desempenho das bolhas de bloco de alta perspância,carregue bolhas ou blocos maiores.
Especificamente, ligue para a operação Put Blob ou Put Block com uma bolha ou tamanho de bloco superior a 4
MiB para contas de armazenamento padrão. Para uma bolha de bloco premium ou para contas de armazenamento
de Data Lake Gen2, utilize um tamanho de bloco ou bolha superior a 256 KiB.
Limites de ficheiros Azure
Para obter mais informações sobre os limites dos Ficheiros Azure, consulte os objetivos de escalabilidade e
desempenho dos Ficheiros Azure.
Tamanho mínimo de uma parte de Sem mínimos; pagar à medida que vai 100 GiB; provisionado
arquivo
Entrada de destino para uma única até 300 MiB/sec*, até 60 MiB/seg, Ver valores de entrada de partilha de
parte de ficheiro ficheiros premium e valores de egress
A máxima saída para uma única parte Ver a entrada padrão do alvo de Até 6.204 MiB/s
de ficheiro partilha de ficheiros
Ingresso máximo para uma única parte Ver a entrada padrão do alvo de Até 4.136 MiB/s
de ficheiro partilha de ficheiros
Cabos abertos máximos por ficheiro 2.000 pegas abertas 2.000 pegas abertas
*O padrão nas ações de ficheiros padrão é 5 TiB, consulte Enable e crie grandes partilhas de ficheiros para os
detalhes sobre como aumentar a escala de ações de ficheiro padrão até 100 TiB.
Limites de Sincronização de Ficheiros Azure
REC URSO DEST IN O L IM IT E RÍGIDO
NOTE
Um ponto final Azure File Sync pode escalar até ao tamanho de uma partilha de ficheiros Azure. Se o limite de tamanho da
ação do ficheiro Azure for atingido, a sincronização não poderá funcionar.
Taxa máxima de pedidos por conta de armazenamento 20.000 mensagens por segundo, o que pressupõe um
tamanho de mensagem 1-KiB
Entrada de destino para uma única fila (mensagens 1-KiB) Até 2.000 mensagens por segundo
Número de tabelas numa conta de armazenamento Azure Limitado apenas pela capacidade da conta de armazenamento
Número de divisórias em uma mesa Limitado apenas pela capacidade da conta de armazenamento
Número máximo de imóveis numa entidade de mesa 255 (incluindo as três propriedades do sistema, Par titionKey,
RowKey , e Timestamp)
Tamanho total máximo de uma propriedade individual numa Varia por tipo de propriedade. Para mais informações, consulte
entidade Os Tipos de Propriedade na Compreensão do Modelode
Dados do Serviço de Tabela .
Tamanho de uma transação de grupo de entidades Uma transação pode incluir no máximo 100 entidades e a
carga útil deve ter menos de 4 MiB em tamanho. Uma
transação de grupo de entidades pode incluir uma atualização
para uma entidade apenas uma vez.
Taxa máxima de pedidos por conta de armazenamento 20.000 transações por segundo, o que pressupõe uma
dimensão de 1-KiB
Entrada de destino para uma única partilha de tabela (1 KiB- Até 2.000 entidades por segundo
entidades)
IMPORTANT
Para um desempenho ótimo, limite o número de discos altamente utilizados ligados à máquina virtual para evitar uma
possível aceleração. Se todos os discos ligados não forem altamente utilizados ao mesmo tempo, a máquina virtual pode
suportar um maior número de discos.
REC URSO L IM IT E
Para contas de armazenamento standard: Uma conta de armazenamento Standard tem uma taxa total
máxima de pedido de 20.000 IOPS. O total de IOPS em todos os seus discos de máquina virtual numa conta
de armazenamento Standard não deve exceder este limite.
Pode calcular aproximadamente o número de discos altamente utilizados suportados por uma única conta
de armazenamento Standard com base no limite da taxa de pedido. Por exemplo, para um VM de nível
básico, o número máximo de discos altamente utilizados é de cerca de 66, que é de 20.000/300 IOPS por
disco. O número máximo de discos altamente utilizados para um VM de nível Standard é de cerca de 40, que
é de 20.000/500 IOPS por disco.
Para contas de armazenamento Premium: Uma conta de armazenamento Premium tem uma taxa
máxima de produção total de 50 Gbps. O débito total em todos os discos da VM não deve exceder este
limite.
Para obter mais informações, consulte os tamanhos da máquina virtual.
Discos de máquinas virtuais geridos
Discos geridos por HDD padrão
T IP O
DE
DISC O
STA N
DA RD S4 S6 S10 S15 S20 S30 S40 S50 S60 S70 S80
IOPs Até Até Até Até Até Até Até Até Até Até Até
por 500 500 500 500 500 500 500 500 1.300 2.000 2.000
disco
Débit Até Até Até Até Até Até Até Até 60 Até Até Até
o por 60 60 60 60 60 60 60 MB/se 300 500 500
disco MB/se MB/se MB/se MB/se MB/se MB/se MB/se g MB/se MB/se MB/se
g g g g g g g g g g
TA
MA
NH
OS
SSD
PA D
RÃ
O E1 E2 E3 E4 E6 E10 E15 E20 E30 E40 E50 E60 E70 E80
IOP Até Até Até Até Até Até Até Até Até Até Até Até Até Até
s 500 500 500 500 500 500 500 500 500 500 500 2.00 4.00 6.00
por 0 0 0
disc
o
Déb Até Até Até Até Até Até Até Até Até Até Até Até Até Até
ito 60 60 60 60 60 60 60 60 60 60 60 400 600 750
por MB/ MB/ MB/ MB/ MB/ MB/ MB/ MB/ MB/ MB/ MB/ MB/ MB/ MB/
disc seg seg seg seg seg seg seg seg seg seg seg seg seg seg
o
OPS 120 120 120 120 240 500 110 230 500 7.50 7.50 16 18 20
pro 0 0 0 0 0 000 000 000
viso
s
por
disc
o
Pro 25 25 25 25 50 100 125 150 200 250 250 500 750 900
duç MB/ MB/ MB/ MB/ MB/ MB/ MB/ MB/ MB/ MB/ MB/ MB/ MB/ MB/
ão a seg seg seg seg seg seg seg seg seg seg seg seg seg seg
pro
visi
ona
da
por
disc
o
Dur 30 30 30 30 30 30 30 30
açã min min min min min min min min
o
máx
ima
da
expl
osã
o
Eleg Não Não Não Não Não Não Não Não Sim, Sim, Sim, Sim, Sim, Sim,
ível até até até até até até
par um um um um um um
a ano. ano. ano. ano. ano. ano.
rese
rva
REC URSO L IM IT E
Discos de máquinas vir tuais não geridos premium: limites por conta
REC URSO L IM IT E
1
1Ingress refere-se a todos os dados dos pedidos enviados para uma conta de armazenamento. A Egress refere-se a
T IP O DE DISC O
DE
A RM A Z EN A M EN
TO P REM IUM P 10 P 20 P 30 P 40 P 50
Tamanho do 128 GiB 512 GiB 1.024 GiB (1 TB) 2.048 GiB (2 TB) 4.095 GiB (4 TB)
disco
Potência máxima 100 MB/seg 150 MB/seg 200 MB/seg 250 MB/seg 250 MB/seg
por disco
REC URSO L IM IT E
Número máximo de horários por 168 Um horário para cada hora, todos os
modelo de largura de banda dias da semana.
Tamanho máximo de um volume 64 TB para StorSimple 8100 e StorSimple 8100 e StorSimple 8600 são
hierárquico em dispositivos físicos StorSimple 8600 dispositivos físicos.
Tamanho máximo de um volume 30 TB para StorSimple 8010 StorSimple 8010 e StorSimple 8020 são
hierárquico em dispositivos virtuais em 64 TB para StorSimple 8020 dispositivos virtuais em Azure que
Azure utilizam armazenamento Standard e
armazenamento Premium,
respectivamente.
IDEN T IF IC A DO R DE L IM IT E L IM IT E C O M EN TÁ RIO S
Tamanho máximo de um volume fixado 9 TB para StorSimple 8100 StorSimple 8100 e StorSimple 8600 são
localmente em dispositivos físicos 24 TB para StorSimple 8600 dispositivos físicos.
A maior leitura/escrita do cliente, 920/720 MB/seg com uma única Até duas vezes com MPIO e duas
quando servida a partir do nível SSD* interface de rede Ethernet de 10 interfaces de rede.
gigabits
*a potência máxima por tipo De/S foi medida com 100% de leitura e 100% de cenários de escrita. A produção real
pode ser mais baixa e depende da mistura de I/S e das condições de rede.
Número máximo de tarefas por região 1500 Cada subscrição pode ter até 1.500
postos de trabalho por região
geográfica.
REC URSO L IM IT E
Total de núcleos de VM por subscrição 201 por região. Suporte de contato para aumentar o limite.
Núcleos totais de VM Azure Spot por subscrição 201 por região. Suporte de contato para aumentar o limite.
VM por série, tais como Dv2 e F, núcleos por subscrição 201 por região. Suporte de contato para aumentar o limite.
1 Os limites padrão variam por tipo de categoria de oferta, como Free Trial e Pay-As-You-Go, e por séries, tais como
Dv2, F e G. Por exemplo, o padrão para subscrições do Acordo Empresarial é de 350.
2 Com o Gestor de Recursos Azure, os certificados são armazenados no Cofre de Chaves Azure. O número de
certificados é ilimitado para uma subscrição. Há um limite de 1-MB de certificados por implantação, que consiste
num único VM ou num conjunto de disponibilidade.
NOTE
Os núcleos de máquinas virtuais têm um limite total regional. Eles também têm um limite para séries regionais por tamanho,
como Dv2 e F. Estes limites são aplicados separadamente. Por exemplo, considere uma subscrição com um limite total de
núcleos de VM na região E.U.A. Leste de 30, um limite de núcleos de série A de 30 e um limite de núcleos de série D de 30.
Esta subscrição pode implementar 30 VMs A1, ou 30 VMs D1, ou uma combinação dos dois para não exceder um total de
30 núcleos. Um exemplo de uma combinação é 10 VMs A1 e 20 VMs D1.
Ver também
Compreender os limites e aumentos do Azure
Tamanhos de serviço de máquina virtual e nuvem para Azure
Tamanhos para Serviços cloud Azure
Regras de nomenclatura e restrições para recursos do Azure
Melhores Práticas do Serviço de Aplicações do Azure
28/04/2020 • 10 minutes to read • Edit Online
Este artigo resume as melhores práticas para a utilização do Serviço de Aplicações Azure.
Colocalização
Quando os recursos do Azure compõem uma solução como uma aplicação web e uma base de dados estão localizadas em diferentes regiões, pode ter os seguintes efeitos:
Maior latência na comunicação entre recursos
Encargos monetários para a transferência de dados de saída transporam regiões, tal como se nota na página de preços do Azure.
A colocalização na mesma região é o melhor para os recursos do Azure que compõem uma solução como uma aplicação web e uma conta de base de dados ou
armazenamento usada para conter conteúdo ou dados. Ao criar recursos, certifique-se de que estão na mesma região de Azure, a menos que tenha razões específicas para
não estar. Pode mover uma aplicação do App Service para a mesma região que a sua base de dados utilizando a funcionalidade de clonagem do Serviço de Aplicações
atualmente disponível para aplicações premium app Service Plan.
Se estiver a executar o Serviço de Aplicações no Linux numa máquina com vários núcleos, outra melhor prática é usar o PM2 para iniciar vários processos nonómetros para
executar a sua aplicação. Pode fazê-lo especificando um comando de arranque no seu recipiente.
Por exemplo, para iniciar quatro instâncias:
Quando novas aplicações noNó.js são implementadas para o Serviço de Aplicações Azure
A configuração padrão do Serviço de Aplicações Azure para aplicações Node.js destina-se a melhor atender às necessidades das aplicações mais comuns. Se a configuração
da sua app Node.js beneficiar de afinação personalizada para melhorar o desempenho ou otimizar o uso de recursos de recursos cpu/memória/rede, consulte as melhores
práticas e guia de resolução de problemas para aplicaçõesde nó no Serviço de Aplicações Azure . Este artigo descreve as definições de iisnode que poderá ter de configurar
para a sua aplicação Node.js, descreve os vários cenários ou problemas que a sua aplicação pode estar a enfrentar e mostra como lidar com estes problemas.
Passos Seguintes
Para obter mais informações sobre as melhores práticas, visite o App Service Diagnostics para descobrir as melhores práticas atol específicas do seu recurso.
Navegue para a sua Web App no portal Azure.
Clique em Diagnosticar e resolver problemas na navegação à esquerda, o que abre diagnósticos de serviço de aplicações.
Escolha o azulejo da página inicial das Melhores Práticas.
Clique em Boas Práticas para Disponibilidade & Desempenho ou Boas Práticas para Uma Configuração Ideal para ver o estado atual da sua aplicação no que
diz respeito a estas boas práticas.
Também pode utilizar este link para abrir diretamente os
https://ms.portal.azure.com/?
websitesextension_ext=asd.featurePath%3Ddetectors%2FParentAvailabilityAndPerformance#@microsoft.onmicrosoft.com/resource/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Micr
Diagnósticos do Serviço de Aplicações para o seu recurso: .
Resolução de erros intermitentes de ligação de saída
no Serviço de Aplicações Azure
29/04/2020 • 16 minutes to read • Edit Online
Este artigo ajuda-o a resolver erros de ligação intermitentes e problemas de desempenho relacionados no Serviço
de Aplicações Azure. Este tópico fornecerá mais informações sobre e metodologias de resolução de problemas
para, esgotamento das portas de tradução de rede de endereços de origem (SNAT). Se necessitar de mais ajuda em
qualquer ponto deste artigo, contacte os especialistas do Azure no MSDN Azure e nos fóruns stack Overflow. Em
alternativa, apresente um incidente de apoio ao Azure. Vá ao site de suporte do Azure e selecione Obter Supor te .
Sintomas
As aplicações e funções hospedadas no serviço Azure App podem apresentar um ou mais dos seguintes sintomas:
Tempos de resposta lentos em todos ou alguns dos casos de um plano de serviço.
Erros intermitentes 5xx ou Bad Gateway
Mensagens de erro de timeout
Não podia ligar-se a pontos finais externos (como SQLDB, Service Fabric, outros serviços de Aplicação, etc.)
Causa
Uma das principais causas destes sintomas é que a instância de aplicação não é capaz de abrir uma nova ligação ao
ponto final externo porque atingiu um dos seguintes limites:
Ligações TCP: Existe um limite para o número de ligações de saída que podem ser feitas. Isto está associado ao
tamanho do trabalhador utilizado.
Portas SNAT: Conforme discutido nas ligações de saída em Azure,o Azure utiliza a tradução de endereços de
rede fonte (SNAT) e um Balancer de Carga (não exposto aos clientes) para comunicar com pontos finais fora do
Azure no espaço público de endereços IP. Cada instância no serviço Azure App é inicialmente dada um número
pré-atribuído de 128 portas SNAT. Este limite afeta as ligações de abertura à mesma combinação de hospedeiro
e porta. Se a sua aplicação criar ligações a uma mistura de endereços e combinações de portas, não utilizará as
portas SNAT. As portas SNAT são usadas quando tem chamadas repetidas para o mesmo endereço e
combinação de porta. Uma vez libertada uma porta, a porta está disponível para reutilização conforme
necessário. O equilibrador de carga da Rede Azure recupera a porta SNAT das ligações fechadas apenas depois
de esperar 4 minutos.
Quando as aplicações ou funções abrem rapidamente uma nova ligação, podem esgotar rapidamente a sua quota
pré-atribuída das 128 portas. São então bloqueados até que uma nova porta SNAT fique disponível, quer através
da atribuição dinâmica de portas SNAT adicionais, quer através da reutilização de uma porta SNAT recuperada.
Aplicações ou funções bloqueadas devido a esta incapacidade de criar novas ligações começarão a experimentar
uma ou mais das questões descritas na secção sintomas deste artigo.
Evitando o problema
Evitar o problema da porta SNAT significa evitar a criação de novas ligações repetidamente ao mesmo hospedeiro
e porto.
As estratégias gerais para atenuar a exaustão portuária sNAT são discutidas na secção de resolução de problemas
das ligações de saída da documentação Azure. Destas estratégias, aplicam-se as seguintes aplicações e funções
hospedadas no serviço Azure App.
Modificar a aplicação para utilizar o pooling de ligação
Para juntar ligações HTTP, reveja as ligações Pool HTTP com httpClientFactory.
Para obter informações sobre o pooling de ligação do Servidor SQL, reveja o Pooling de Ligação do Servidor
SQL (ADO.NET).
Para implementar o agrupamento com aplicações-quadro da entidade, reveja o agrupamento DbContext.
Aqui está uma coleção de links para implementar o pool de Ligação por diferentes soluçãostack.
Nó
Por defeito, as ligações para o NodeJS não são mantidas vivas. Abaixo estão as bases de dados e pacotes populares
para o agrupamento de ligações que contêm exemplos de como implementá-los.
MySQL
MongoDB
PostgreSQL
SQL Server
HTTP Manter-se vivo
agentemantervivo
Node.js v13.9.0 Documentação
Java
Abaixo estão as bibliotecas populares utilizadas para o agrupamento de ligações JDBC que contêm exemplos de
como implementá-las: JDBC Connection Pooling.
Tomcat 8
C3p0
HikariCP
Apache DBCP
HTTP Connection Pooling
Gestão de Conexão Apache
Class PoolingHttpClientConnectionManager
PHP
Embora a PHP não suporte o pool de ligação, pode tentar utilizar ligações persistentes de base de dados ao seu
servidor back-end.
Servidor MySQL
Ligações MySQLi para versões mais recentes
mysql_pconnect versões mais antigas de PHP
Outras Fontes de Dados
Gestão de Ligações PHP
Python
MySQL
MongoDB
PostgreSQL
Servidor SQL (NOTA: SQLAlchemy pode ser usado com outras bases de dados além do Servidor MicrosoftSQL)
HTTP Keep-alive(Keep-Alive é automático ao utilizar sessões de sessões de objetos de sessão).
Para outros ambientes, fornecedor de revisão ou documentos específicos do condutor para a implementação do
agrupamento de ligações nas suas aplicações.
Modificar a aplicação para reutilizar ligações
Para obter indicações adicionais e exemplos sobre a gestão de ligações em funções Azure, reveja gerir as
ligações em Funções Azure.
Modificar a aplicação para usar uma lógica de retry menos agressiva
Para obter orientações e exemplos adicionais, reveja o padrão de retry.
Use vidas de manutenção para repor o tempo de saída inativo
Para implementar as vidas de keepalives para aplicações Node.js, reveja a minha aplicação de nó está a fazer
chamadas de saída excessivas.
Orientação adicional específica ao Serviço de Aplicações:
Um teste de carga deve simular dados do mundo real numa velocidade constante de alimentação. Testar
aplicações e funções sob o stress do mundo real pode identificar e resolver problemas de exaustão da porta
SNAT com antecedência.
Certifique-se de que os serviços de back-end podem devolver respostas rapidamente. Para problemas de
resolução de problemas de desempenho com base de dados Azure SQL, reveja os problemas de desempenho
da Troubleshoot Azure SQL Database com Insights Inteligentes.
Esforce o plano do Serviço de Aplicações para mais casos. Para obter mais informações sobre escala, consulte
Scale uma aplicação no Azure App Service. Cada instância de trabalhador num plano de serviço de aplicações é
atribuída a várias portas SNAT. Se espalhar o seu uso por mais casos, poderá obter o uso da porta SNAT por
exemplo abaixo do limite recomendado de 100 ligações de saída, por ponto final remoto único.
Considere mudar-se para o App Service Environment (ASE),onde lhe é atribuído um único endereço IP de saída,
e os limites para ligações e portas SNAT são muito mais elevados.
Evitar os limites de TCP de saída é mais fácil de resolver, uma vez que os limites são definidos pelo tamanho do seu
trabalhador. Pode ver os limites em Limites Numéricos Sandbox Cross VM - Ligações TCP
N ÍVEL ISO L A DO
N O M E- L IM IT E DESC RIÇ Ã O P EQ UEN O ( A 1) M ÉDIO ( A 2) GRA N DE ( A 3) ( A SE)
Para evitar limites de TCP de saída, pode aumentar o tamanho dos seus trabalhadores ou escalar horizontalmente.
Resolução de problemas
Conhecer os dois tipos de limites de ligação de saída e o que a sua aplicação faz, deve facilitar a resolução de
problemas. Se souber que a sua aplicação faz muitas chamadas para a mesma conta de armazenamento, pode
suspeitar de um limite de SNAT. Se a sua aplicação criar muitas chamadas para pontos finais por toda a internet,
suspeita-se que está a atingir o limite de VM.
Se desconhece o comportamento da aplicação o suficiente para determinar rapidamente a causa, existem algumas
ferramentas e técnicas disponíveis no Serviço de Aplicações para ajudar nessa determinação.
Encontre informações sobre atribuição de portas SNAT
Você pode usar diagnósticos de serviço de aplicativos para encontrar informações de atribuição de portas SNAT, e
observar a métrica de atribuição de portas SNAT de um site de Serviço de Aplicações. Para encontrar informações
sobre a atribuição de portas SNAT, siga os seguintes passos:
1. Para aceder aos diagnósticos do Serviço de Aplicações, navegue para a sua aplicação web do App Service ou
para o App Service Environment no portal Azure. Na navegação à esquerda, selecione Diagnosticar e
resolver problemas .
2. Selecione Categoria de Disponibilidade e Desempenho
3. Selecione azulejos de exaustão por porta SNAT na lista de azulejos disponíveis na categoria. A prática é mantê-
lo abaixo de 128. Se precisar, ainda pode abrir um bilhete de apoio e o engenheiro de apoio receberá a métrica
do back-end para si.
Note que, uma vez que o uso da porta SNAT não está disponível como métrica, não é possível nem
automaticamente com base na utilização da porta SNAT, nem configurar a escala automática com base na métrica
de atribuição de portas SNAT.
Ligações TCP e Portas SNAT
As ligações TCP e as portas SNAT não estão diretamente relacionadas. Um detetor de utilização de ligações TCP
está incluído na lâmina de diagnóstico e resolução de problemas de qualquer site do Serviço de Aplicações.
Procure a frase "ligações TCP" para encontrá-la.
As portas SNAT são utilizadas apenas para fluxos de rede externos, enquanto as ligações tcp totais incluem
ligações de retorno local.
Uma porta SNAT pode ser partilhada por diferentes fluxos, se os fluxos forem diferentes em protocolo,
endereço IP ou porta. A métrica de Ligações TCP conta todas as ligações TCP.
O limite de ligações TCP acontece ao nível da instância do trabalhador. O equilíbrio de carga de saída da Rede
Azure não utiliza a métrica de ligações TCP para a limitação da porta SNAT.
Os limites de ligações TCP são descritos nos limites numéricos Sandbox Cross VM - Ligações TCP
N ÍVEL ISO L A DO
N O M E- L IM IT E DESC RIÇ Ã O P EQ UEN O ( A 1) M ÉDIO ( A 2) GRA N DE ( A 3) ( A SE)
Informações adicionais
SNAT com Serviço de Aplicações
Problemas de desempenho lento de aplicações no Serviço de Aplicações Azure
Troubleshoot uma aplicação no Azure App Service
usando o Visual Studio
09/05/2020 • 51 minutes to read • Edit Online
Descrição geral
Este tutorial mostra como usar as ferramentas do Estúdio Visual para ajudar a desinpurar uma aplicação no App
Service,executando remotamente o modo de depuração ou visualizando registos de aplicações e registos de
servidores web.
Irá aprender:
Quais as funções de gestão de aplicações disponíveis no Estúdio Visual.
Como utilizar a vista remota do Estúdio Visual para fazer mudanças rápidas numa aplicação remota.
Como executar o modo de depuração remotamente enquanto um projeto está em execução em Azure, tanto
para uma aplicação como para um WebJob.
Como criar registos de rastreio de aplicações e vê-los enquanto a aplicação os está a criar.
Como visualizar os registos do servidor web, incluindo mensagens de erro detalhadas e rastreio de pedidos
falhados.
Como enviar registos de diagnóstico para uma conta de Armazenamento Azure e vê-los lá.
Se tiver o Visual Studio Ultimate, também pode utilizar o IntelliTrace para depurar. O IntelliTrace não está coberto
neste tutorial.
Pré-requisitos
Este tutorial trabalha com o ambiente de desenvolvimento, o projeto web e a app App Service que criou na Create
uma aplicação ASP.NET no Azure App Service. Para as secções WebJobs, você precisará da aplicação que você cria
em Get Started com o Azure WebJobs SDK.
As amostras de código mostradas neste tutorial são para uma aplicação web C# MVC, mas os procedimentos de
resolução de problemas são os mesmos para aplicações De Base Visual e Formulários Web.
O tutorial assume que está a usar o Visual Studio 2019.
A função de registos de streaming funciona apenas para aplicações que visam o .NET Framework 4 ou posterior.
NOTE
Se descarregar um ficheiro de subscrição, guarde-o para uma pasta fora dos diretórios do código fonte (por
exemplo, na pasta Downloads) e, em seguida, elimine-o assim que a importação estiver concluída. Um utilizador
malicioso que obtém acesso ao ficheiro de subscrição pode editar, criar e eliminar os seus serviços Azure.
Para obter mais informações sobre a ligação aos recursos do Azure a partir do Estúdio Visual, consulte
Gerir Contas, Subscrições e Funções Administrativas.
2. No Ser ver Explorer, expanda o Azure e expanda o Serviço de Aplicações.
3. Expanda o grupo de recursos que inclui a app que criou na Create a ASP.NET app no Azure App Service, e,
em seguida, clique no nó da aplicação e clique em Definições de Visualização .
O separador Azure Web App aparece e pode ver lá as tarefas de gestão e configuração de aplicações que
estão disponíveis no Estúdio Visual.
Neste tutorial, você usará a exploração madeireira e rastreio de quedas. Também utilizará depuração
remota, mas utilizará um método diferente para o ativar.
Para obter informações sobre as definições de aplicações e caixas de cordas de ligação nesta janela,
consulte o Serviço de Aplicações Azure: Como funcionam as cordas de aplicação e as cordasde ligação .
Se quiser realizar uma tarefa de gestão de aplicações que não possa ser feita nesta janela, clique em Open
in Management Por tal para abrir uma janela de navegador para o portal Azure.
O Visual Studio abre o ficheiro Web.config a partir da aplicação remota e mostra [Remote] ao lado do
nome do ficheiro na barra de título.
3. Adicione a seguinte system.web linha ao elemento:
<customErrors mode="Off"></customErrors>
4. Atualize o navegador que está a mostrar a mensagem de erro inútil, e agora recebe uma mensagem de
erro detalhada, como o seguinte exemplo:
8. Clique em Publicar . Depois de terminar a implementação e o seu navegador abrir para o URL Azure da
sua aplicação, feche o navegador.
9. No Ser ver Explorer, clique na sua aplicação e clique em Attach Debugger .
O navegador abre automaticamente para a sua página inicial em funcionamento em Azure. Pode ter de
esperar 20 segundos enquanto o Azure configura o servidor para depuração. Este atraso só acontece na
primeira vez que corre em modo dedepura numa aplicação num período de 48 horas. Quando se volta a
depurar no mesmo período, não há atraso.
NOTE
Se tiver algum problema em iniciar o desordeiro, tente fazê-lo utilizando o Cloud Explorer em vez do Ser ver
Explorer .
O tempo que vê é o tempo do servidor Azure, que pode estar num fuso horário diferente do seu
computador local.
12. Introduza um novo currentTime valor para a variável, como "Agora a correr em Azure".
13. Pressione F5 para continuar a correr.
A página Sobre em execução em Azure exibe o novo valor que introduziu na variável actualTime.
WebJobs de depuração remoto
Esta secção mostra como depurar remotamente o projeto e a aplicação que cria no Get Started com o Azure
WebJobs SDK.
As funcionalidades apresentadas nesta secção estão disponíveis apenas no Visual Studio 2013 com o Update 4 ou
mais tarde.
A depuração remota só funciona com WebJobs contínuos. WebJobs programado e a pedido não suporta mato.
1. Abra o projeto web que criou no Get Started com o Azure WebJobs SDK.
2. No projeto ContosoAdsWebJob, abra Functions.cs.
3. Detete um ponto de GnerateThumbnail rutura na primeira declaração do método.
4. No Solution Explorer, clique no projeto web (não no projeto WebJob) e clique em Publicar .
5. Na lista de drop-down do Profile, selecione o mesmo perfil que utilizou no Get Started com o Azure
WebJobs SDK.
6. Clique no separador Definições e mude de configuração para Debug, e depois clique em Publicar .
O Visual Studio implementa os projetos web e WebJob, e o seu navegador abre-se para o URL Azure da
sua aplicação.
7. No Ser ver Explorer, expanda o Azure > App Ser vice > o seu grupo de recursos > a sua
aplicação > WebJobs > Continuous , e, em seguida, clique no clique direito ContosoAdsWebJob .
8. Clique em prender debugger .
O navegador abre automaticamente para a sua página inicial em funcionamento em Azure. Pode ter de
esperar 20 segundos enquanto o Azure configura o servidor para depuração. Este atraso só acontece na
primeira vez que corre em modo dedepura numa aplicação num período de 48 horas. Quando se volta a
depurar no mesmo período, não há atraso.
9. No navegador web que é aberto à página inicial dos Anúncios Contoso, crie um novo anúncio.
A criação de um anúncio faz com que seja criada uma mensagem de fila, que é captada pelo WebJob e
processada. Quando o WebJobs SDK chama a função para processar a mensagem de fila, o código atinge o
seu ponto de rutura.
10. Quando o debugger quebra no seu ponto de rutura, você pode examinar e alterar valores variáveis
enquanto o programa está executando a nuvem. Na seguinte ilustração, o debugger mostra o conteúdo do
objeto GenerateThumbnail blobInfo que foi passado para o método.
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
Se descobrires que o debugger não entra no código que queres depurar, talvez tenhas de mudar a
definição do Just My Code. Para mais informações, consulte Especifique se deve depurar apenaso código do
utilizador usando just o meu código em estúdio visual .
Um temporizador começa no servidor quando ativa a função de depuração remota e, após 48 horas, a
funcionalidade é desligada automaticamente. Este limite de 48 horas é feito por razões de segurança e
desempenho. Pode facilmente voltar a ligar a funcionalidade quantas vezes quiser. Recomendamos deixá-lo
desativado quando não estiver a depurar ativamente.
Pode ligar manualmente o debugger a qualquer processo, não apenas o processo da aplicação (w3wp.exe).
Para obter mais informações sobre como usar o modo dedepura no Estúdio Visual, consulte Debugging no
Visual Studio.
Os seguintes passos mostram como visualizar a saída de vestígios numa página web, sem compilar em
modo dedepura.
2. Abra o ficheiro Web.config da aplicação (o que <system.diagnostics> está localizado na pasta do
</configuration> projeto) e adicione um elemento na extremidade do ficheiro pouco antes do elemento
de fecho:
<system.diagnostics>
<trace>
<listeners>
<add name="WebPageTraceListener"
type="System.Web.WebPageTraceListener,
System.Web,
Version=4.0.0.0,
Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a" />
</listeners>
</trace>
</system.diagnostics>
4. Na página 'Rastreio de Aplicação', clique em Ver Detalhes na primeira linha (não na linha BrowserLink).
A página Dedados de Pedido aparece e na secção Informação de Rastreio Index vê a saída a partir das
declarações de vestígios que adicionou ao método.
No entanto, a habilitação trace.axd numa aplicação de produção não é recomendada por razões de
segurança. Nas seguintes secções, verá uma forma mais fácil de ler registos de rastreio numa aplicação do
App Service.
Veja a saída de rastreio em Azure
1. No Solution Explorer, clique no projeto web e clique em Publicar .
2. Na caixa de diálogo Publicar Web, clique em Publicar .
Depois de o Visual Studio publicar a sua atualização, abre uma janela de navegador para a sua página
inicial (assumindo que não limpou o URL de Destino no separador Ligação).
3. No Ser ver Explorer, clique na sua aplicação e selecione 'Ver Registos de Streaming'.
A janela Saída mostra que está ligado ao serviço de streaming de log e adiciona uma linha de notificação
a cada minuto que passa sem um registo para exibir.
4. Na janela do navegador que mostra a página inicial da sua aplicação, clique em Contato .
Dentro de alguns segundos, a saída do Contact traço de nível de erro que adicionou ao método aparece
na janela de saída.
O Visual Studio só está a mostrar vestígios de nível de erro porque é a definição padrão quando ativa o
serviço de monitorização de registos. Quando cria uma nova aplicação do App Service, todo o registo é
desativado por padrão, como viu quando abriu a página de definições mais cedo:
7. Na janela do navegador que agora mostra a sua página de Contacto, clique em Casa, clique em About , e,
em seguida, clique em Contato .
Dentro de alguns segundos, a janela de saída mostra toda a sua saída de rastreio.
Nesta secção, ativou e desativou o registo através das definições da aplicação. Também pode ativar e
desativar os ouvintes modificando o ficheiro Web.config. No entanto, modificar o ficheiro Web.config faz
com que o domínio da aplicação recicle, ao mesmo tempo que permitir o registo através da configuração
da aplicação não o faz. Se o problema demorar muito tempo a reproduzir-se, ou for intermitente, reciclar o
domínio da aplicação pode "consertá-lo" e forçá-lo a esperar até que volte a acontecer. Ativar diagnósticos
em Azure permite-lhe começar a capturar informações de erro imediatamente sem reciclar o domínio da
aplicação.
Características da janela de saída
O separador de registos Microsoft Azure da Janela de Saída tem vários botões e uma caixa de texto:
3. Na caixa de diálogo Microsoft Azure Logging Options, selecione registos do servidor Web e, em
seguida, clique em OK .
4. Na janela do navegador que mostra a aplicação, clique em Casa, depois clique em About , e depois clique
em Contato .
Os registos de aplicação geralmente aparecem primeiro, seguidos dos registos do servidor web. Talvez
tenha que esperar um pouco para que os troncos apareçam.
Por predefinição, quando ativa os registos do servidor web utilizando o Visual Studio, o Azure escreve os registos
para o sistema de ficheiros. Como alternativa, pode utilizar o portal Azure para especificar que os registos do
servidor web devem ser escritos a um recipiente de blob numa conta de armazenamento.
Se utilizar o portal para permitir o registo do servidor web numa conta de armazenamento Azure e, em seguida,
desativar o registo no Estúdio Visual, quando reativa o registo no Estúdio Visual, as definições da sua conta de
armazenamento são restauradas.
Após vários segundos, o registo de erros detalhado aparece na janela de saída do Estúdio Visual.
O File Explorer abre-se para a pasta Downloads com o ficheiro descarregado selecionado.
2. Extraio o ficheiro .zip e vê a seguinte estrutura de pasta:
NOTE
Quando iniciar sessão, tem de utilizar o nome completo do utilizador com o nome da aplicação prefixado. Por
exemplo, se introduzir "myid" como nome de utilizador e o site for "o meu exemplo", você entra como
"myexample\myid".
5. Numa nova janela de navegador, vá ao URL que é mostrado sob o nome de anfitrião FTP ou ftps na
página 'Over view' para a sua aplicação.
6. Inscreva-se utilizando as credenciais FTP que criou anteriormente (incluindo o prefixo de nome da
aplicação para o nome do utilizador).
O navegador mostra a pasta raiz da aplicação.
7. Abra a pasta LogFiles.
8. Abra a pasta que se chama W3SVC mais um valor numérico.
A pasta contém ficheiros XML para quaisquer erros que tenham sido registados após o rastreio de pedido
falhado ativado, e um ficheiro XSL que um navegador pode usar para formatar o XML.
9. Clique no ficheiro XML para obter o pedido falhado para o qual pretende ver informações de rastreio.
A ilustração que se segue mostra parte da informação de rastreio para um erro de amostra.
Próximos Passos
Já viu como o Visual Studio facilita a visualização de registos criados por uma aplicação de Serviço de Aplicações.
As seguintes secções fornecem ligações a mais recursos sobre temas relacionados:
Resolução de problemas do Serviço de Aplicações
Depuração em Estúdio Visual
Depuração remota em Azure
Rastreio em aplicações ASP.NET
Analisar registos de servidores web
Analisar registos de rastreio de pedidos falhados
Depuração de serviços de nuvem
Resolução de problemas do Serviço de Aplicações
Para obter mais informações sobre aplicações de resolução de problemas no Azure App Service, consulte os
seguintes recursos:
Como monitorizar aplicações
Investigar fugas de memória no Serviço de Aplicações Azure com o Estúdio Visual 2013. Post de blog da
Microsoft ALM sobre funcionalidades do Estúdio Visual para analisar problemas de memória geridos.
Ferramentas online do Azure App Service que deve conhecer. Post de blog de Amit Apple.
Para ajudar com uma questão específica de resolução de problemas, inicie um fio num dos seguintes fóruns:
O fórum Azure no local ASP.NET.
O fórum Azure no Microsoft Q&A.
StackOverflow.com.
Depuração em Estúdio Visual
Para obter mais informações sobre como usar o modo dedepura no Visual Studio, consulte Debugging no Visual
Studio e Debugging Tips com Visual Studio 2010.
Depuração remota em Azure
Para obter mais informações sobre depuração remota para aplicações de Serviço saem e WebJobs, consulte os
seguintes recursos:
Introdução ao Serviço de Aplicações Azure Debugging Remoto.
Introdução ao Serviço de Aplicações Azure Debugging Remoto parte 2 - Depuração remota
Introdução à Depuração Remota no Serviço de Aplicações Azure parte 3 - Ambiente multi-instância e GIT
Depuração webJobs (vídeo)
Se a sua aplicação utilizar um Back-end Azur API ou Mobile Services e tiver de o desmarcar, consulte Debugging
.NET Backend em Visual Studio.
Rastreio em aplicações ASP.NET
Não existem introduções completas e atualizadas para ASP.NET rastreio disponível na Internet. O melhor que
pode fazer é começar com materiais introdutórios antigos escritos para Formulários Web porque o MVC ainda
não existia, e complementá-lo com publicações de blogmais recentes que se focam em questões específicas.
Alguns bons lugares para começar são os seguintes recursos:
Monitorização e Telemetria (Building Real-World Cloud Apps with Azure).
Capítulo do e-book com recomendações para rastreio em aplicações em nuvem Azure.
ASP.NET Rastreio
Antigo, mas ainda um bom recurso para uma introdução básica ao assunto.
Rastrear ouvintes
Informações sobre os ouvintes de rastreio, mas não menciona o WebPageTraceListener.
Walkthrough: Integração ASP.NET Rastreio com Sistema.Rastreio de Diagnósticos
Este artigo também é antigo, mas inclui algumas informações adicionais que o artigo introdutório não
cobre.
Rastreio em ASP.NET Vistas da Navalha MVC
Além de rastrear nas vistas da Razor, o post também explica como criar um filtro de erro para registar
todas as exceções não tratadas numa aplicação MVC. Para obter informações sobre como registar todas as
exceções não tratadas numa aplicação de Formulários Web, consulte o exemplo Global.asax em Completo
Exemplo para Manipuladores de Erros na MSDN. Em MVC ou Formulários Web, se pretender registar
certas exceções, mas deixar que o manuseamento de quadros predefinidos faça efeito para eles, pode
capturar e relançar como no seguinte exemplo:
try
{
// Your code that might cause an exception to be thrown.
}
catch (Exception ex)
{
Trace.TraceError("Exception: " + ex.ToString());
throw;
}
Diagnósticos de streaming Trace Logging from the Azure Command Line (plus Glimpse!)
Como usar a linha de comando para fazer o que este tutorial mostra como fazer no Estúdio Visual. O
vislumbre é uma ferramenta para depurar aplicações ASP.NET.
Usando web apps Logging and Diagnostics - com David Ebbo e Streaming Logs de Web Apps - com David
Ebbo
Vídeos de Scott Hanselman e David Ebbo.
Para a exploração por erros, uma alternativa à escrita do seu próprio código de rastreio é utilizar uma estrutura de
registo de código aberto, como elmah. Para mais informações, consulte as publicações de Scott Hanselman sobre
a ELMAH.
Além disso, não precisa de System.Diagnostics usar ASP.NET ou rastrear para obter registos de streaming do
Azure. O serviço de streaming de ficheiros de streaming da aplicação App Service transmite qualquer .txt, .html,
ou .log file que encontre na pasta LogFiles. Por isso, poderá criar o seu próprio sistema de registo que escreve
para o sistema de ficheiros da aplicação, e o seu ficheiro é automaticamente transmitido e descarregado. Tudo o
que tem de fazer é escrever código de aplicação que cria ficheiros na pasta d:\home\logfiles.
Analisar registos de servidores web
Para obter mais informações sobre a análise de registos de servidores web, consulte os seguintes recursos:
LogParser
Uma ferramenta para visualizar dados em registos de servidores web (ficheiros .log).
Resolução de problemas Problemas de Problemas problemas de desempenho ou erros de aplicação usando
LogParser
Uma introdução à ferramenta Log Parser que pode utilizar para analisar registos de servidores web.
Posts de blog de Robert McMurray sobre a utilização de LogParser
O código de estado HTTP no IIS 7.0, IIS 7.5 e IIS 8.0
Analisar registos de rastreio de pedidos falhados
O website da Microsoft TechNet inclui uma secção de Rastreio de Pedidos Falhados, que pode ser útil para
entender como usar estes registos. No entanto, esta documentação centra-se principalmente na configuração do
rastreio de pedidos falhados no IIS, o que não pode fazer no Azure App Service.
Boas práticas e guia de resolução de problemas para
aplicações de nó no Azure App Service Windows
28/04/2020 • 26 minutes to read • Edit Online
Neste artigo, aprende as melhores práticas e passos de resolução de problemas para aplicações de nó em
execução no Azure App Service (com iisnode).
WARNING
Tenha cuidado ao utilizar passos de resolução de problemas no seu local de produção. A recomendação é resolver problemas
na sua aplicação numa configuração de não produção, por exemplo, a sua ranhura de preparação e quando o problema for
corrigido, troque a sua ranhura de preparação com a sua ranhura de produção.
Configuração IISNODE
Este ficheiro de esquema sintetiza todas as definições que pode configurar para iisnode. Algumas das definições
que são úteis para a sua aplicação:
nodeProcessCountPerApplication
Esta definição controla o número de processos de nó que são lançados por aplicação IIS. O valor predefinido é 1.
Pode lançar tantos nó.ex como a contagem vCPU VM, alterando o valor para 0. O valor recomendado é 0 para a
maioria das aplicações para que possa utilizar todos os vCPUs na sua máquina. O nó.exe é de roscar-se para que
um nó.exe consuma um máximo de 1 vCPU. Para obter o máximo desempenho da sua aplicação de nó, você deseja
usar todos os vCPUs.
nodeProcessCommandLine
Esta definição controla o caminho para o nó.exe. Pode definir este valor para apontar para a sua versão nó.exe.
maxConcurrentRequestsPerProcess
Esta definição controla o número máximo de pedidos simultâneos enviados por ísóno a cada nó.exe. No Serviço de
Aplicações Azure, o valor padrão é Infinito. Pode configurar o valor dependendo do número de pedidos que a sua
aplicação recebe e da rapidez com que a sua aplicação processa cada pedido.
maxNamePipeConnectionRetry
Esta definição controla o número máximo de vezes que o iisnode se retenta fazendo a ligação no tubo nomeado
para enviar os pedidos para o nó.exe. Esta definição em combinação com o denominadoPipeConnectionRetryDelay
determina o tempo total de cada pedido dentro do iisnode. O valor padrão é de 200 no Serviço de Aplicações
Azure. Tempo total em segundos = (maxNamedPipeConnectionRetry * chamadoPipeConnectionRetryDelay) /
1000
nomeadoPipeConnectionRetryDelay
Esta definição controla a quantidade de tempo (em ms) que o iisnode aguarda entre cada nova tentativa para
enviar o pedido para nó.exe sobre o tubo nomeado. O valor padrão é de 250 ms. Tempo total em segundos =
(maxNamedPipeConnectionRetry * chamadoPipeConnectionRetryDelay) / 1000
Por padrão, o tempo total de iisnode no Serviço * de Aplicações Azure é de 200 250 ms = 50 segundos.
logDirectory
Esta definição controla o diretório onde os logs de iisnode stdout/stderr. O valor padrão é o iisnode, que é relativo
ao diretório principal do script (diretório onde o servidor principal.js está presente)
debuggerExtensionDll
Esta definição controla a versão do iisnódodo do inspetor de nós que utiliza ao depurar a aplicação do nó.
Atualmente, o iisnode-inspector-0.7.3.dll e o iisnode-inspector.dll são os dois únicos valores válidos para esta
definição. O valor por defeito é iisnode-inspector-0.7.3.dll. A versão iisnode-inspector-0.7.3.dll utiliza o nó-
inspector-0.7.3 e utiliza tomadas web. Ative as tomadas web no seu webapp Azure para utilizar esta versão.
Consulte https://ranjithblogs.azurewebsites.net/?p=98 mais detalhes sobre como configurar o iisnode para utilizar
o novo inspetor de nó.
flushResponse
O comportamento padrão do IIS é que tampona dados de resposta até 4 MB antes de flushing, ou até o final da
resposta, o que vier primeiro. O iisnode oferece uma configuração de configuração para sobrepor este
comportamento: para descarregar um fragmento do corpo da entidade iisnode/@flushResponse de resposta
assim que o iisnode o receber do nó.exe, é necessário definir o atributo em web.config para 'verdadeiro':
<configuration>
<system.webServer>
<!-- ... -->
<iisnode flushResponse="true" />
</system.webServer>
</configuration>
Ativar a descarga de cada fragmento do corpo da entidade de resposta adiciona a sobrecarga de desempenho que
reduz a entrada do sistema em ~5% (a partir de v0.1.13). O melhor para analisar esta definição apenas para
pontos <location> finais que requerem streaming de resposta (por exemplo, utilizando o elemento na web.config)
Além disso, para aplicações de streaming, também deve definir a respostaBufferLimit do seu manipulador de
iisnode para 0.
<handlers>
<add name="iisnode" path="app.js" verb="\*" modules="iisnode" responseBufferLimit="0"/>
</handlers>
watchfiles
Uma lista separada do ponto-semi-cólon de ficheiros que são vigiadas para alterações. Qualquer alteração a um
ficheiro faz com que a aplicação recicle. Cada entrada consiste num nome de diretório opcional, bem como num
nome de ficheiro exigido, relativo ao diretório onde se encontra o principal ponto de entrada da aplicação. Cartões
selvagens são permitidos apenas na porção de nome de ficheiro. O valor predefinido é *.js;iisnode.yml
reciclarSignalEnabled
O valor predefinido é false. Se ativado, a aplicação do nó pode ligar-se_a_um tubo denominado (variável ambiental
IISNODE CONTROL PIPE) e enviar uma mensagem de "reciclagem". Isto faz com que o W3WP recicle
graciosamente.
idlePageOutTimePeriod
O valor predefinido é 0, o que significa que esta funcionalidade está desativada. Quando definido para um valor
superior a 0, o iisnode irá páginar todos os seus processos infantis em milissegundos. Consulte a documentação
para entender o que significa a página. Esta definição é útil para aplicações que consomem uma elevada
quantidade de memória e querem pager a memória para o disco ocasionalmente para libertar ram.
WARNING
Tenha cuidado ao ativar as seguintes definições de configuração nas aplicações de produção. A recomendação é não permitir
que se instem aplicações de produção ao vivo.
debugHeaderEnabled
O valor predefinido é false. Se for definido como verdadeiro, o iisnode adiciona um cabeçalho iisnode-debug de
resposta HTTP a cada resposta HTTP que envia o valor do iisnode-debug cabeçalho é um URL. Peças individuais de
informação de diagnóstico podem ser obtidas olhando para o fragmento de URL, no entanto, uma visualização
está disponível abrindo o URL num navegador.
exploração madeireiraHabilitada
Esta definição controla o registo de stdout e stderr por ísóno. Iisnode captura stdout/stderr dos processos de nó
que lança e escreve para o diretório especificado na definição 'logDirectory'. Uma vez ativada, a sua aplicação
escreve registos para o sistema de ficheiros e, dependendo da quantidade de registo feito pela aplicação, pode
haver implicações de desempenho.
devErrorsEnabled
O valor predefinido é false. Quando definido como verdadeiro, o iisnode apresenta o código de estado HTTP e o
código de erro Win32 no seu navegador. O código win32 é útil para depurar certos tipos de problemas.
depuraçãoEnabled (não permitir no local de produção ao vivo )
Esta definição controla a função de depuração. Iisnode está integrado com o inspetor do nó. Ao ativar esta
definição, permite a depuração da aplicação do nó. Ao permitir esta definição, o iisnode cria ficheiros de inspetor
de nós no diretório 'debuggerVirtualDir' no primeiro pedido de depuração para a sua aplicação de nó. Você pode
carregar o inspetor de nó, enviando um pedido para http://yoursite/server.js/debug . Pode controlar o segmento
DEURL de depuração com a definição 'debuggerPathSegment'. Por predefinição, debuggerPathSegment='debug'.
Pode definir debuggerPathSegment um GUID, por exemplo, para que seja mais difícil ser descoberto por outros.
Leia as aplicações Debug node.js no Windows para obter mais detalhes sobre a depuração.
IMPORTANT
Este exemplo pressupõe que tem 4 nós.exe em execução no seu VM. Se tiver um número diferente de nó.exe em execução
no VM, deve modificar a definição maxSockets em conformidade.
function HandleRequest() {
WriteConsoleLog();
}
function WriteConsoleLog() {
for(let i=0;i<99999;++i) {
console.log('hello world');
}
}
function HandleRequest() {
profiler.startProfiling('HandleRequest');
WriteConsoleLog();
fs.writeFileSync('profile.cpuprofile', JSON.stringify(profiler.stopProfiling('HandleRequest')));
}
Os perfis de código anteriores da função WriteConsoleLog e, em seguida, escreve a saída de perfil para o ficheiro
'profile.cpuprofile' no seu site wwwroot. Envie um pedido para o seu pedido. Você vê um ficheiro
'profile.cpuprofile' criado sob o seu site wwwroot.
Descarregue este ficheiro e abra-o com as Ferramentas Chrome F12. Prima F12 no Chrome e, em seguida, escolha
o separador Perfis. Escolha o botão carregar. Selecione o ficheiro profile.cpuprofile do seu perfil que
descarregou. Clique no perfil que acabou de carregar.
Pode ver que 95% do tempo foi consumido pela função WriteConsoleLog. A saída também mostra os números de
linha exatos e os ficheiros de origem que causaram o problema.
A minha aplicação de nó está a consumir demasiada memória.
Se a sua aplicação estiver a consumir demasiada memória, vê um aviso do Serviço de Aplicações Azure no seu
portal sobre o elevado consumo de memória. Pode configurar monitores para vigiar certas métricas. Ao verificar o
uso da memória no Painel do Portal Azure,certifique-se de verificar se há memória dos valores MAX para que não
perca os valores de pico.
Deteção de fugas e Heap Diff para nó.js
Pode usar o memwatch do nó para ajudá-lo a identificar fugas de memória. Pode instalar-se memwatch tal como o
perfil v8 e editar o seu código para capturar e difundir pilhas para identificar as fugas de memória na sua
aplicação.
O meu nó.exe's está a ser morto aleatoriamente.
Há algumas razões pelas quais o nó.exe é desligado aleatoriamente:
1. A sua aplicação está a lançar\\exceções\\não apanhadas – Verifique d: registo de registos em casa Ficheiro de
registo de erros.txt para obter os detalhes sobre a exceção lançada. Este ficheiro tem o traço da pilha para
ajudar a depurar e corrigir a sua aplicação.
2. A sua aplicação está a consumir demasiada memória, o que está a afetar outros processos desde o início. Se a
memória VM total estiver perto de 100%, o seu nó.exe pode ser morto pelo gestor do processo. O gestor de
processos mata alguns processos para permitir que outros processos possam fazer algum trabalho. Para
corrigir este problema, desmepresente o seu pedido de fugas de memória. Se a sua aplicação necessitar de
grandes quantidades de memória, aumente até um VM maior (o que aumenta a RAM disponível para o VM).
A minha aplicação de nó não começa.
Se a sua aplicação estiver a devolver 500 Erros quando começar, pode haver algumas razões:
1. O nó.exe não está presente no local certo. Verifique a definição de nodeProcessCommandLine.
2. O ficheiro principal do script não está presente no local correto. Verifique web.config e certifique-se de que o
nome do ficheiro principal do script na secção de manipuladores corresponde ao ficheiro principal do script.
3. A configuração Web.config não está correta – verifique os nomes/valores das definições.
4. Arranque a frio – A sua aplicação está a demorar muito tempo a ser iniciada. Se a sua aplicação demorar mais *
do que (maxNamedPipeConnectionRetrynome chamadoPipeConnectionRetryDelay) / 1000 segundos, o
iisnode devolve um erro de 500. Aumente os valores destas definições para corresponder à hora de início da
sua aplicação para evitar que o iisnode saia e desatifique o erro de 500.
A minha aplicação de nó despenhou-se.
A sua aplicação está a d:\\home\\LogFiles\\Application\\logging-errors.txt lançar exceções não apanhadas –
Verifique o ficheiro para obter os detalhes da exceção lançada. Este ficheiro tem o traço da pilha para ajudar a
diagnosticar e corrigir a sua aplicação.
A minha aplicação de nó leva muito tempo para começar (Início frio )
A causa comum para longos tempos de início_de aplicação é um elevado número de ficheiros nos módulos do nó.
A aplicação tenta carregar a maioria destes ficheiros quando começa. Por predefinição, uma vez que os seus
ficheiros estão armazenados na partilha da rede no Serviço de Aplicações Azure, carregar muitos ficheiros pode
demorar algum tempo. Algumas soluções para tornar este processo mais rápido são:
1. Certifique-se de que tem uma estrutura de dependência plana e nenhuma dependência duplicada utilizando o
npm3 para instalar os seus módulos.
2. Tente carregar os_módulos de nó preguiçosos e não carregue todos os módulos no início da aplicação. Para os
módulos de carga preguiçosos, a chamada a exigir ('módulo') deve ser feita quando realmente precisa do
módulo dentro da função antes da primeira execução do código do módulo.
3. O Azure App Service oferece uma funcionalidade chamada cache local. Esta funcionalidade copia o seu
conteúdo desde a partilha de rede até ao disco local no VM. Como os ficheiros são locais,_o tempo de carga dos
módulos de nó é muito mais rápido.
Node.exe tem uma NODE_PENDING_PIPE_INSTANCES definição chamada . No Serviço de Aplicações Azure, este valor
está definido para 5000. O que significa que o nó.exe pode aceitar 5000 pedidos de cada vez no cano nomeado.
Este valor deve ser bom o suficiente para a maioria das aplicações de nó que estão em execução no Serviço de
Aplicações Azure. Você não deve ver 503.1003 no Azure App Service devido ao alto valor para o
NODE_PENDING_PIPE_INSTANCES
Mais recursos
Siga estes links para saber mais sobre aplicações no nó.js no Serviço de Aplicações Azure.
Introdução às aplicações Web Node.js no Serviço de Aplicações do Azure
Como depurar uma aplicação Web Node.js no App Service do Azure
Utilizar Módulos do Node.js com aplicações do Azure
Web Apps do App Service do Azure: Node.js
Centro de Programadores do Node.js
Explorar a Consola de Depuração do Kudu Super Secreta
Resolução de problemas ERROS HTTP de "502 bad
gateway" e "serviço 503 indisponível" no Azure App
Service
17/06/2020 • 8 minutes to read • Edit Online
"502 bad gateway" e "503 service inavailable" são erros comuns na sua aplicação hospedada no Azure App Service.
Este artigo ajuda-o a resolver estes erros.
Se precisar de mais ajuda em qualquer ponto deste artigo, pode contactar os especialistas da Azure nos fóruns
msdn azure e nos fóruns Stack Overflow. Em alternativa, também pode apresentar um incidente de suporte Azure.
Vá ao site de suporte do Azure e clique em Obter Supor te.
Sintoma
Quando navega na aplicação, devolve um erro HTTP "502 Bad Gateway" ou um erro HTTP "Serviço Indisponível"
HTTP.
Causa
Este problema é muitas vezes causado por problemas de nível de aplicação, tais como:
pedidos que demoram muito tempo
aplicação usando alta memória/CPU
aplicação crashing devido a uma exceção.
Também pode gerir a sua aplicação usando a Azure Powershell. Para obter mais informações, veja Using Azure
PowerShell with Azure Resource Manager (Utilizar o Azure PowerShell com o Azure Resource Manager).
Resolução de problemas problemas de desempenho
de aplicações lentas no Azure App Service
17/06/2020 • 17 minutes to read • Edit Online
Este artigo ajuda-o a resolver problemas de desempenho de aplicações lentas no Azure App Service.
Se precisar de mais ajuda em qualquer ponto deste artigo, pode contactar os especialistas da Azure nos fóruns
msdn azure e nos fóruns Stack Overflow. Em alternativa, também pode apresentar um incidente de suporte Azure.
Vá ao site de suporte do Azure e clique em Obter Supor te.
Sintoma
Quando navega na aplicação, as páginas carregam lentamente e às vezes o tempo limite.
Causa
Este problema é muitas vezes causado por problemas de nível de aplicação, tais como:
pedidos de rede demorando muito tempo
código de aplicação ou consultas de base de dados sendo ineficientes
aplicação usando alta memória/CPU
aplicação crashing devido a uma exceção
Pode ativar o Profiler Application Insights para começar a capturar vestígios de desempenho detalhados. Podes
aceder a vestígios capturados até há cinco dias, quando precisas de investigar que os problemas aconteceram no
passado. Pode escolher esta opção desde que tenha acesso ao recurso Application Insights da aplicação no portal
Azure.
O Application Insights Profiler fornece estatísticas sobre o tempo de resposta para cada chamada web e vestígios
que indicam qual a linha de código que causou as respostas lentas. Por vezes, a aplicação Do Serviço de Aplicações
é lenta porque determinado código não está escrito de forma performante. Exemplos incluem código sequencial
que pode ser executado em contenções de bloqueio de base de dados paralelas e não-existentes. A remoção destes
estrangulamentos no código aumenta o desempenho da aplicação, mas são difíceis de detetar sem configurar
vestígios e registos elaborados. Os vestígios recolhidos pelo Application Insights Profiler ajudam a identificar as
linhas de código que abrandam a aplicação e superam este desafio para aplicações do App Service.
Para obter mais informações, consulte Profiling aplicações ao vivo no Azure App Service com Application Insights.
U se p e r fi s r e m o t o s
No Azure App Service, aplicações web, aplicações API, back ends móveis e WebJobs podem ser perfilado
remotamente. Escolha esta opção se tiver acesso ao recurso da aplicação e souber reproduzir o problema, ou se
souber o intervalo de tempo exato que o problema de desempenho acontece.
O Perfil Remoto é útil se o uso do CPU do processo for elevado e o seu processo estiver a funcionar mais devagar
do que o esperado, ou se a latência dos pedidos HTTP for superior ao normal, pode perfilar remotamente o seu
processo e obter as pilhas de chamadas de amostragem do CPU para analisar a atividade do processo e codificar
caminhos quentes.
Para obter mais informações, consulte o suporte de perfis remotos no Serviço de Aplicações Azure.
C o n fi g u r a r o s v e st í g i o s d e d i a g n ó st i c o m a n u a l m e n t e
Se tiver acesso ao código fonte da aplicação web, o diagnóstico de aplicação permite-lhe capturar informações
produzidas por uma aplicação web. ASP.NET aplicações podem usar a System.Diagnostics.Trace classe para
registar informações no registo de diagnósticos de aplicação. No entanto, é necessário alterar o código e recolocar
a sua aplicação. Este método é recomendado se a sua aplicação estiver a funcionar num ambiente de teste.
Para obter instruções detalhadas sobre como configurar a sua aplicação para registo de registo, consulte Ativar o
registo de diagnósticos de aplicações no Azure App Service.
Utilize a ferramenta de diagnóstico
O App Service proporciona uma experiência inteligente e interativa para o ajudar a resolver problemas na sua
aplicação sem necessidade de configuração. Quando tiver problemas com a sua aplicação, a ferramenta de
diagnóstico irá indicar o que é errado guiá-lo para as informações certas para resolver e resolver o problema de
forma mais fácil e rápida.
Para aceder aos diagnósticos do Serviço de Aplicações, navegue para a sua app app App Service ou App Service
Environment no portal Azure. Na navegação à esquerda, clique no Diagnóstico e resolva problemas.
Use a consola Kudu Debug
O App Service vem com uma consola de depuração que podes usar para depurar, explorar, carregar ficheiros, bem
como pontos finais JSON para obter informações sobre o teu ambiente. Esta consola chama-se Consola Kudu ou o
Painel de Instrumentos SCM para a sua aplicação.
Pode aceder a este dashboard indo ao link https:// O nome da sua < aplicação>.scm.azurewebsites.net/ .
Algumas das coisas que Kudu fornece são:
configurações de ambiente para a sua aplicação
fluxo de log
despejo de diagnóstico
depurar consola na qual pode executar cmdlets Powershell e comandos básicos DOS.
Outra característica útil da Kudu é que, caso a sua aplicação esteja a lançar exceções de primeira oportunidade,
pode usar a Kudu e a ferramenta SysInternals Procdump para criar despejos de memória. Estes despejos de
memória são instantâneos do processo e podem muitas vezes ajudá-lo a resolver problemas mais complicados
com a sua app.
Para obter mais informações sobre as funcionalidades disponíveis em Kudu, consulte as ferramentas Azure
DevOps que deve conhecer.
3. Atenuar a questão
Dimensione a aplicação
No Azure App Service, para maior desempenho e produção, pode ajustar a escala em que está a executar a sua
aplicação. O escalonamento de uma aplicação envolve duas ações relacionadas: alterar o seu plano de Serviço de
Aplicações para um nível de preços mais elevado e configurar determinadas definições depois de ter mudado para
o nível de preços mais elevado.
Para obter mais informações sobre o dimensionamento, consulte Scale uma aplicação no Azure App Service.
Além disso, pode optar por executar a sua aplicação em mais de um caso. A escala não só lhe proporciona mais
capacidade de processamento, como também lhe dá alguma tolerância à falha. Se o processo se der em curso
numa instância, as outras instâncias continuam a servir pedidos.
Pode configurar a escala para ser manual ou automática.
Use AutoHeal
O AutoHeal recicla o processo de trabalhador para a sua aplicação com base nas definições que escolhe (como
alterações de configuração, pedidos, limites baseados na memória ou o tempo necessário para executar um
pedido). Na maior parte do tempo, reciclar o processo é a forma mais rápida de recuperar de um problema.
Embora possa sempre reiniciar a aplicação diretamente dentro do portal Azure, o AutoHeal fá-la automaticamente
para si. Tudo o que precisa fazer é adicionar alguns gatilhos na web raiz.config para a sua aplicação. Estas
definições funcionariam da mesma forma, mesmo que a sua aplicação não seja uma aplicação .NET.
Para obter mais informações, consulte os Web Sites Azure de auto-cura.
Reiniciar a aplicação
Reiniciar é muitas vezes a forma mais simples de recuperar de problemas únicos. No portal Azure, na lâmina da
sua aplicação, tem as opções para parar ou reiniciar a sua aplicação.
Também pode gerir a sua aplicação usando a Azure Powershell. Para obter mais informações, veja Using Azure
PowerShell with Azure Resource Manager (Utilizar o Azure PowerShell com o Azure Resource Manager).
Problemas de domínio e problemas de certificado
TLS/SSL no Serviço de Aplicações Azure
29/04/2020 • 26 minutes to read • Edit Online
Este artigo lista problemas comuns que poderá encontrar quando configura rumar um certificado de domínio ou
TLS/SSL para as suas aplicações web no Azure App Service. Descreve também possíveis causas e soluções para
estes problemas.
Se precisar de mais ajuda em qualquer ponto deste artigo, pode contactar os especialistas do Azure nos fóruns
mSDN e Stack Overflow. Em alternativa, pode apresentar um incidente de apoio ao Azure. Vá ao site de suporte do
Azure e selecione Obter Supor te .
NOTE
Este artigo foi atualizado para utilizar o novo módulo AZ do Azure PowerShell. Pode continuar a utilizar o módulo AzureRM,
que continuará a receber correções de erros até, pelo menos, dezembro de 2020. Para obter mais informações sobre o novo
módulo Az e a compatibilidade do AzureRM, veja Apresentação do novo módulo Az do Azure PowerShell. Para obter
instruções de instalação do módulo Az, veja Instalar o Azure PowerShell.
Problemas de certificado
Não é possível adicionar um certificado TLS/SSL vinculativo a uma aplicação
Sintoma
Quando adiciona uma ligação TLS, recebe a seguinte mensagem de erro:
"Não adicionou a ligação SSL. Não é possível definir certificado para VIP existente porque outro VIP já usa esse
certificado."
Causa
Este problema pode ocorrer se tiver várias ligações SSL baseadas em IP para o mesmo endereço IP em várias
aplicações. Por exemplo, a app A tem um SSL baseado em IP com um certificado antigo. A App B tem um SSL
baseado em IP com um novo certificado para o mesmo endereço IP. Ao atualizar a aplicação TLS vinculando-se com
o novo certificado, falha com este erro porque o mesmo endereço IP está a ser usado para outra aplicação.
Solução
Para corrigir este problema, utilize um dos seguintes métodos:
Elimine a ligação SSL baseada em IP na aplicação que utiliza o certificado antigo.
Crie uma nova ligação SSL baseada em IP que utilize o novo certificado.
Não pode apagar um certificado
Sintoma
Quando tenta apagar um certificado, recebe a seguinte mensagem de erro:
"Não pode ndo apagar o certificado porque está atualmente a ser utilizado numa ligação TLS/SSL. A ligação TLS
deve ser removida antes de poder eliminar o certificado."
Causa
Este problema pode ocorrer se outra aplicação usar o certificado.
Solução
Remova a ligação TLS para esse certificado das aplicações. Em seguida, tente apagar o certificado. Se ainda não
conseguir apagar o certificado, limpe a cache do navegador de Internet e abra o portal Azure numa nova janela do
navegador. Em seguida, tente apagar o certificado.
Não pode comprar um certificado de Serviço de Aplicações
Sintoma
Não é possível comprar um certificado de Serviço de Aplicações Azure no portal Azure.
Causa e solução
Este problema pode ocorrer por qualquer uma das seguintes razões:
O plano de Serviço de Aplicações é Gratuito ou Partilhado. Estes níveis de preços não suportam TLS.
Solução : Atualize o plano do Serviço de Aplicações para a App para Standard.
A subscrição não tem um cartão de crédito válido.
Solução : Adicione um cartão de crédito válido à sua subscrição.
A oferta de subscrição não suporta a aquisição de um certificado de Serviço de Aplicações, como o
Microsoft Student.
Solução : Atualize a sua subscrição.
A subscrição atingiu o limite de compras que são permitidas numa subscrição.
Solução : Os certificados do Serviço de Aplicações têm um limite de 10 compras de certificados para os
tipos de subscrição Pay-As-You-Go e EA. Para outros tipos de subscrição, o limite é 3. Para aumentar o limite,
contacte o suporte azure.
O certificado do Serviço de Aplicações foi marcado como fraude. Recebeu a seguinte mensagem de erro: "O
seu certificado foi sinalizado por possível fraude. O pedido está atualmente a ser analisado. Se o certificado
não for utilizável dentro de 24 horas, contacte o Suporte Azure."
Solução : Se o certificado estiver marcado como fraude e não for resolvido após 24 horas, siga estes passos:
1. Inicie sessão no portal do Azure.
2. Vá aos Certificados de Serviço de Aplicações e selecione o certificado.
3. Selecione passo de configuração > do certificado2: Verifique > a verificação do domínio . Este
passo envia um aviso de e-mail ao fornecedor de certificados Azure para resolver o problema.
Problemas de domínio
Comprou um certificado TLS/SSL para o domínio errado
Sintoma
Comprou um certificado de Serviço de Aplicações para o domínio errado. Não é possível atualizar o certificado
para utilizar o domínio correto.
Solução
Apague esse certificado e, em seguida, compre um novo certificado.
Se o certificado atual que usa o domínio errado estiver no estado "Emitido", também será cobrado para esse
certificado. Os certificados do Serviço de Aplicações não são reembolsáveis, mas pode contactar o suporte do
Azure para ver se existem outras opções.
Um certificado de Serviço de Aplicações foi renovado, mas a aplicação mostra o antigo certificado
Sintoma
O certificado de Serviço de Aplicações foi renovado, mas a aplicação que utiliza o certificado de Serviço de
Aplicações ainda está a usar o certificado antigo. Além disso, recebeu um aviso de que o protocolo HTTPS é
necessário.
Causa
O Serviço de Aplicações sincroniza automaticamente o seu certificado dentro de 48 horas. Quando roda ou atualiza
um certificado, por vezes o pedido ainda está a recuperar o certificado antigo e não o certificado recém-atualizado.
A razão é que o trabalho para sincronizar o recurso de certificado ainda não funcionou. Clique em Sync. A operação
de sincronização atualiza automaticamente as encadernações do nome de anfitrião para o certificado no Serviço de
Aplicações sem causar qualquer inatividade nas suas apps.
Solução
Pode forçar uma sincronização do certificado:
1. Inicie sessão no portal do Azure. Selecione Certificados de Serviço de Aplicações e, em seguida, selecione o
certificado.
2. Selecione Rekey e Sync, e, em seguida, selecione Sync . A sincronização leva algum tempo para terminar.
3. Quando a sincronização estiver concluída, vê a seguinte notificação: "Atualizou com sucesso todos os recursos
com o certificado mais recente."
A verificação de domínio não está a funcionar
Sintoma
O certificado do Serviço de Aplicações requer verificação de domínio antes de o certificado estar pronto a ser
utilizado. Quando selecionar Verificar, o processo falha.
Solução
Verifique manualmente o seu domínio adicionando um registo TXT:
1. Vá ao fornecedor do Serviço de Nomes de Domínio (DNS) que acolhe o seu nome de domínio.
2. Adicione um registo TXT para o seu domínio que utiliza o valor do símbolo de domínio que é mostrado no
portal Azure.
Aguarde alguns minutos para que a propagação do DNS se escorra e, em seguida, selecione o botão Refresh para
desencadear a verificação.
Como alternativa, pode utilizar o método da página web HTML para verificar manualmente o seu domínio. Este
método permite à autoridade do certificado confirmar a propriedade do domínio do domínio para o que o
certificado é emitido.
1. Crie um ficheiro HTML que se chame {domain verification token}.html. O conteúdo deste ficheiro deve ser o
valor da ficha de verificação de domínio.
2. Faça upload deste ficheiro na raiz do servidor web que está hospedando o seu domínio.
3. Selecione Refresh para verificar o estado do certificado. Pode levar alguns minutos para a verificação terminar.
Por exemplo, se estiver a comprar um certificado padrão para azure.com com o token de
https://azure.com/1234abcd.html verificação de domínio 1234abcd, um pedido web feito deve devolver 1234abcd.
IMPORTANT
Uma ordem de certificado tem apenas 15 dias para completar a operação de verificação de domínio. Após 15 dias, a
autoridade do certificado nega a certidão e não é cobrado pelo certificado. Nesta situação, apague este certificado e tente
novamente.
T IP O DE REGISTO A N F IT RIÃ O A P O N TA R PA RA
TXT @ <app-name>.azurewebsites.net
NOTE
Algumas das diretrizes abaixo só podem funcionar em Serviços de Aplicações Windows ou Linux. Por exemplo, os Serviços de
Aplicações Linux funcionam em modo de 64 bits por padrão.
Este artigo tem respostas a perguntas frequentes (PERGUNTAS) sobre problemas de desempenho de aplicações
para a funcionalidade de Aplicações Web do Azure App Service.
Se o seu problema azure não for abordado neste artigo, visite os fóruns do Azure sobre mSDN e Stack Overflow.
Pode publicar o seu problema nestes fóruns, ou publicar @AzureSupport no Twitter. Também pode apresentar um
pedido de apoio azure. Para submeter um pedido de apoio, na página de suporte do Azure, selecione Obter
supor te .
Onde posso aprender mais sobre quotas e limites para vários planos de
Serviço de Aplicações?
Para obter informações sobre quotas e limites, consulte os limites do Serviço de Aplicações.
<system.webServer>
<tracing> <traceFailedRequests>
<remove path="*api*" />
<add path="*api*">
<traceAreas>
<add provider="ASP" verbosity="Verbose" />
<add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
<add provider="ISAPI Extension" verbosity="Verbose" />
<add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression,
Cache,RequestNotifications,Module,FastCGI" verbosity="Verbose" />
</traceAreas>
<failureDefinitions statusCodes="200-999" />
</add> </traceFailedRequests>
</tracing>
11. Para resolver problemas de desempenho lento, adicione esta configuração (se o pedido de captura estiver a
demorar mais de 30 segundos):
<system.webServer>
<tracing> <traceFailedRequests>
<remove path="*" />
<add path="*">
<traceAreas> <add provider="ASP" verbosity="Verbose" />
<add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
<add provider="ISAPI Extension" verbosity="Verbose" />
<add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression,
Cache,RequestNotifications,Module,FastCGI" verbosity="Verbose" />
</traceAreas>
<failureDefinitions timeTaken="00:00:30" statusCodes="200-999" />
</add> </traceFailedRequests>
</tracing>
Este artigo tem respostas a perguntas frequentes (PERGUNTAS) sobre questões de implementação para a
funcionalidade de Aplicações Web do Azure App Service.
Se o seu problema azure não for abordado neste artigo, visite os fóruns do Azure sobre mSDN e Stack Overflow.
Pode publicar o seu problema nestes fóruns, ou publicar @AzureSupport no Twitter. Também pode apresentar um
pedido de apoio azure. Para submeter um pedido de apoio, na página de suporte do Azure, selecione Obter
supor te .
Não posso usar o FTP no meu site e publicar o meu código. Como
posso resolver esta questão?
Para resolver as questões do PFT:
1. Verifique se está a introduzir o nome e credenciais corretas do anfitrião. Para obter informações detalhadas
sobre diferentes tipos de credenciais e como usá-las, consulte as credenciais de implantação.
2. Verifique se as portas FTP não estão bloqueadas por uma firewall. As portas devem ter estas definições:
Porta de ligação de controlo de FTP: 21
Porta de ligação de dados FTP: 989, 10001-10300
Este artigo tem respostas a perguntas frequentes (FAQs) sobre problemas com tecnologias de código aberto para a
funcionalidade de Aplicações Web do Azure App Service.
Se o seu problema azure não for abordado neste artigo, visite os fóruns do Azure sobre mSDN e Stack Overflow.
Pode publicar o seu problema nestes fóruns, ou publicar @AzureSupport no Twitter. Também pode apresentar um
pedido de apoio azure. Para submeter um pedido de apoio, na página de suporte do Azure, selecione Obter
supor te .
12. No portal Azure, no menu de aplicações web, reinicie a sua aplicação web.
Para obter mais informações, consulte ativar os registos de erro wordpress.
node -v
Modifique o ficheiro iisnode.yml. Alterar a versão Node.js no ficheiro iisnode.yml apenas define o ambiente
de tempo de execução que o iisnode utiliza. O seu Kudu cmd e outros ainda utilizam a versão Node.js que
está definida nas definições de App no portal Azure.
Para definir o iisnode.yml manualmente, crie um ficheiro iisnode.yml na pasta raiz da sua aplicação. No
ficheiro, inclua a seguinte linha:
Se vir este erro nos ficheiros de debug.log ou php_errors.log, a sua aplicação excede o número de ligações. Se
estiver hospedado no ClearDB, verifique o número de ligações disponíveis no seu plano de serviço.
The web application[ROOT] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when
the web application was stopped. To prevent a memory leak,the JDBC Driver has been forcibly unregistered
<httpPlatform>
<environmentVariables>
<environmentVariablename ="JAVA_OPTS" value=" -Djava.net.preferIPv4Stack=true
-Xms128M -classpath %CLASSPATH%;[Path to the sqljdbc*.jarfile]" />
</environmentVariables>
</httpPlatform>
Por que vejo erros quando tento copiar ficheiros de registos ao vivo?
Se tentar copiar ficheiros de registo ao vivo para uma aplicação Java (por exemplo, Tomcat), poderá ver este erro
FTP:
Error transferring file [filename] Copying files from remote side failed.
The process cannot access the file because it is being used by another process.
Este artigo tem respostas a perguntas frequentes (PERGUNTAS) sobre questões de configuração e gestão para a
funcionalidade de Aplicações Web do Azure App Service.
Se o seu problema azure não for abordado neste artigo, visite os fóruns do Azure sobre mSDN e Stack Overflow.
Pode publicar o seu problema nestes fóruns, ou publicar @AzureSupport no Twitter. Também pode apresentar um
pedido de apoio azure. Para submeter um pedido de apoio, na página de suporte do Azure, selecione Obter
supor te .
Estou a tentar usar ligações híbridas com o Servidor SQL. Por que vejo
a mensagem "System.OverflowException: A operação aritmética
resultou num transbordo"?
Se utilizar ligações híbridas para aceder ao SQL Server, uma atualização Microsoft .NET no dia 10 de maio de 2016,
pode causar falhas nas ligações. Pode ver esta mensagem:
Resolução
A exceção foi causada por um problema com o Gestor de Ligação Híbrido que entretanto foi corrigido. Certifique-
se de atualizar o seu Gestor de Ligação Híbrida para resolver este problema.
Porque é que tenho um erro quando tento ligar uma aplicação web do
App Service a uma rede virtual que está ligada ao ExpressRoute?
Se tentar ligar uma aplicação web Azure a uma rede virtual ligada ao Azure ExpressRoute, falha. A seguinte
mensagem aparece: "Gateway não é um gateway VPN."
Atualmente, não pode ter ligações VPN ponto-a-site a uma rede virtual que está ligada ao ExpressRoute. Uma VPN
e ExpressRoute ponto-a-site não podem coexistir para a mesma rede virtual. Para mais informações, consulte os
limites e limitações das ligações VPN expressRoute e do site-to-site.
Como posso ligar uma aplicação web do App Service a uma rede virtual
que tem um gateway de encaminhamento estático (baseado em
políticas) ?
Atualmente, a ligação de uma aplicação web do App Service a uma rede virtual que tenha um gateway de
encaminhamento estático (baseado em políticas) não é suportada. Se a sua rede virtual alvo já existir, deve ter VPN
de ponto a site ativado, com um gateway de encaminhamento dinâmico, antes de poder ser ligado a uma
aplicação. Se o seu portal estiver definido para o encaminhamento estático, não pode ativar uma VPN ponto-a-
local.
Para mais informações, consulte Integrar uma aplicação com uma rede virtual Azure.
ResourceID: /subscriptions/{SubscriptionID}/resourceGroups/Default-
Networking/providers/Microsoft.Web/hostingEnvironments/{ASEname}
Error:{"error":{"code":"ResourceDeploymentFailure","message":"The resource provision operation did not
complete within the allowed timeout period."}}
Para resolver isto, certifique-se de que nenhuma das seguintes condições é verdadeira:
A sub-rede é muito pequena.
A sub-rede não está vazia.
O ExpressRoute impede os requisitos de conectividade da rede de um Ambiente de Serviço de Aplicações.
Um mau Grupo de Segurança da Rede impede os requisitos de conectividade da rede de um Ambiente de
Serviço de Aplicações.
O túnel forçado está ligado.
Para mais informações, consulte questões frequentes ao implementar (criando) um novo Ambientede Serviço de
Aplicações Azure .
Para obter mais informações sobre webJobs agendados, consulte Criar um WebJob agendado utilizando uma
expressão Cron.
Durante a verificação do domínio de uma compra de certificado de serviço de aplicações, pode ver a seguinte
mensagem:
"O seu certificado foi sinalizado por possível fraude. O pedido está atualmente a ser analisado. Se o certificado não
for utilizável dentro de 24 horas, contacte o Suporte Azure."
Como a mensagem indica, este processo de verificação de fraude pode demorar até 24 horas para ser concluído.
Durante este tempo, continuará a ver a mensagem.
Se o seu certificado de Serviço de Aplicações continuar a mostrar esta mensagem após 24 horas, por favor,
execute o seguinte script PowerShell. O script contacta o fornecedor de certificados diretamente para resolver o
problema.
Connect-AzAccount
Set-AzContext -SubscriptionId <subId>
$actionProperties = @{
"Name"= "<Customer Email Address>"
};
Invoke-AzResourceAction -ResourceGroupName "<App Service Certificate Resource Group Name>" -ResourceType
Microsoft.CertificateRegistration/certificateOrders -ResourceName "<App Service Certificate Resource Name>" -
Action resendRequestEmails -Parameters $actionProperties -ApiVersion 2015-08-01 -Force
Também pode especificar os tipos específicos de MIME dinâmicos e estáticos que pretende comprimir. Para mais
informações, consulte a nossa resposta a uma questão do fórum em definições de httpCompression num simples
website Azure.
Se recebeu uma notificação de que o endereço IP de entrada da sua aplicação Azure App Service está a mudar, siga
as instruções deste artigo.
Passos seguintes
Este artigo explicou como se preparar para uma mudança de endereço IP que foi iniciada pelo Azure. Para obter
mais informações sobre endereços IP no Serviço de Aplicações Azure, consulte endereços IP de entrada e saída no
Serviço de Aplicações Azure.
Como preparar-se para uma mudança de endereço
IP de saída
28/04/2020 • 3 minutes to read • Edit Online
Se recebeu uma notificação de que os endereços IP de saída da sua aplicação Azure App Service estão a mudar,
siga as instruções deste artigo.
Passos seguintes
Este artigo explicou como se preparar para uma mudança de endereço IP que foi iniciada pelo Azure. Para obter
mais informações sobre endereços IP no Serviço de Aplicações Azure, consulte endereços IP de entrada e saída no
Serviço de Aplicações Azure.
Como preparar uma alteração de endereço IP SSL
30/04/2020 • 3 minutes to read • Edit Online
Se recebeu uma notificação de que o endereço IP SSL da sua aplicação Azure App Service está a mudar, siga as
instruções deste artigo para lançar o endereço IP sSL existente e atribua um novo.
Passos seguintes
Este artigo explicou como se preparar para uma mudança de endereço IP que foi iniciada pelo Azure. Para obter
mais informações sobre endereços IP no Serviço de Aplicações Azure, consulte endereços IP de entrada e saída no
Serviço de Aplicações Azure.