Étendre un modèle azd en ajoutant un service Azure

Après avoir créé un nouveau modèle CLI développeur (azd) Azure ou commencé à partir d’un modèle existant, vous pouvez étendre et faire évoluer son application et son infrastructure à mesure que vos besoins changent. Ce tutoriel montre comment ajouter un nouveau service Azure à un modèle sans compter sur un module que le modèle fournit déjà.

Vous allez commencer par le hello-azd modèle, créer un module Bicep qui définit une ressource Azure Translator, référencer le module à partir du point d'entrée de l'infrastructure du modèle et exposer ses sorties en tant que azd valeurs d'environnement. Le tutoriel se concentre sur l’extension de l’infrastructure et ne modifie pas le code de l’application.

Note

Vous pouvez apporter les modifications suivantes directement ou avec l’aide d’un assistant de codage IA. Quelle que soit la méthode de création, passez en revue les fichiers résultants et validez le modèle avant le déploiement.

Prerequisites

Pour terminer ce tutoriel, vous avez besoin de ce qui suit :

  • Azure Developer CLI installé.
  • Un abonnement Azure.
  • Autorisation de créer des ressources Azure dans l’abonnement.
  • Répertoire vide pour le modèle initialisé.

Initialiser le modèle

Ouvrez un terminal dans un répertoire vide, puis initialisez le hello-azd modèle dans ce répertoire :

azd init --template hello-azd .

Le modèle inclut les éléments suivants :

  • Une application C# déployée dans Azure Container Apps en tant que service aca dans azure.yaml.
  • Identité managée affectée par l’utilisateur pour l’application.
  • Un compte stockage Azure avec un conteneur d’objets blob et une table.
  • Azure Container Registry et un environnement de Azure Container Apps.
  • Modules Bicep réutilisables sous infra/core.

Pour obtenir des conseils sur la sélection et l’examen d’un modèle avant l’initialisation, consultez Démarrer à partir d’un modèle existant.

Créer un module Translator

Créez un fichier nommé infra/translator.bicep, manuellement ou avec l’aide d’un assistant de codage IA. Ce nouveau module est autonome et ne dépend pas des modules du modèle de départ :

@description('Name of the Azure Translator resource.')
param name string

@description('Azure region for the resource.')
param location string

@description('Tags to apply to the resource.')
param tags object = {}

@description('Pricing tier for Azure Translator.')
@allowed([
  'F0'
  'S1'
])
param sku string = 'F0'

resource translator 'Microsoft.CognitiveServices/accounts@2023-05-01' = {
  name: name
  location: location
  kind: 'TextTranslation'
  sku: {
    name: sku
  }
  properties: {
    customSubDomainName: name
    disableLocalAuth: true
    publicNetworkAccess: 'Enabled'
  }
  tags: tags
}

output name string = translator.name
output endpoint string = translator.properties.endpoint

Le module utilise le TextTranslation type de ressource et désactive l’authentification par clé locale. Le F0 niveau est utile pour l’évaluation, mais n’autorise qu’une seule ressource Translator gratuite par abonnement. Utilisez S1 si l’abonnement contient déjà une F0 ressource ou si le projet nécessite un niveau payant.

Important

Cet exemple d’introduction active le point de terminaison public afin de pouvoir approvisionner la ressource sans ajouter d’infrastructure réseau. Avant d’utiliser ce modèle en production, évaluez les points de terminaison privés, les contrôles d’accès réseau, la surveillance et les exigences de sécurité de votre organisation.

Référencer le module à partir de main.bicep

Le modèle hello-azd définit le groupe de ressources rg ainsi que les valeurs location, tags et resourceToken dans infra/main.bicep. Vous pouvez effectuer cette modification manuellement ou inviter un assistant IA à l’ajouter. Ajoutez le module suivant après la déclaration de rg ressource :

module translator './translator.bicep' = {
  name: 'translator'
  scope: rg
  params: {
    name: 'translator-${resourceToken}'
    location: location
    tags: tags
  }
}

La scope propriété déploie le module dans le groupe de ressources créé par le modèle. La valeur existante resourceToken rend le nom de ressource Translator distinct pour chaque environnement.

Exporter les résultats de Translator

Ajoutez les sorties suivantes à la fin de infra/main.bicep:

output AZURE_TRANSLATOR_NAME string = translator.outputs.name
output AZURE_TRANSLATOR_ENDPOINT string = translator.outputs.endpoint

Après le déploiement, azd enregistre ces données de sortie non secrètes dans l’environnement actif. Une modification ultérieure du code d’application peut utiliser ces valeurs pour localiser la ressource Translator.

Approvisionner et vérifier l’infrastructure

Provisionnez l’infrastructure du modèle sans déployer son code d’application :

azd provision

Exécutez et vérifiez azd env get-values que la sortie inclut AZURE_TRANSLATOR_NAME et AZURE_TRANSLATOR_ENDPOINT. Dans le portail Azure, vérifiez que le groupe de ressources contient une ressource Azure Translator.

À ce stade, le modèle provisionne le service IA, mais ne connecte pas l’exemple d’application à celui-ci. Pour finaliser cette intégration, configurez un accès selon le principe du moindre privilège pour l’identité managée de l’application, fournissez le point de terminaison à l’application et ajoutez un client Traducteur au code de l’application. Pour plus d’informations, consultez la documentation Azure Translator.

Nettoyer les ressources

Lorsque vous n’avez plus besoin des ressources, supprimez-les pour éviter les frais continus :

azd down --purge

Demander de l’aide

Pour plus d’informations sur la façon de déposer un bogue, de demander de l’aide ou de proposer une nouvelle fonctionnalité pour l’interface CLI Azure développeur, visitez la page troubleshooting et support.