Erweitern einer azd-Vorlage durch Hinzufügen eines Azure-Diensts

Nachdem Sie eine neue Azure Developer CLI()-Vorlage erstelltazd oder mit einer vorhandenen Vorlage beginnen, können Sie die Anwendung und Infrastruktur erweitern und weiterentwickeln, wenn sich ihre Anforderungen ändern. In diesem Lernprogramm wird veranschaulicht, wie Sie einer Vorlage einen neuen Azure Dienst hinzufügen, ohne sich auf ein Modul zu verlassen, das die Vorlage bereits bereitstellt.

Sie beginnen mit der hello-azd Vorlage, erstellen ein Bicep Modul, das eine Azure Translator Ressource definiert, auf das Modul aus dem Infrastruktureinstiegspunkt der Vorlage verweist und seine Ausgaben als azd Umgebungswerte verfügbar macht. Das Lernprogramm konzentriert sich auf die Erweiterung der Infrastruktur und ändert den Anwendungscode nicht.

Note

Sie können die folgenden Änderungen direkt oder mit Hilfe eines KI-Codierungsassistenten vornehmen. Überprüfen Sie unabhängig von der Erstellungsmethode die resultierenden Dateien, und überprüfen Sie die Vorlage vor der Bereitstellung.

Voraussetzungen

Um die Schritte dieses Tutorials abzuschließen, benötigen Sie Folgendes:

  • Azure Developer CLI installiert.
  • Ein Azure-Abonnement.
  • Berechtigung zum Erstellen von Azure-Ressourcen im Abonnement.
  • Ein leeres Verzeichnis für die initialisierte Vorlage.

Initialisieren der Vorlage

Öffnen Sie ein Terminal in einem leeren Verzeichnis, und initialisieren Sie dann die hello-azd Vorlage in diesem Verzeichnis:

azd init --template hello-azd .

Die Vorlage enthält:

  • Eine C#-Anwendung, die als der Dienst azure.yaml in aca für Azure Container Apps bereitgestellt wird.
  • Eine vom Benutzer zugewiesene verwaltete Identität für die Anwendung.
  • Ein Azure Storage Konto mit einem BLOB-Container und einer Tabelle.
  • Azure Container Registry und eine Azure Container Apps Umgebung.
  • Wiederverwendbare Bicep-Module unter infra/core.

Anleitungen zum Auswählen und Überprüfen einer Vorlage vor der Initialisierung finden Sie unter "Starten aus einer vorhandenen Vorlage".

Erstellen eines Übersetzermoduls

Erstellen Sie eine Datei mit dem Namen infra/translator.bicepmanuell oder mithilfe eines KI-Codierungs-Assistenten. Dieses neue Modul ist eigenständig und hängt nicht von Modulen aus der Startvorlage ab:

@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

Das Modul verwendet die TextTranslation Ressourcenart und deaktiviert die lokale Schlüsselauthentifizierung. Die F0 Stufe ist für die Auswertung nützlich, ermöglicht aber nur eine kostenlose Übersetzerressource pro Abonnement. Verwenden Sie S1, wenn das Abonnement bereits eine F0 Ressource enthält oder wenn das Projekt eine kostenpflichtige Stufe erfordert.

Important

In diesem einführenden Beispiel wird der öffentliche Endpunkt aktiviert, sodass Sie die Ressource bereitstellen können, ohne die Netzwerkinfrastruktur hinzuzufügen. Bevor Sie dieses Muster in der Produktion verwenden, bewerten Sie private Endpunkte, Netzwerkzugriffssteuerungen, Überwachung und die Sicherheitsanforderungen Ihrer Organisation.

Verweisen auf das Modul von main.bicep

Die Vorlage hello-azd definiert die Werte für rg Ressourcengruppe, location, tags und resourceToken in infra/main.bicep. Sie können diese Bearbeitung manuell vornehmen oder einen KI-Assistenten auffordern, ihn hinzuzufügen. Fügen Sie nach der rg Ressourcendeklaration das folgende Modul hinzu:

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

Die scope-Eigenschaft stellt das Modul in der Ressourcengruppe bereit, die von der Vorlage erstellt wird. Der vorhandene resourceToken Wert macht den Übersetzer-Ressourcennamen für jede Umgebung unterschiedlich.

Exportieren der Übersetzerausgaben

Fügen Sie die folgenden Ausgaben am Ende von infra/main.bicep hinzu:

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

Nach der Bereitstellung erfasst azd diese nicht vertraulichen Ausgaben in der aktiven Umgebung. Eine spätere Änderung des Anwendungscodes kann diese Werte verwenden, um die Übersetzerressource zu finden.

Bereitstellen und Überprüfen der Infrastruktur

Stellen Sie die Infrastruktur der Vorlage bereit, ohne den Anwendungscode bereitzustellen:

azd provision

Führen Sie azd env get-values aus und bestätigen Sie, dass die Ausgabe AZURE_TRANSLATOR_NAME und AZURE_TRANSLATOR_ENDPOINT enthält. Überprüfen Sie im Azure-Portal, ob die Ressourcengruppe eine Azure Translator Ressource enthält.

An diesem Punkt stellt die Vorlage den KI-Dienst bereit, verbindet die Beispielanwendung jedoch nicht mit dem Dienst. Um diese Integration abzuschließen, konfigurieren Sie den Zugriff mit den geringsten Rechten für die verwaltete Identität der Anwendung, übergeben den Endpunkt an die Anwendung, und fügen Sie dem Anwendungscode einen Translator-Client hinzu. Weitere Informationen finden Sie in der Azure Translator Dokumentation.

Bereinigen von Ressourcen

Wenn Sie die Ressourcen nicht mehr benötigen, löschen Sie sie, um fortgesetzte Gebühren zu vermeiden:

azd down --purge

Hilfe anfordern

Informationen zum Melden eines Fehlers, Anfordern von Hilfe oder Vorschlagen einer neuen Funktion für die Azure Developer CLI finden Sie auf der Seite Fehlerbehebung und Support.