Provisionamento Azure local
.NET .NET Aspire simplifica o desenvolvimento local de aplicativos nativos da nuvem com seu atraente modelo de host de aplicativo. Esse modelo permite que você execute seu aplicativo localmente com a mesma configuração e serviços do Azure. Neste artigo, aprendes como provisionar recursos de Azure a partir do teu ambiente de desenvolvimento local através do anfitrião da app .NET.NET Aspire.
Observação
Para ser claro, os recursos são provisionados em Azure, mas o processo de provisionamento é iniciado a partir do seu ambiente de desenvolvimento local. Para otimizar sua experiência de desenvolvimento local, considere o uso de emulador ou contêineres quando disponíveis. Para obter mais informações, consulte Experiência típica do desenvolvedor.
Requerimentos
Este artigo pressupõe que você tenha uma conta Azure e uma assinatura. Se você não tiver uma conta Azure, você pode criar uma conta gratuita em Azure conta gratuita. Para que a funcionalidade de provisionamento funcione corretamente, você precisará ser autenticado com Azure. Certifique-se de que tem o Azure Developer CLI instalado. Além disso, você precisará fornecer alguns valores de configuração para que a lógica de provisionamento possa criar recursos em seu nome.
APIs de provisionamento de host de aplicativo
O hospedeiro da aplicação fornece um conjunto de APIs para expressar recursos Azure. Essas APIs estão disponíveis como métodos de extensão em bibliotecas de hospedagem .NET AspireAzure, estendendo a interface IDistributedApplicationBuilder. Quando você adiciona recursos de Azure ao host do aplicativo, eles adicionam a funcionalidade de provisionamento apropriada implicitamente. Em outras palavras, você não precisa chamar nenhuma API de provisionamento diretamente.
Quando o host do aplicativo é iniciado, a seguinte lógica de provisionamento é executada:
- A seção de configuração
Azure
é validada. - Quando inválido, o painel e a saída do host do aplicativo fornecem dicas sobre o que está faltando. Para obter mais informações, consulte Sugestões para valores de configuração ausentes.
- Quando os recursos Azure válidos são provisionados condicionalmente:
- Se uma implantação de Azure para um determinado recurso não existir, ela será criada e configurada como uma implantação.
- A configuração da referida implantação é carimbada com uma soma de verificação como meio de suportar apenas o provisionamento de recursos conforme necessário.
Usar recursos de Azure existentes
O host do aplicativo gerencia automaticamente o provisionamento de recursos Azure. Na primeira vez que o host do aplicativo é executado, ele provisiona os recursos especificados no host do aplicativo. As execuções subsequentes não provisionam os recursos novamente, a menos que a configuração do host do aplicativo seja alterada.
Se você já provisionou recursos de Azure fora do host do aplicativo e deseja usá-los, pode fornecer a cadeia de conexão com a API AddConnectionString, conforme mostrado no exemplo de Azure Key Vault a seguir:
// Service registration
var secrets = builder.ExecutionContext.IsPublishMode
? builder.AddAzureKeyVault("secrets")
: builder.AddConnectionString("secrets");
// Service consumption
builder.AddProject<Projects.ExampleProject>()
.WithReference(secrets)
O trecho de código anterior mostra como adicionar um Azure Key Vault ao host do aplicativo. A API AddAzureKeyVault é usada para adicionar o Azure Key Vault ao host do aplicativo. A API AddConnectionString
é usada para fornecer a cadeia de conexão ao host do aplicativo.
Como alternativa, para alguns recursos Azure, você pode optar por executá-los como um emulador com a API RunAsEmulator
. Esta API está disponível para integrações de armazenamento Azure Cosmos DB e Azure. Por exemplo, para executar AzureAzure Cosmos DB como um emulador, você pode usar o seguinte trecho de código:
var cosmos = builder.AddAzureCosmosDB("cosmos")
.RunAsEmulator();
A API RunAsEmulator configura um recurso Azure Cosmos DB a ser emulado usando o emulador Azure Cosmos DB com a API NoSQL.
.NET Aspire Azure integrações de hospedagem
Se estiver a utilizar recursos Azure no hospedeiro da aplicação, está a utilizar uma ou mais das integrações de alojamento .NET AspireAzure. Essas bibliotecas de hospedagem fornecem métodos de extensão para a interface IDistributedApplicationBuilder para adicionar recursos de Azure ao host do aplicativo.
Configuração
Ao utilizar recursos Azure em seu ambiente de desenvolvimento local, você precisa fornecer os valores de configuração necessários. Os valores de configuração são especificados na seção Azure
:
-
SubscriptionId
: O ID de subscrição Azure. -
AllowResourceGroupCreation
: Um valor booleano que indica se um novo grupo de recursos deve ser criado. -
ResourceGroup
: O nome do grupo de recursos a ser usado. -
Location
: A região Azure a ser usada.
Considere a seguinte configuração do exemplo appsettings.json:
{
"Azure": {
"SubscriptionId": "<Your subscription id>",
"AllowResourceGroupCreation": true,
"ResourceGroup": "<Valid resource group name>",
"Location": "<Valid Azure location>"
}
}
Importante
É recomendável armazenar esses valores como segredos do aplicativo. Para obter mais informações, consulte Gerenciar segredos do aplicativo.
Depois de configurar os valores necessários, você pode começar a provisionar recursos Azure em seu ambiente de desenvolvimento local.
Azure armazenamento de credenciais de provisionamento
O host da aplicação .NET Aspire usa um repositório de credenciais para a autenticação e autorização de recursos Azure. Dependendo da sua assinatura, o armazenamento de credenciais correto pode ser necessário para cenários de configuração multicliente.
Com o pacote NuGet de 📦Aspire.Hosting.Azure instalado, e se o host do aplicativo depender de recursos Azure, o armazenamento de credenciais Azure padrão depende do DefaultAzureCredential. Para alterar esse comportamento, você pode definir o valor de armazenamento de credenciais no arquivo appsettings.json, conforme mostrado no exemplo a seguir:
{
"Azure": {
"CredentialSource": "AzureCli"
}
}
Como acontece com todas as definições baseadas em configuração, você pode configurá-las com provedores alternativos, como segredos de usuário ou variáveis de ambiente . O valor Azure:CredentialSource
pode ser definido como um dos seguintes valores:
-
AzureCli
: Delegados ao AzureCliCredential. -
AzurePowerShell
: Delegados ao AzurePowerShellCredential. -
VisualStudio
: Delegados ao VisualStudioCredential. -
VisualStudioCode
: Delegados ao VisualStudioCodeCredential. -
AzureDeveloperCli
: Delegados ao AzureDeveloperCliCredential. -
InteractiveBrowser
: Delegar ao InteractiveBrowserCredential.
Dica
Para obter mais informações sobre a autenticação e autorização do Azure SDK, consulte Cadeias de Credenciais na biblioteca de identidades do Azure para .NET.
Suporte de ferramentas
No Visual Studio, você pode usar os Serviços Conectados para definir as configurações de provisionamento de Azure padrão. Selecione o projeto host da aplicação, clique com o botão direito do rato no nó Serviços Conectados e selecione Azure Configurações de Provisionamento de Recursos:
Isso abrirá uma caixa de diálogo onde você pode definir as configurações de provisionamento Azure, conforme mostrado na captura de tela a seguir:
Sugestões de valor de configuração ausentes
Quando a seção de configuração de Azure
está ausente, tem valores ausentes ou é inválida, o painel .NET.NET Aspire fornece dicas úteis. Por exemplo, considere um host de aplicação ao qual falta o valor de configuração SubscriptionId
que está a tentar utilizar um recurso Azure Key Vault. A página Recursos
Painel
Além disso, os logs do console exibir essas informações também, considere a seguinte captura de tela:
Limitações conhecidas
Depois de provisionar os recursos Azure desta forma, deve limpar manualmente os recursos no portal do Azure, uma vez que .NET Aspire não fornece um mecanismo interno para excluir os recursos Azure. A maneira mais fácil de conseguir isso é excluindo o grupo de recursos configurado. Isso pode ser feito no portal Azure ou usando a CLI Azure:
az group delete --name <ResourceGroupName>
Substitua <ResourceGroupName>
pelo nome do grupo de recursos que você deseja excluir. Para obter mais informações, consulte az group delete.