Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine Azure Developer CLI (azd)-Vorlage ist ein Standardrepository mit Konfigurations- und Infrastrukturressourcen, die es azd ermöglichen, ein Projekt zu provisionieren und bereitzustellen. Unabhängig davon, ob Sie eine neue Vorlage erstellen oder mit einer vorhandenen Vorlage beginnen, sind Sie für das Überprüfen und Verwalten der Dateien verantwortlich, während sich das Projekt weiterentwickelt.
In diesem Artikel wird erläutert, wie Sie die primären Vorlagendateien überprüfen und bearbeiten. Eine konzeptionelle Beschreibung der vollständigen Struktur finden Sie unter Azure Developer CLI-Vorlagen.
In diesem Artikel wird die Vorlage "hello-azd " als standardisiertes Beispiel verwendet, sodass Sie sehen können, was jede Datei in einem echten Projekt tut. Die gleichen Konzepte gelten für Vorlagen, die Sie für Ihre eigenen Apps generieren. Um mitzumachen, initialisieren Sie die Vorlage in einem leeren Verzeichnis:
azd init --template hello-azd
Die hello-azd Vorlage stellt eine containerisierte C#-App für Azure Container Apps bereit und stellt die unterstützenden Azure Ressourcen über Bicep bereit. Es verwendet eine Ordnerstruktur wie die folgende, wobei jede primäre Ressource einem Abschnitt in diesem Artikel zugeordnet ist:
.
├── azure.yaml # Project configuration (Explore azure.yaml)
├── infra/ # Infrastructure as code (Infrastructure files)
│ ├── main.bicep # Deployment entry point
│ ├── main.parameters.json # Parameter values that azd supplies
│ ├── abbreviations.json # Resource name abbreviations
│ ├── app/ # Application-specific modules
│ └── core/ # Reusable resource modules
├── src/ # Application source code (Source code)
│ └── Dockerfile # Container image build for the app
├── .azure/ # Environment configuration
└── README.md
Die genaue Struktur variiert je nach Projekt, und azure.yaml identifiziert die Pfade, die azd verwendet. In den folgenden Abschnitten wird beschrieben, wie Sie die einzelnen Ressourcen bearbeiten.
Bevor Sie wesentliche Änderungen vornehmen, checken Sie eine bekanntermaßen funktionierende Version der Vorlage ein oder speichern Sie sie anderweitig. Überprüfen Sie alle Änderungen für eingebettete Anmeldeinformationen, unnötige Ressourcen, übermäßige Berechtigungen, Netzwerkexposition, Dienstebenen und umgebungsspezifische Werte.
azure.yaml erkunden
Die azure.yaml Datei definiert das Projekt und teilt azd mit, wie Infrastruktur, Paketanwendungscode bereitgestellt und jeder Dienst bereitgestellt wird. Sie kann Dienste, Infrastruktureinstellungen, Hooks, Workflows und anderes Projektverhalten definieren.
Die hello-azd Vorlage definiert einen einzelnen Dienst mit dem Namen aca:
name: azd-starter
metadata:
template: hello-azd-dotnet
services:
aca:
project: ./src
language: csharp
host: containerapp
docker:
path: ./Dockerfile
remoteBuild: true
Jede Eigenschaft teilt azd mit, wie der Dienst behandelt werden soll:
-
acaist der Dienstname.azdverwendet dies, um den Dienst der Azure-Ressource zuzuordnen, die ihn hostet. Weitere Informationen finden Sie unter Konfigurieren der Dienstermittlung. -
project: ./srcverweist auf den Anwendungsquellcode, denazdpaketiert und bereitstellt. -
language: csharpidentifiziert die Anwendungssprache. -
host: containerappweistazdan, den Dienst für Azure Container Apps bereitzustellen. -
dockererstellt das Container-Image aus demDockerfileim Verzeichnissrc. -
remoteBuildweistazdan, Azure Container Registry (ACR) zum Erstellen des Containerimages zu verwenden.
Hinzufügen einer Dienstdefinition
Fügen Sie unter services für jede zusätzliche Anwendung, die azd bereitstellen soll, einen Eintrag hinzu. Eine Dienstdefinition gibt das Quellverzeichnis, die Sprache und Azure Hostingziel an. So beschreiben Sie beispielsweise ein neues API-Projekt:
services:
api:
project: ./src/api
language: csharp
host: appservice
Aktualisieren Sie beim Verschieben des Anwendungscodes den entsprechenden project Pfad. Wenn Sie die Hostingarchitektur ändern, aktualisieren Sie sowohl die Dienstdefinition als auch die Infrastruktur, die den Host bereitstellt.
Alle verfügbaren Eigenschaften und unterstützten Werte finden Sie im azure.yaml Schema.
Quellcode
Die Anwendungsquelle ist optional. Vorlagen mit bereitstellungsfähigen Anwendungen organisieren häufig Quellcode im src Verzeichnis, aber Sie müssen keinen bestimmten Ordnernamen oder ein bestimmtes Layout verwenden. Die Eigenschaft project für jeden Dienst in azd teilt azure.yaml mit, wo sich der Quellcode befindet.
In hello-azd, der aca Dienst legt project: ./srcfest, sodass azd die C#-App im src Verzeichnis verpackt und auf Azure Container Apps bereitgestellt wird. Da der Dienst auch eine docker Konfiguration festlegt, erstellt azd vor der Bereitstellung das Container-Image aus dem Dockerfile im Verzeichnis src.
azd unterstützt Node.js, Python, .NET, Java und Go auf unterstützten Azure-Hosts. Eine Vorlage kann auch Container bereitstellen. Aktuelle Sprach-, Framework- und Hostkombinationen finden Sie unter "Unterstützte Sprachen und Umgebungen".
Bearbeiten Sie Den Quellcode wie in jedem Anwendungs-Repository. Wenn Sie einen Dienst hinzufügen oder das Quellverzeichnis verschieben, aktualisieren Sie die azure.yaml Dienstdefinition. Wenn die Anwendung eine neue Azure Ressource benötigt, aktualisieren Sie die Infrastruktur, und übergeben Sie den erforderlichen Endpunkt oder Ressourcennamen über die Konfiguration an die Anwendung.
Ändern eines Dienstquellverzeichnisses
Wenn Sie die hello-azd App z. B. von "src/appinsrc" verschieben, aktualisieren Sie den project Wert des aca Diensts:
services:
aca:
project: ./src/app
language: csharp
host: containerapp
docker:
path: ./Dockerfile
remoteBuild: true
Infrastrukturdateien
Das infra Verzeichnis enthält die dateien Bicep oder Terraform, die die Azure Ressourcen für die Vorlage definieren. Im hello-azd verwendet das infra-Verzeichnis Bicep und enthält die folgenden wichtigen Ressourcen:
-
main.bicepist der standardmäßige Einstiegspunkt für die Bereitstellung, denazdausführt, um Ressourcen bereitzustellen. -
main.parameters.jsonliefert die Parameterwerte fürmain.bicep. -
appenthält Module, die für die Anwendung spezifisch sind. -
coreenthält wiederverwendbare Module für allgemeine Ressourcen, z. B. Speicher und Hosting.
Wie main.bicep während azd up ausgeführt wird
Wenn Sie azd up ausführen, wird in der Bereitstellungsphase infra/main.bicep bereitgestellt. In main.bicep zielt hello-azd auf den Abonnementbereich ab, erstellt eine Ressourcengruppe und ruft dann Module auf, um die Ressourcen bereitzustellen, die die App benötigt:
targetScope = 'subscription'
// Create a storage account
module storage './core/storage/storage-account.bicep' = {
name: 'storage'
scope: rg
params: {
name: !empty(storageAccountName) ? storageAccountName : '${abbrs.storageStorageAccounts}${resourceToken}'
location: location
tags: tags
allowSharedKeyAccess: false
containers: [ { name: 'attachments' } ]
tables: [ { name: 'tickets' } ]
}
}
// Container app for the 'aca' service
module web 'app/app.bicep' = {
name: serviceName
scope: rg
params: {
// ...
serviceName: serviceName
}
}
Die main.bicep Datei stellt eine vom Benutzer zugewiesene verwaltete Identität, ein Azure Storage Konto, eine Azure Container Apps Umgebung und Registrierung sowie die Container-App bereit, die den aca Dienst hosten soll. Außerdem werden die Rollen zugewiesen, die der verwalteten Identität den Zugriff auf den Speicher ermöglichen. Module behalten jede Ressource in einer eigenen Datei bei, sodass main.bicep sie lesbar bleibt.
Hinzufügen einer Ressource zu main.bicep
Fügen Sie Ressourcendeklarationen direkt zu infra/main.bicep für einfache oder einzelne Ressourcen hinzu. Gliedern Sie Ressourcen in separate Bicep-Module aus, wenn Sie sie wiederverwenden, wenn eine Ressource mehrere zusammengehörige Ressourcen benötigt oder wenn Sie main.bicep lesbar halten möchten. Wie hello-azd, viele Vorlagen gruppieren wiederverwendbare Module unter infra/core.
Für gängige Azure-Ressourcen verwenden Sie vorzugsweise ein Azure Verified Module, anstatt ein Modul von Grund auf zu erstellen. Überprüfte Module werden von Microsoft gepflegt, entsprechen bewährten Verfahren für Sicherheit und Zuverlässigkeit und verringern den Umfang des Infrastrukturcodes, den Sie in der Vorlage verwalten.
Eine vollständige Schritt-für-Schritt-Anleitung zum Hinzufügen einer neuen Ressource zu hello-azd finden Sie unter Eine Vorlage erweitern.
Die Datei main.parameters.json ordnet die Werte, die azd verwaltet, den Bicep-Parametern zu. Die hello-azd Vorlage verwendet die folgenden Parameter:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"environmentName": { "value": "${AZURE_ENV_NAME}" },
"location": { "value": "${AZURE_LOCATION}" },
"principalId": { "value": "${AZURE_PRINCIPAL_ID}" },
"principalType": { "value": "${AZURE_PRINCIPAL_TYPE=User}" }
}
}
Jeder Eintrag verknüpft einen Bicep-Parameter mit einem Wert, den azd in der Umgebung verwaltet, z. B. den Umgebungsnamen, die Region und den Prinzipal, der die Bereitstellung ausführt. Verwenden Sie main.parameters.json für Werte, die je nach Umgebung oder Bereitstellung variieren, z. B. den Namen der Umgebung, den Standort oder die Ressourcennamen, die von azd generiert werden. Halten Sie stabile Werte, die sich nicht zwischen Umgebungen ändern, als Parameterstandardwerte oder Literale in main.bicep. Dieser Ansatz sorgt dafür, dass dieselbe Bicep-Vorlage in verschiedenen Umgebungen wiederverwendbar bleibt, ohne sie für jede Bereitstellung bearbeiten zu müssen.
Beim Hinzufügen oder Bearbeiten der Infrastruktur:
- Halten Sie die Ressourcenkonfigurationsumgebung unabhängig. Verwenden Sie Parameter und
azdUmgebungswerte, anstatt Abonnement-IDs, Ressourcennamen, Speicherorte oder Anmeldeinformationen einzubetten. - Verwenden Sie geschützte Ausgaben für sensible Werte, und geben Sie Geheimnisse nicht als Bereitstellungsausgaben im Klartext aus.
- Wenden Sie Rollenzuweisungen mit geringsten Berechtigungen auf verwaltete Identitäten an.
- Halten Sie die Dienstdefinitionen in
azure.yamlauf die Ressourcen abgestimmt, auf die sie gerichtet sind. - Überprüfen Sie die Auswirkungen von Dienstebenen, Skalierungsgrenzwerten, Redundanz und Aufbewahrungseinstellungen auf Kosten.
Hinweise zur Bicep-Sprache und zu Modulen finden Sie in der Bicep-Dokumentation. Informationen zu Terraform-basierten Vorlagen finden Sie unter Verwenden von Terraform mit Azure Developer CLI.
Diensterkennung konfigurieren
Standardmäßig ermittelt azd die Azure-Ressource für einen Dienst, indem nach der Ressource gesucht wird, deren azd-service-name-Tag mit dem Dienstnamen in azure.yaml übereinstimmt. Wenn Sie einen Dienst umbenennen, aktualisieren Sie das entsprechende Ressourcentag, oder konfigurieren Sie den Ressourcennamen explizit in azure.yaml.
Beispielsweise stimmt in hello-azd der Dienstname aca mit dem Tag azd-service-name der Container-App-Ressource überein. Die azure.yaml Dienstdefinition legt den Namen fest:
services:
aca:
project: ./src
language: csharp
host: containerapp
Im Container-App-Modul in infra/app/app.bicep wird das passende Tag angewendet:
tags: union(tags, { 'azd-service-name': serviceName })
Konfigurieren eines nicht standardmäßigen Infrastrukturpfads
Der Abschnitt infra von azure.yaml identifiziert den Infrastrukturanbieter und den Einstiegspunkt. Diese Werte sind optional, wenn Sie das Standardlayout Bicep verwenden, aber durch das Deklarieren können Sie ein nicht standardmäßiges Layout einfacher verstehen:
infra:
provider: bicep
path: infra
module: main
Umgebungskonfiguration
Das .azure-Verzeichnis enthält den Status der lokalen Umgebung und Werte, die azd erstellt, z. B. das ausgewählte Abonnement, den Standort, die Ressourcennamen und die Ausgaben der Bereitstellung. Behandeln Sie dieses Verzeichnis als lokalen Zustand und nicht als wiederverwendbare Vorlagenressource. Committen Sie keine Umgebungsdateien, die Geheimnisse oder umgebungsspezifische Werte enthalten.
Hinzufügen von Infrastrukturausgaben
Wenn Sie azd provision zum Bereitstellen von Bicep ausführen, werden die Ausgabewerte des Einstiegspunkts der Infrastruktur als Umgebungswerte für azd erfasst. Fügen Sie Ausgabewerte für Ressourcenendpunkte, Ressourcennamen und Client-IDs verwalteter Identitäten hinzu, die von Anwendungsdiensten oder Hooks benötigt werden. Beispielsweise gibt hello-azd die Details zur Containerregistrierung und zur verwalteten Identität aus main.bicep aus:
output AZURE_CONTAINER_REGISTRY_ENDPOINT string = containerAppsEnv.outputs.registryLoginServer
output AZURE_CONTAINER_REGISTRY_NAME string = containerAppsEnv.outputs.registryName
output AZURE_USER_ASSIGNED_IDENTITY_NAME string = identity.outputs.name
Geben Sie keine geheimen Schlüssel aus, wenn stattdessen eine verwaltete Identität oder Key Vault Referenz Zugriff gewähren kann. Überprüfen Sie nach der Bereitstellung die erfassten Werte, indem Sie azd env get-values ausführen.
Weitere Informationen finden Sie unter Verwalten von Umgebungsvariablen.
Testen der Änderungen
Führen Sie die Ausführung azd up aus, um die Infrastruktur bereitzustellen und alle Anwendungsdienste bereitzustellen:
azd up
Wenn Sie die Vorlage freigeben möchten, initialisieren Sie sie in einem sauberen Verzeichnis, und stellen Sie sie mit einer neuen Umgebung bereit. Dieser Test hilft bei der Identifizierung lokaler Dateien, zwischengespeicherter Werte oder umgebungsspezifischer Annahmen, die nicht Teil der Vorlage sind.
Verwandte Inhalte
- Übersicht über die Vorlagenentwicklung
- Beginnen mit einer neuen Vorlage
- Beginnen mit einer vorhandenen Vorlage
- Erweitern einer Vorlage
-
Erkunden des
azd upWorkflows
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.