Een azd-sjabloon uitbreiden door een Azure-service toe te voegen

Nadat u een nieuwe Azure Developer CLI-sjabloon (azd) hebt gebouwd of een bestaande sjabloon hebt gestart, kunt u de toepassing en infrastructuur uitbreiden en ontwikkelen naarmate uw vereisten veranderen. In deze zelfstudie ziet u hoe u een nieuwe Azure-service toevoegt aan een sjabloon zonder dat u afhankelijk bent van een module die de sjabloon al biedt.

U begint met de hello-azd sjabloon, maakt een Bicep module die een Azure Translator resource definieert, naar de module verwijst vanuit het ingangspunt van de infrastructuur van de sjabloon en de uitvoer ervan beschikbaar maakt als azd omgevingswaarden. De tutorial richt zich op het uitbreiden van de infrastructuur en wijzigt de applicatiecode niet.

Note

U kunt de volgende wijzigingen rechtstreeks of met hulp van een AI-coderingsassistent aanbrengen. Bekijk, ongeacht de ontwerpmethode, de resulterende bestanden en valideer de sjabloon vóór de implementatie.

Prerequisites

U hebt het volgende nodig om deze zelfstudie te voltooien:

De sjabloon initialiseren

Open een terminal in een lege map en initialiseer de hello-azd sjabloon in die map:

azd init --template hello-azd .

De sjabloon bevat:

  • Een C#-toepassing die is geïmplementeerd in Azure Container Apps als de aca service in azure.yaml.
  • Een door de gebruiker toegewezen beheerde identiteit voor de toepassing.
  • Een Azure Storage-account met een blobcontainer en -tabel.
  • Azure Container Registry en een Azure Container Apps omgeving.
  • Herbruikbare Bicep modules onder infra/core.

Zie Beginnen met een bestaande sjabloon voor hulp bij het selecteren en controleren van een sjabloon vóór initialisatie.

Een Translator-module maken

Maak een bestand met de naam infra/translator.bicep, handmatig of met hulp van een AI-coderingsassistent. Deze nieuwe module is zelfstandig en is niet afhankelijk van modules uit de beginsjabloon:

@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

De module maakt gebruik van het TextTranslation resourcetype en schakelt verificatie van lokale sleutels uit. De F0 laag is handig voor evaluatie, maar staat slechts één gratis Translator-resource per abonnement toe. Gebruik S1 als het abonnement al een F0-resource bevat of als het project een betaalde prijscategorie vereist.

Important

In dit inleidende voorbeeld wordt het openbare eindpunt ingeschakeld, zodat u de resource kunt inrichten zonder netwerkinfrastructuur toe te voegen. Voordat u dit patroon in productie gebruikt, evalueert u privé-eindpunten, besturingselementen voor netwerktoegang, bewaking en de beveiligingsvereisten van uw organisatie.

Naar de module verwijzen vanuit main.bicep

De hello-azd sjabloon definieert de rg resourcegroep, locationen tagsresourceToken waarden ininfra/main.bicep. U kunt deze bewerking handmatig aanbrengen of een AI-assistent vragen om deze toe te voegen. Voeg de volgende module toe na de rg resourcedeclaratie:

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

Met scope de eigenschap wordt de module geïmplementeerd in de resourcegroep die door de sjabloon wordt gemaakt. De bestaande resourceToken waarde maakt de naam van de Translator-resource voor elke omgeving uniek.

De Translator-uitvoer exporteren

Voeg de volgende uitvoer toe aan het einde van infra/main.bicep:

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

Na het provisioneren legt azd deze niet-geheime uitvoerwaarden vast in de actieve omgeving. Een latere wijziging in toepassingscode kan deze waarden gebruiken om de Translator-resource te vinden.

De infrastructuur inrichten en verifiëren

De infrastructuur van de sjabloon inrichten zonder de toepassingscode te implementeren:

azd provision

Voer de opdracht uit azd env get-values en bevestig dat de uitvoer het bevat AZURE_TRANSLATOR_NAME en AZURE_TRANSLATOR_ENDPOINT. Controleer in de Azure portal of de resourcegroep een Azure Translator resource bevat.

Op dit moment richt de sjabloon de AI-service in, maar verbindt de voorbeeldtoepassing er niet mee. Om deze integratie te voltooien, configureert u toegang met minimale bevoegdheden voor de beheerde identiteit van de toepassing, geeft u het eindpunt door aan de toepassing en voegt u een Translator-client toe aan de toepassingscode. Zie de documentatie voor Azure Translator voor meer informatie.

De hulpbronnen opschonen

Wanneer u de resources niet meer nodig hebt, verwijdert u deze om doorlopende kosten te voorkomen:

azd down --purge

Hulp vragen

Ga naar de pagina roubleshooting en ondersteuning voor informatie over het indienen van een bug, hulp vragen of een nieuwe functie voorstellen voor de Azure Developer CLI.