Partager via


Approvisionnement Azure local

.NET .NET Aspire simplifie le développement d’applications natives cloud locales avec son modèle hôte d’application attrayant. Ce modèle vous permet d’exécuter votre application localement avec la même configuration et les mêmes services que dans Azure. Dans cet article, vous allez apprendre à provisionner des ressources Azure à partir de votre environnement de développement local via l’hôte d’application .NET.NET Aspire.

Note

Pour être clair, les ressources sont approvisionnées dans Azure, mais le processus d’approvisionnement est lancé à partir de votre environnement de développement local. Pour optimiser votre expérience de développement local, envisagez d’utiliser l’émulateur ou les conteneurs lorsqu’ils sont disponibles. Pour plus d’informations, consultez expérience typique des développeurs.

Exigences

Cet article suppose que vous disposez d’un compte et d’un abonnement Azure. Si vous n’avez pas de compte Azure, vous pouvez en créer un gratuit à Azure compte gratuit. Pour que la fonctionnalité d’approvisionnement fonctionne correctement, vous devez être authentifié avec Azure. Assurez-vous que le Azure Developer CLI est installé. En outre, vous devez fournir certaines valeurs de configuration afin que la logique d’approvisionnement puisse créer des ressources en votre nom.

API d’approvisionnement de l’hôte d’application

L’hôte d’application fournit un ensemble d’API pour exprimer des ressources Azure. Ces API sont disponibles en tant que méthodes d’extension dans .NET AspireAzure bibliothèques d’hébergement, en étendant l’interface IDistributedApplicationBuilder. Lorsque vous ajoutez des ressources Azure à l'hôte de votre application, cela ajoute implicitement la fonctionnalité d’approvisionnement appropriée. En d’autres termes, vous n’avez pas besoin d’appeler directement des API d’approvisionnement.

Lorsque l’hôte de l’application démarre, la logique d’approvisionnement suivante est exécutée :

  1. La section de configuration Azure est validée.
  2. Lorsqu'elle est invalide, la sortie du tableau de bord et de l'hôte d'application donne des indices sur ce qui manque. Pour plus d’informations, consultez indicateurs de valeur de configuration manquants.
  3. Quand des ressources Azure valides sont approvisionnées de manière conditionnelle :
    1. Si un déploiement Azure pour une ressource donnée n’existe pas, il est créé et configuré en tant que déploiement.
    2. La configuration de ce déploiement est marquée avec une somme de contrôle comme moyen de prendre en charge uniquement les ressources d’approvisionnement si nécessaire.

Utiliser des ressources Azure existantes

L’hôte d’application gère automatiquement l’approvisionnement de ressources Azure. La première fois que l’hôte d’application s’exécute, il provisionne les ressources spécifiées dans l’hôte de l’application. Les exécutions suivantes ne provisionnent pas à nouveau les ressources, sauf si la configuration de l’hôte de l’application change.

Si vous avez déjà provisionné Azure ressources en dehors de l’hôte de l’application et que vous souhaitez les utiliser, vous pouvez fournir la chaîne de connexion avec l’API AddConnectionString, comme indiqué dans l’exemple de Azure Key Vault suivant :

// Service registration
var secrets = builder.ExecutionContext.IsPublishMode
    ? builder.AddAzureKeyVault("secrets")
    : builder.AddConnectionString("secrets");

// Service consumption
builder.AddProject<Projects.ExampleProject>()
       .WithReference(secrets)

L’extrait de code précédent montre comment ajouter un Azure Key Vault à l’hôte de l’application. L’API AddAzureKeyVault est utilisée pour ajouter le Azure Key Vault à l’hôte de l’application. L’API AddConnectionString est utilisée pour fournir la chaîne de connexion à l’hôte de l’application.

Sinon, pour certaines ressources Azure, vous pouvez choisir de les exécuter en tant qu’émulateur avec l’API RunAsEmulator. Cette API est disponible pour les intégrations Azure Cosmos DB et Azure Storage. Par exemple, pour exécuter AzureAzure Cosmos DB en tant qu’émulateur, vous pouvez utiliser l’extrait de code suivant :

var cosmos = builder.AddAzureCosmosDB("cosmos")
                    .RunAsEmulator();

L’API RunAsEmulator configure une ressource Azure Cosmos DB à émuler à l’aide de l’émulateur de Azure Cosmos DB avec l’API NoSQL.

intégrations d’hébergement .NET AspireAzure

Si vous utilisez des ressources Azure dans votre hôte d’application, vous utilisez une ou plusieurs des intégrations d’hébergement .NET AspireAzure. Ces bibliothèques d’hébergement fournissent des méthodes d’extension à l’interface IDistributedApplicationBuilder pour ajouter des ressources Azure à votre hôte d’application.

Configuration

Lorsque vous utilisez Azure ressources dans votre environnement de développement local, vous devez fournir les valeurs de configuration nécessaires. Les valeurs de configuration sont spécifiées dans la section Azure :

  • SubscriptionId: ID d’abonnement Azure.
  • AllowResourceGroupCreation: valeur booléenne qui indique s’il faut créer un groupe de ressources.
  • ResourceGroup: nom du groupe de ressources à utiliser.
  • Location: région Azure à utiliser.

Prenons l’exemple suivant de configuration appsettings.json :

{
  "Azure": {
    "SubscriptionId": "<Your subscription id>",
    "AllowResourceGroupCreation": true,
    "ResourceGroup": "<Valid resource group name>",
    "Location": "<Valid Azure location>"
  }
}

Important

Il est recommandé de stocker ces valeurs en tant que secrets d’application. Pour plus d’informations, consultez Gérer les secrets d’application.

Une fois que vous avez configuré les valeurs nécessaires, vous pouvez commencer à provisionner Azure ressources dans votre environnement de développement local.

magasin d’informations d’identification d’approvisionnement Azure

L’hôte d’application .NET Aspire utilise un stockage d’identifiants pour l’authentification et l’autorisation des ressources de Azure. Selon votre type d'abonnement, le magasin d’informations d’identification approprié peut être nécessaire pour les scénarios de provisionnement multi-locataire.

Avec le package NuGet 📦Aspire.Hébergement.Azure installé et si votre hôte d'application dépend des ressources Azure, le magasin par défaut des informations d'identification Azure s'appuie sur le DefaultAzureCredential. Pour modifier ce comportement, vous pouvez définir la valeur du stockage des informations d'identification dans le fichier appsettings.json, comme illustré dans l'exemple suivant :

{
  "Azure": {
    "CredentialSource": "AzureCli"
  }
}

Comme avec tous les paramètres basés sur la configuration , vous pouvez les configurer avec d’autres fournisseurs, tels que secrets utilisateur ou variables d’environnement. La valeur Azure:CredentialSource peut être définie sur l’une des valeurs suivantes :

Pourboire

Pour plus d’informations sur l’authentification et l’autorisation Azure SDK, consultez chaînes d’informations d’identification dans la bibliothèque Azure Identity pour .NET.

Support des outils

Dans Visual Studio, vous pouvez utiliser les services connectés pour configurer les paramètres d’approvisionnement par défaut Azure. Sélectionnez le projet hôte d’application, cliquez avec le bouton droit sur le nœud Services connectés, puis sélectionnez Azure paramètres de provisionnement des ressources:

Visual Studio 2022 : projet hôte d’application .NET Aspire, menu contextuel Services connectés.

Cette opération ouvre une boîte de dialogue dans laquelle vous pouvez configurer les paramètres d’approvisionnement Azure, comme illustré dans la capture d’écran suivante :

Visual Studio 2022 : boîte de dialogue Paramètres d’approvisionnement des ressources Azure.

Indicateurs de valeur de configuration manquants

Lorsque la section de configuration Azure est manquante, a des valeurs manquantes ou n’est pas valide, le tableau de bord .NET.NET Aspire fournit des conseils utiles. Par exemple, considérez un hôte d’application qui manque la valeur de configuration SubscriptionId qui tente d’utiliser une ressource Azure Key Vault. La page Resources indique le d’état en tant que configuration d’abonnement manquante :

.NET.NET Aspire tableau de bord : configuration d’abonnement manquante.

En outre, les journaux console affichent ces informations, consultez la capture d’écran suivante :

.NET.NET Aspire tableau de bord : logs de la console, configuration d’abonnement manquante.

Limitations connues

Après l’approvisionnement de Azure ressources de cette façon, vous devez nettoyer manuellement les ressources dans le portail Azure, car .NET Aspire ne fournit pas de mécanisme intégré pour supprimer les ressources Azure. Pour ce faire, le moyen le plus simple consiste à supprimer le groupe de ressources configuré. Vous pouvez effectuer cette opération dans le portail Azure ou à l’aide de l’interface CLI Azure :

az group delete --name <ResourceGroupName>

Remplacez <ResourceGroupName> par le nom du groupe de ressources que vous souhaitez supprimer. Pour plus d’informations, consultez la commande suivante : az group delete.