.NET .NET Aspire Manifestformat für Bereitstellungstool-Generatoren
In diesem Artikel erfahren Sie mehr über das .NET.NET Aspire Manifestformat. Dieser Artikel dient als Referenzhandbuch für Bereitstellungstool-Generatoren, die bei der Erstellung von Tools zur Bereitstellung von .NET.NET Aspire Projekten auf bestimmten Hostingplattformen unterstützt werden, unabhängig davon, ob lokal oder in der Cloud.
.NET .NET Aspire vereinfacht die lokale Entwicklungsumgebung durch die Verwaltung von Abhängigkeiten zwischen Anwendungsintegrationen. Um die Bereitstellung von Anwendungen zu vereinfachen, können .NET Aspire Projekte ein Manifest aller Ressourcen generieren, die als JSON formatierte Datei definiert sind.
Generieren eines Manifests
Zum Generieren eines Manifests ist ein gültiges .NET.NET Aspire Projekt erforderlich. Erstellen Sie zunächst ein .NET.NET Aspire Projekt mithilfe der aspire-starter
.NET-Vorlage:
dotnet new aspire-starter --use-redis-cache `
-o AspireApp && `
cd AspireApp
Die Manifestgenerierung wird durch Ausführen von dotnet build
mit einem speziellen Ziel erreicht:
dotnet run --project AspireApp.AppHost\AspireApp.AppHost.csproj `
--publisher manifest `
--output-path ../aspire-manifest.json
Trinkgeld
Die --output-path
unterstützt relative Pfade. Der vorherige Befehl verwendet ../aspire-manifest.json
, um die Manifestdatei im Stammverzeichnis des Projekts zu platzieren.
Weitere Informationen finden Sie unter dotnet run. Der vorherige Befehl erzeugt die folgende Ausgabe:
Building...
info: Aspire.Hosting.Publishing.ManifestPublisher[0]
Published manifest to: .\AspireApp.AppHost\aspire-manifest.json
Die generierte Datei ist das .NET.NET Aspire Manifest und wird von Tools verwendet, um die Bereitstellung in Zielcloudumgebungen zu unterstützen.
Anmerkung
Sie können auch ein Manifest als Teil des Startprofils generieren. Beachten Sie die folgenden launchSettings.json:
{
"$schema": "http://json.schemastore.org/launchsettings.json",
"profiles": {
"generate-manifest": {
"commandName": "Project",
"launchBrowser": false,
"dotnetRunMessages": true,
"commandLineArgs": "--publisher manifest --output-path aspire-manifest.json"
}
}
}
Einfaches Manifestformat
Das Veröffentlichen des Manifests aus der Standardstartvorlage für .NET Aspire erzeugt die folgende JSON Ausgabe:
{
"resources": {
"cache": {
"type": "container.v0",
"connectionString": "{cache.bindings.tcp.host}:{cache.bindings.tcp.port}",
"image": "redis:7.2.4",
"bindings": {
"tcp": {
"scheme": "tcp",
"protocol": "tcp",
"transport": "tcp",
"containerPort": 6379
}
}
},
"apiservice": {
"type": "project.v0",
"path": "../AspireApp.ApiService/AspireApp.ApiService.csproj",
"env": {
"OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES": "true",
"OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES": "true"
},
"bindings": {
"http": {
"scheme": "http",
"protocol": "tcp",
"transport": "http"
},
"https": {
"scheme": "https",
"protocol": "tcp",
"transport": "http"
}
}
},
"webfrontend": {
"type": "project.v0",
"path": "../AspireApp.Web/AspireApp.Web.csproj",
"env": {
"OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES": "true",
"OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES": "true",
"ConnectionStrings__cache": "{cache.connectionString}",
"services__apiservice__0": "{apiservice.bindings.http.url}",
"services__apiservice__1": "{apiservice.bindings.https.url}"
},
"bindings": {
"http": {
"scheme": "http",
"protocol": "tcp",
"transport": "http"
},
"https": {
"scheme": "https",
"protocol": "tcp",
"transport": "http"
}
}
}
}
}
Das Manifestformat JSON besteht aus einem einzelnen Objekt namens resources
, das eine Eigenschaft für jede ressource enthält, die in Program.cs angegeben ist (das argument name
für jeden Namen wird als Eigenschaft für jedes der untergeordneten Ressourcenobjekte in JSONverwendet).
Verbindungszeichenfolgen- und Bindungsverweise
Im vorherigen Beispiel gibt es zwei Projektressourcen und eine Redis Cacheressource. Die webfrontend- hängt sowohl vom apiservice (Projekt) als auch vom Cache (Redis) Ressourcen ab.
Diese Abhängigkeit ist bekannt, da die Umgebungsvariablen für die webfrontend Platzhalter enthalten, die auf die beiden anderen Ressourcen verweisen:
"env": {
// ... other environment variables omitted for clarity
"ConnectionStrings__cache": "{cache.connectionString}",
"services__apiservice__0": "{apiservice.bindings.http.url}",
"services__apiservice__1": "{apiservice.bindings.https.url}"
},
Auf die apiservice
-Ressource wird mithilfe des Aufrufs webfrontend
in der App-Host WithReference(apiservice)
datei Program.cs verwiesen, und auf redis
wird mithilfe des Aufrufs WithReference(cache)
verwiesen:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache");
var apiService = builder.AddProject<Projects.AspireApp_ApiService>("apiservice");
builder.AddProject<Projects.AspireApp_Web>("webfrontend")
.WithReference(cache)
.WithReference(apiService);
builder.Build().Run();
Verweise zwischen Projektressourcentypen führen zu Dienstermittlung Variablen, die in das referenzierende Projekt eingefügt werden. Verweise auf bekannte Verweistypen wie Redis führen dazu, dass Verbindungszeichenfolgen eingefügt werden.
Weitere Informationen dazu, wie Ressourcen im App-Modell und Verweise zwischen ihnen funktionieren, finden Sie unter .NET.NET Aspire Übersicht über die Orchestrierung.
Platzhalterzeichenfolgenstruktur
Platzhalterzeichenfolgen verweisen auf die Struktur des .NET.NET Aspire Manifests:
Das letzte Segment der Platzhalterzeichenfolge ( in diesem Fallurl
) wird vom Tool generiert, das das Manifest verarbeitet. Es gibt mehrere Suffixe, die in der Platzhalterzeichenfolge verwendet werden können:
-
connectionString
: Für bekannte Ressourcentypen wie Redis. Bereitstellungstools übersetzen die Ressource in der am besten geeigneten Infrastruktur für die Zielcloudumgebung und erstellen dann eine .NET.NET Aspire kompatible Verbindungszeichenfolge für die zu verwendende Anwendung. Aufcontainer.v0
Ressourcen kann das feldconnectionString
vorhanden und explizit angegeben werden. Dies ist die Unterstützung von Szenarien, in denen auf einen Containerressourcentyp mithilfe der WithReference Erweiterung verwiesen wird, aber explizit als Container gehostet werden soll. -
url
: Für Dienst-zu-Dienst-Verweise, bei denen eine wohlgeformte URL erforderlich ist. Das Bereitstellungstool erzeugt dieurl
basierend auf dem Schema, Protokoll und Transport, das im Manifest definiert ist, und der zugrunde liegenden Compute-/Netzwerktopologie, die bereitgestellt wurde. -
host
: Das Hostsegment der URL. -
port
: Das Portsegment der URL.
Ressourcentypen
Jede Ressource verfügt über ein type
Feld. Wenn ein Bereitstellungstool das Manifest liest, sollte er den Typ lesen, um zu überprüfen, ob es das Manifest ordnungsgemäß verarbeiten kann. Während des .NET.NET Aspire Vorschauzeitraums weisen alle Ressourcentypen ein v0
Suffix auf, um anzugeben, dass sie geändert werden können. Wenn .NET.NET Aspire Ansätze ein v1
Suffix freigeben, wird verwendet, um anzugeben, dass die Struktur des Manifests für diesen Ressourcentyp als stabil betrachtet werden sollte (nachfolgende Updates erhöhen die Versionsnummer entsprechend).
Allgemeine Ressourcenfelder
Das feld "type
" ist das einzige Feld, das für alle Ressourcentypen gemeinsam ist, jedoch die project.v0
, container.v0
und executable.v0
Ressourcentypen auch die felder env
und bindings
gemeinsam nutzen.
Anmerkung
Der ressourcentyp executable.v0
ist aufgrund seines fehlenden Hilfsprogramms in Bereitstellungsszenarien nicht vollständig im Manifest implementiert. Weitere Informationen zum Containerisieren von ausführbaren Dateien finden Sie unter Dockerfile Ressourcentypen.
Der env
Feldtyp ist eine grundlegende Schlüssel-Wertzuordnung, bei der die Werte Platzhalterzeichenfolgenenthalten können.
Bindungen werden im feld bindings
angegeben, wobei jede Bindung in einem eigenen Feld unter dem bindings
JSON-Objekt enthalten ist. Die Felder, die vom .NET.NET Aspire Manifest im knoten bindings
weggelassen werden, umfassen:
-
scheme
: Einer der folgenden Wertetcp
,udp
,http
oderhttps
. -
protocol
: Einer der folgenden Wertetcp
oderudp
-
transport
: Identisch mitscheme
, wird jedoch verwendet, um zwischenhttp
undhttp2
zu unterscheiden. -
containerPort
: Optional, wenn keine Standardwerte für Port 80 angegeben werden.
Das feld "inputs
"
Einige Ressourcen generieren ein inputs
Feld. Dieses Feld wird verwendet, um Eingabeparameter für die Ressource anzugeben. Das feld inputs
ist ein JSON-Objekt, bei dem jede Eigenschaft ein Eingabeparameter ist, der in der Auflösung der Platzhalterstruktur verwendet wird. Ressourcen mit einem connectionString
können z. B. das feld inputs
verwenden, um eine password
für die Verbindungszeichenfolge anzugeben:
"connectionString": "Host={<resourceName>.bindings.tcp.host};Port={<resourceName>.bindings.tcp.port};Username=admin;Password={<resourceName>.inputs.password};"
Der Platzhalter für die Verbindungszeichenfolge verweist auf den password
Eingabeparameter aus dem feld inputs
:
"inputs": {
"password": {
"type": "string",
"secret": true,
"default": {
"generate": {
"minLength": 10
}
}
}
}
Im vorherigen JSON Codeausschnitt wird das inputs
Feld für eine Ressource mit einem connectionString
Feld angezeigt. Der password
Eingabeparameter ist ein Zeichenfolgentyp und wird als geheimer Schlüssel markiert. Das feld default
wird verwendet, um einen Standardwert für den Eingabeparameter anzugeben. In diesem Fall wird der Standardwert mithilfe des generate
-Felds mit zufälliger Zeichenfolge einer Mindestlänge generiert.
Integrierte Ressourcen
Die folgende Tabelle enthält eine Liste der Ressourcentypen, die explizit von .NET Aspire und Erweiterungen generiert werden, die vom .NET Aspire Team entwickelt wurden:
Cloudagnostische Ressourcentypen
Diese Ressourcen sind im 📦Aspireverfügbar. Hosten NuGet-Pakets.
App-Modellnutzung | Manifestressourcentyp | Überschriftenlink |
---|---|---|
AddContainer | container.v0 |
Containerressourcentyp |
PublishAsDockerFile |
dockerfile.v0 |
Dockerfile Ressourcentypen |
AddDatabase | value.v0 |
MongoDB Server Ressourcentypen |
AddMongoDB | container.v0 |
MongoDB Ressourcentypen |
AddDatabase | value.v0 |
MySQL Server Ressourcentypen |
AddMySql | container.v0 |
MySQL Ressourcentypen |
AddDatabase | value.v0 |
Postgres Ressourcentypen |
AddPostgres | container.v0 |
Postgres Ressourcentypen |
AddProject | project.v0 |
Project-Ressourcentyp |
AddRabbitMQ | container.v0 |
RabbitMQ Ressourcentypen |
AddRedis | container.v0 |
Redis Ressourcentyp |
AddDatabase | value.v0 |
SQL Server Ressourcentypen |
AddSqlServer | container.v0 |
SQL Server Ressourcentypen |
Project-Ressourcentyp
Beispielcode:
var builder = DistributedApplication.CreateBuilder(args);
var apiservice = builder.AddProject<Projects.AspireApp_ApiService>("apiservice");
Beispielmanifest:
"apiservice": {
"type": "project.v0",
"path": "../AspireApp.ApiService/AspireApp.ApiService.csproj",
"env": {
"OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES": "true",
"OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES": "true"
},
"bindings": {
"http": {
"scheme": "http",
"protocol": "tcp",
"transport": "http"
},
"https": {
"scheme": "https",
"protocol": "tcp",
"transport": "http"
}
}
}
Containerressourcentyp
Beispielcode:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddContainer("mycontainer", "myimage")
.WithEnvironment("LOG_LEVEL", "WARN")
.WithHttpEndpoint(3000);
Beispielmanifest:
{
"resources": {
"mycontainer": {
"type": "container.v0",
"image": "myimage:latest",
"env": {
"LOG_LEVEL": "WARN"
},
"bindings": {
"http": {
"scheme": "http",
"protocol": "tcp",
"transport": "http",
"containerPort": 3000
}
}
}
}
}
Dockerfile Ressourcentypen
Beispielcode:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddNodeApp("nodeapp", "../nodeapp/app.js")
.WithHttpEndpoint(hostPort: 5031, env: "PORT")
.PublishAsDockerFile();
Trinkgeld
Der PublishAsDockerFile
Aufruf ist erforderlich, um den Dockerfile Ressourcentyp im Manifest zu generieren, und diese Erweiterungsmethode ist nur für den ExecutableResource Typ verfügbar.
Beispielmanifest:
{
"resources": {
"nodeapp": {
"type": "dockerfile.v0",
"path": "../nodeapp/Dockerfile",
"context": "../nodeapp",
"env": {
"NODE_ENV": "development",
"PORT": "{nodeapp.bindings.http.port}"
},
"bindings": {
"http": {
"scheme": "http",
"protocol": "tcp",
"transport": "http",
"containerPort": 5031
}
}
}
}
}
Postgres Ressourcentypen
Beispielcode:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddPostgres("postgres1")
.AddDatabase("shipping");
Beispielmanifest:
{
"resources": {
"postgres1": {
"type": "container.v0",
"connectionString": "Host={postgres1.bindings.tcp.host};Port={postgres1.bindings.tcp.port};Username=postgres;Password={postgres1.inputs.password}",
"image": "postgres:16.2",
"env": {
"POSTGRES_HOST_AUTH_METHOD": "scram-sha-256",
"POSTGRES_INITDB_ARGS": "--auth-host=scram-sha-256 --auth-local=scram-sha-256",
"POSTGRES_PASSWORD": "{postgres1.inputs.password}"
},
"bindings": {
"tcp": {
"scheme": "tcp",
"protocol": "tcp",
"transport": "tcp",
"containerPort": 5432
}
},
"inputs": {
"password": {
"type": "string",
"secret": true,
"default": {
"generate": {
"minLength": 10
}
}
}
}
},
"shipping": {
"type": "value.v0",
"connectionString": "{postgres1.connectionString};Database=shipping"
}
}
}
RabbitMQ Ressourcentypen
RabbitMQ wird als Containerressource container.v0
modelliert. Das folgende Beispiel zeigt, wie sie dem App-Modell hinzugefügt werden.
var builder = DistributedApplication.CreateBuilder(args);
builder.AddRabbitMQ("rabbitmq1");
Der vorherige Code erzeugt das folgende Manifest:
{
"resources": {
"rabbitmq1": {
"type": "container.v0",
"connectionString": "amqp://guest:{rabbitmq1.inputs.password}@{rabbitmq1.bindings.tcp.host}:{rabbitmq1.bindings.tcp.port}",
"image": "rabbitmq:3",
"env": {
"RABBITMQ_DEFAULT_USER": "guest",
"RABBITMQ_DEFAULT_PASS": "{rabbitmq1.inputs.password}"
},
"bindings": {
"tcp": {
"scheme": "tcp",
"protocol": "tcp",
"transport": "tcp",
"containerPort": 5672
}
},
"inputs": {
"password": {
"type": "string",
"secret": true,
"default": {
"generate": {
"minLength": 10
}
}
}
}
}
}
}
Redis Ressourcentyp
Beispielcode:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddRedis("redis1");
Beispielmanifest:
{
"resources": {
"redis1": {
"type": "container.v0",
"connectionString": "{redis1.bindings.tcp.host}:{redis1.bindings.tcp.port}",
"image": "redis:7.2.4",
"bindings": {
"tcp": {
"scheme": "tcp",
"protocol": "tcp",
"transport": "tcp",
"containerPort": 6379
}
}
}
}
}
SQL Server Ressourcentypen
Beispielcode:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddSqlServer("sql1")
.AddDatabase("shipping");
Beispielmanifest:
{
"resources": {
"sql1": {
"type": "container.v0",
"connectionString": "Server={sql1.bindings.tcp.host},{sql1.bindings.tcp.port};User ID=sa;Password={sql1.inputs.password};TrustServerCertificate=true",
"image": "mcr.microsoft.com/mssql/server:2022-latest",
"env": {
"ACCEPT_EULA": "Y",
"MSSQL_SA_PASSWORD": "{sql1.inputs.password}"
},
"bindings": {
"tcp": {
"scheme": "tcp",
"protocol": "tcp",
"transport": "tcp",
"containerPort": 1433
}
},
"inputs": {
"password": {
"type": "string",
"secret": true,
"default": {
"generate": {
"minLength": 10
}
}
}
}
},
"shipping": {
"type": "value.v0",
"connectionString": "{sql1.connectionString};Database=shipping"
}
}
}
MongoDB Ressourcentypen
Beispielcode:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddMongoDB("mongodb1")
.AddDatabase("shipping");
Beispielmanifest:
{
"resources": {
"mongodb1": {
"type": "container.v0",
"connectionString": "mongodb://{mongodb1.bindings.tcp.host}:{mongodb1.bindings.tcp.port}",
"image": "mongo:7.0.5",
"bindings": {
"tcp": {
"scheme": "tcp",
"protocol": "tcp",
"transport": "tcp",
"containerPort": 27017
}
}
},
"shipping": {
"type": "value.v0",
"connectionString": "{mongodb1.connectionString}/shipping"
}
}
}
MySQL Ressourcentypen
Beispielcode:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddMySql("mysql1")
.AddDatabase("shipping");
Beispielmanifest:
{
"resources": {
"mysql1": {
"type": "container.v0",
"connectionString": "Server={mysql1.bindings.tcp.host};Port={mysql1.bindings.tcp.port};User ID=root;Password={mysql1.inputs.password}",
"image": "mysql:8.3.0",
"env": {
"MYSQL_ROOT_PASSWORD": "{mysql1.inputs.password}"
},
"bindings": {
"tcp": {
"scheme": "tcp",
"protocol": "tcp",
"transport": "tcp",
"containerPort": 3306
}
},
"inputs": {
"password": {
"type": "string",
"secret": true,
"default": {
"generate": {
"minLength": 10
}
}
}
}
},
"shipping": {
"type": "value.v0",
"connectionString": "{mysql1.connectionString};Database=shipping"
}
}
}
Azure-spezifische Ressourcentypen
Die folgenden Ressourcen sind im 📦Aspireverfügbar. Hosting.Azure NuGet-Paket.
App-Modellnutzung | Manifestressourcentyp | Überschriftenlink |
---|---|---|
AddAzureAppConfiguration | azure.bicep.v0 |
Azure Ressourcentypen für die App-Konfiguration |
AddAzureKeyVault | azure.bicep.v0 |
Azure Key Vault Ressourcentyp |
AddAzureRedis |
azure.bicep.v0 |
Azure Redis Ressourcentypen |
AddAzureServiceBus | azure.bicep.v0 |
Azure Service Bus Ressourcentyp |
AddAzureSqlServer(...) |
azure.bicep.v0 |
Azure SQL-Ressourcentypen |
AddAzureSqlServer(...).AddDatabase(...) |
value.v0 |
Azure SQL-Ressourcentypen |
AddAzurePostgresFlexibleServer(...) |
azure.bicep.v0 |
Azure Postgres Ressourcentypen |
AddAzurePostgresFlexibleServer(...).AddDatabase(...) |
value.v0 |
Azure Postgres Ressourcentypen |
AddAzureStorage | azure.storage.v0 |
Azure Speicherressourcentypen |
AddBlobs | value.v0 |
Azure Speicherressourcentypen |
AddQueues | value.v0 |
Azure Speicherressourcentypen |
AddTables | value.v0 |
Azure Speicherressourcentypen |
Azure Key Vault Ressourcentyp
Beispielcode:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddAzureKeyVault("keyvault1");
Beispielmanifest:
{
"resources": {
"keyvault1": {
"type": "azure.bicep.v0",
"connectionString": "{keyvault1.outputs.vaultUri}",
"path": "aspire.hosting.azure.bicep.keyvault.bicep",
"params": {
"principalId": "",
"principalType": "",
"vaultName": "keyvault1"
}
}
}
}
Azure Service Bus Ressourcentyp
Beispielcode:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddAzureServiceBus("sb1")
.AddTopic("topic1", [])
.AddTopic("topic2", [])
.AddQueue("queue1")
.AddQueue("queue2");
Beispielmanifest:
{
"resources": {
"sb1": {
"type": "azure.bicep.v0",
"connectionString": "{sb1.outputs.serviceBusEndpoint}",
"path": "aspire.hosting.azure.bicep.servicebus.bicep",
"params": {
"serviceBusNamespaceName": "sb1",
"principalId": "",
"principalType": "",
"queues": [
"queue1",
"queue2"
],
"topics": [
{
"name": "topic1",
"subscriptions": []
},
{
"name": "topic2",
"subscriptions": []
}
]
}
}
}
}
Azure Speicherressourcentypen
Beispielcode:
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("images");
storage.AddBlobs("blobs");
storage.AddQueues("queues");
storage.AddTables("tables");
Beispielmanifest:
{
"resources": {
"images": {
"type": "azure.bicep.v0",
"path": "aspire.hosting.azure.bicep.storage.bicep",
"params": {
"principalId": "",
"principalType": "",
"storageName": "images"
}
},
"blobs": {
"type": "value.v0",
"connectionString": "{images.outputs.blobEndpoint}"
},
"queues": {
"type": "value.v0",
"connectionString": "{images.outputs.queueEndpoint}"
},
"tables": {
"type": "value.v0",
"connectionString": "{images.outputs.tableEndpoint}"
}
}
}
Azure Redis Ressourcentyp
Beispielcode:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddAzureRedis("azredis1");
Beispielmanifest:
{
"resources": {
"azredis": {
"type": "azure.bicep.v0",
"connectionString": "{azredis.outputs.connectionString}",
"path": "azredis.module.bicep",
"params": {
"principalId": "",
"principalName": ""
}
}
}
}
ressourcentyp "Azure App-Konfiguration"
Beispielcode:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddAzureAppConfiguration("appconfig1");
Beispielmanifest:
{
"resources": {
"appconfig1": {
"type": "azure.bicep.v0",
"connectionString": "{appconfig1.outputs.appConfigEndpoint}",
"path": "aspire.hosting.azure.bicep.appconfig.bicep",
"params": {
"configName": "appconfig1",
"principalId": "",
"principalType": ""
}
}
}
}
Azure SQL-Ressourcentypen
Beispielcode:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddAzureSqlServer("sql")
.AddDatabase("inventory");
Beispielmanifest:
{
"resources": {
"sql": {
"type": "azure.bicep.v0",
"connectionString": "Server=tcp:{sql.outputs.sqlServerFqdn},1433;Encrypt=True;Authentication=\u0022Active Directory Default\u0022",
"path": "sql.module.bicep",
"params": {
"principalId": "",
"principalName": ""
}
},
"inventory": {
"type": "value.v0",
"connectionString": "{sql.connectionString};Database=inventory"
}
}
}
Azure Postgres Ressourcentypen
Beispielcode:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddAzurePostgresFlexibleServer("postgres")
.AddDatabase("db");
Beispielmanifest:
{
"resources": {
"postgres": {
"type": "azure.bicep.v0",
"connectionString": "{postgres.outputs.connectionString}",
"path": "postgres.module.bicep",
"params": {
"principalId": "",
"principalType": "",
"principalName": ""
}
},
"db": {
"type": "value.v0",
"connectionString": "{postgres.connectionString};Database=db"
}
}
}
In der Azure Developer CLI unterstützte Ressourcentypen
Die Azure Developer CLI (azd) ist ein Tool, mit dem .NET Aspire Projekte Azure Container Appsbereitgestellt werden können. Mit dem azure.bicep.v0
Ressourcentyp können cloudagnostische Ressourcencontainertypen Azure-spezifischen Ressourcen zugeordnet werden. In der folgenden Tabelle sind die Ressourcentypen aufgeführt, die in der Azure Developer CLIunterstützt werden:
Name | Cloudagnostische API | Azure-API |
---|---|---|
Redis | AddRedis | AddAzureRedis |
Postgres | AddPostgres | AddAzurePostgresFlexibleServer |
SQL Server | AddSqlServer | AddAzureSqlServer |
Wenn Ressourcen wie Azure Ressourcen konfiguriert sind, wird der azure.bicep.v0
Ressourcentyp im Manifest generiert. Weitere Informationen finden Sie unter Deploy a .NET Aspire project to Azure Container Apps using the Azure Developer CLI (in depth guide).