.NET .NET Aspire jegyzékformátum az üzembehelyezési eszközkészítők számára
Ebben a cikkben megismerheti a .NET.NET Aspire jegyzékformátumot. Ez a cikk referencia-útmutatóként szolgál az üzembehelyezési eszközkészítők számára, és segítséget nyújt .NET.NET Aspire projektek adott üzemeltetési platformokon való üzembe helyezéséhez, akár a helyszínen, akár a felhőben.
.NET .NET Aspire leegyszerűsíti a helyi fejlesztési azáltal, hogy segít kezelni az alkalmazásintegrációk közötti egymásrautaltságokat. Az alkalmazások üzembe helyezésének egyszerűsítése érdekében .NET Aspire projektek létrehozhatják a JSON formázott fájlként definiált összes erőforrás jegyzékfájlját.
Jegyzék létrehozása
A jegyzék létrehozásához érvényes .NET.NET Aspire projektre van szükség. Első lépésként hozzon létre egy .NET.NET Aspire projektet a aspire-starter
.NET sablonnal:
dotnet new aspire-starter --use-redis-cache `
-o AspireApp && `
cd AspireApp
A jegyzéklétrehozás úgy érhető el, hogy egy speciális céllal futtatja a dotnet build
:
dotnet run --project AspireApp.AppHost\AspireApp.AppHost.csproj `
--publisher manifest `
--output-path ../aspire-manifest.json
Borravaló
A --output-path
támogatja a relatív útvonalakat. Az előző parancs a ../aspire-manifest.json
használatával helyezi el a jegyzékfájlt a projektkönyvtár gyökerében.
További információ: dotnet run. Az előző parancs a következő kimenetet hozza létre:
Building...
info: Aspire.Hosting.Publishing.ManifestPublisher[0]
Published manifest to: .\AspireApp.AppHost\aspire-manifest.json
A létrehozott fájl a .NET.NET Aspire jegyzék, és az eszközök támogatják a célfelhő-környezetekben való üzembe helyezést.
Jegyzet
Az indítási profil részeként jegyzékfájlt is létrehozhat. Vegye figyelembe a következő 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"
}
}
}
Alapszintű jegyzékformátum
Ha közzéteszi a jegyzékfájlt az alapértelmezett kezdősablonból .NET Aspire a következő JSON kimenetet hozza létre:
{
"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"
}
}
}
}
}
A jegyzékformátum JSON egyetlen, resources
nevű objektumból áll, amely a Program.cs megadott erőforrásokhoz tartalmaz tulajdonságot (az egyes nevek name
argumentuma a JSONösszes gyermekerőforrás-objektumának tulajdonsága).
Kapcsolati sztring és kötéshivatkozások
Az előző példában két projekterőforrás és egy Redis gyorsítótár-erőforrás található. A webfrontend a apiservice (projekt) és gyorsítótár- (Redis) erőforrásoktól függ.
Ez a függőség azért ismert, mert a webfrontend környezeti változói olyan helyőrzőket tartalmaznak, amelyek a két másik erőforrásra hivatkoznak:
"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}"
},
A apiservice
erőforrásra webfrontend
hivatkozik az alkalmazásgazda WithReference(apiservice)
fájlban található hívási Program.cs használatával, redis
pedig a hívási WithReference(cache)
:
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();
A projekterőforrás-típusok közötti hivatkozások szolgáltatásfelderítést eredményeznek, változókat injektálnak a hivatkozó projektbe. A jól ismert referenciatípusokra( például Redis) mutató hivatkozások a kapcsolati sztringek injektálásához vezetnek.
Az alkalmazásmodell erőforrásaival és a köztük lévő hivatkozásokkal kapcsolatos további információkért lásd: .NET.NET Aspire vezénylés áttekintése.
Helyőrző sztringstruktúra
A helyőrző sztringek a .NET.NET Aspire jegyzék szerkezetére hivatkoznak:
A helyőrző sztring utolsó szegmensét (ebben az esetbenurl
) a jegyzéket feldolgozó eszköz hozza létre. A helyőrző sztringen több utótag is használható:
-
connectionString
: Jól ismert erőforrástípusokhoz, például Redis. Az üzembehelyezési eszközök lefordítják az erőforrást a célfelhő-környezet legmegfelelőbb infrastruktúrájában, majd létrehoznak egy .NET.NET Aspire kompatibilis kapcsolati sztringet a használandó alkalmazás számára. Azcontainer.v0
erőforrásokon előfordulhat, hogy aconnectionString
mező jelen van, és explicit módon van megadva. Ez olyan forgatókönyveket támogat, ahol a tárolóerőforrás-típusra a WithReference bővítmény hivatkozik, de kifejezetten tárolóként szeretné üzemeltetni. -
url
: Olyan szolgáltatásközi hivatkozások esetén, ahol jól formázott URL-címre van szükség. Az üzembe helyezési eszköz a jegyzékben és az alapul szolgáló számítási/hálózati topológiában meghatározott séma, protokoll és átvitel alapján állítja elő aurl
. -
host
: Az URL gazdagépszegmense. -
port
: Az URL-cím portszegmense.
Erőforrástípusok
Minden erőforráshoz tartozik egy type
mező. Amikor egy központi telepítési eszköz beolvassa a jegyzékfájlt, be kell olvasnia a típust annak ellenőrzéséhez, hogy képes-e megfelelően feldolgozni a jegyzékfájlt. Az .NET.NET Aspire előzetes verzióban minden erőforrástípus rendelkezik egy v0
utótagot, amely jelzi, hogy változhatnak. A .NET.NET Aspire megközelítések kiadásával egy v1
utótag jelzi, hogy az adott erőforrástípus jegyzékfájljának struktúráját stabilnak kell tekinteni (a későbbi frissítések ennek megfelelően növelik a verziószámot).
Gyakori erőforrásmezők
A type
mező az egyetlen olyan mező, amely minden erőforrástípusban gyakori, azonban a project.v0
, container.v0
és executable.v0
erőforrástípusok is osztoznak a env
és bindings
mezőkön.
Jegyzet
A executable.v0
erőforrástípus nincs teljes mértékben implementálva a jegyzékben, mivel az üzembe helyezési forgatókönyvekben nem áll rendelkezésre segédprogram. A végrehajtható fájlok tárolózásával kapcsolatos további információkért lásd Dockerfileerőforrástípusokat.
A env
mezőtípus egy alapkulcs-/értékleképezés, amelyben az értékek helyőrző sztringeket tartalmazhatnak.
A kötések a bindings
mezőben vannak megadva, és mindegyik kötés a saját mezőjében található a bindings
JSON objektum alatt. A .NET csomópontban lévő .NET Aspirebindings
jegyzék által kihagyott mezők a következők:
-
scheme
: Az alábbi értékek egyiketcp
,udp
,http
vagyhttps
. -
protocol
: Az alábbi értékek egyiketcp
vagyudp
-
transport
: Ugyanaz, mintscheme
, dehttp
éshttp2
közötti egyértelműsítésre szolgál . -
containerPort
: Nem kötelező, ha nem adja meg a 80-ás port alapértelmezett értékét.
A inputs
mező
Egyes erőforrások létrehoznak egy inputs
mezőt. Ez a mező az erőforrás bemeneti paramétereinek megadására szolgál. A inputs
mező egy JSON objektum, amelyben minden tulajdonság egy bemeneti paraméter, amelyet a helyőrző struktúrafeloldáskor használnak. Az connectionString
rendelkező erőforrások például a inputs
mező használatával adhatnak meg egy password
a kapcsolati sztringhez:
"connectionString": "Host={<resourceName>.bindings.tcp.host};Port={<resourceName>.bindings.tcp.port};Username=admin;Password={<resourceName>.inputs.password};"
A kapcsolati sztring helyőrzője a password
bemeneti paraméterre hivatkozik a inputs
mezőből:
"inputs": {
"password": {
"type": "string",
"secret": true,
"default": {
"generate": {
"minLength": 10
}
}
}
}
Az előző JSON kódrészlet egy inputs
mezővel rendelkező erőforrás connectionString
mezőjét jeleníti meg. A password
bemeneti paraméter egy sztringtípus, és titkos kódként van megjelölve. A default
mező a bemeneti paraméter alapértelmezett értékének megadására szolgál. Ebben az esetben az alapértelmezett érték a generate
mező használatával jön létre, minimális hosszúságú véletlenszerű sztringgel.
Beépített erőforrások
Az alábbi táblázat a .NET Aspire csapat által kifejlesztett .NET Aspire és bővítmények által explicit módon létrehozott erőforrástípusok listáját tartalmazza:
Felhőbeli erőforrástípusok
Ezek az erőforrások a 📦Aspireérhetők el. NuGet-csomag üzemeltetése.
Alkalmazásmodell használata | Jegyzék típusú erőforrás | Címsorhivatkozás |
---|---|---|
AddContainer | container.v0 |
tárolóerőforrás-típus |
PublishAsDockerFile |
dockerfile.v0 |
Dockerfile erőforrástípusok |
AddDatabase | value.v0 |
MongoDB Server erőforrástípusok |
AddMongoDB | container.v0 |
MongoDB erőforrástípusok |
AddDatabase | value.v0 |
MySQL Server erőforrástípusok |
AddMySql | container.v0 |
MySQL erőforrástípusok |
AddDatabase | value.v0 |
Postgres erőforrástípusok |
AddPostgres | container.v0 |
Postgres erőforrástípusok |
AddProject | project.v0 |
Project-erőforrástípus |
AddRabbitMQ | container.v0 |
RabbitMQ erőforrástípusok |
AddRedis | container.v0 |
Redis erőforrástípus |
AddDatabase | value.v0 |
SQL Server erőforrástípusok |
AddSqlServer | container.v0 |
SQL Server erőforrástípusok |
Projekterőforrás típusa
Példakód:
var builder = DistributedApplication.CreateBuilder(args);
var apiservice = builder.AddProject<Projects.AspireApp_ApiService>("apiservice");
Példajegyzék:
"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"
}
}
}
Tárolóerőforrás típusa
Példakód:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddContainer("mycontainer", "myimage")
.WithEnvironment("LOG_LEVEL", "WARN")
.WithHttpEndpoint(3000);
Példajegyzék:
{
"resources": {
"mycontainer": {
"type": "container.v0",
"image": "myimage:latest",
"env": {
"LOG_LEVEL": "WARN"
},
"bindings": {
"http": {
"scheme": "http",
"protocol": "tcp",
"transport": "http",
"containerPort": 3000
}
}
}
}
}
Dockerfile erőforrástípusok
Példakód:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddNodeApp("nodeapp", "../nodeapp/app.js")
.WithHttpEndpoint(hostPort: 5031, env: "PORT")
.PublishAsDockerFile();
Borravaló
A PublishAsDockerFile
hívás a jegyzékben szereplő Dockerfile erőforrástípus létrehozásához szükséges, és ez a bővítménymetódus csak a ExecutableResource típuson érhető el.
Példajegyzék:
{
"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 erőforrástípusok
Példakód:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddPostgres("postgres1")
.AddDatabase("shipping");
Példajegyzék:
{
"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 erőforrástípusok
RabbitMQ tárolóerőforrásként container.v0
modellezett. Az alábbi minta bemutatja, hogyan lettek hozzáadva az alkalmazásmodellhez.
var builder = DistributedApplication.CreateBuilder(args);
builder.AddRabbitMQ("rabbitmq1");
Az előző kód a következő jegyzékfájlt hozza létre:
{
"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 erőforrástípus
Példakód:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddRedis("redis1");
Példajegyzék:
{
"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 erőforrástípusok
Példakód:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddSqlServer("sql1")
.AddDatabase("shipping");
Példajegyzék:
{
"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 erőforrástípusok
Példakód:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddMongoDB("mongodb1")
.AddDatabase("shipping");
Példajegyzék:
{
"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 erőforrástípusok
Példakód:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddMySql("mysql1")
.AddDatabase("shipping");
Példajegyzék:
{
"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-specifikus erőforrástípusok
A következő erőforrások érhetők el a 📦Aspire. Vendégszeretet.Azure NuGet-csomag.
Alkalmazásmodell használata | Jegyzék típusú erőforrás | Címsorhivatkozás |
---|---|---|
AddAzureAppConfiguration | azure.bicep.v0 |
Azure alkalmazáskonfigurációs erőforrástípusok |
AddAzureKeyVault | azure.bicep.v0 |
Azure Key Vault erőforrástípus |
AddAzureRedis |
azure.bicep.v0 |
Azure Redis erőforrástípusok |
AddAzureServiceBus | azure.bicep.v0 |
Azure Service Bus erőforrástípus |
AddAzureSqlServer(...) |
azure.bicep.v0 |
Azure SQL-erőforrástípusok |
AddAzureSqlServer(...).AddDatabase(...) |
value.v0 |
Azure SQL-erőforrástípusok |
AddAzurePostgresFlexibleServer(...) |
azure.bicep.v0 |
Azure Postgres erőforrástípusok |
AddAzurePostgresFlexibleServer(...).AddDatabase(...) |
value.v0 |
Azure Postgres erőforrástípusok |
AddAzureStorage | azure.storage.v0 |
Azure Storage-erőforrástípusok |
AddBlobs | value.v0 |
Azure Storage-erőforrástípusok |
AddQueues | value.v0 |
Azure Storage-erőforrástípusok |
AddTables | value.v0 |
Azure Storage-erőforrástípusok |
Azure Key Vault erőforrástípus
Példakód:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddAzureKeyVault("keyvault1");
Példajegyzék:
{
"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 erőforrástípus
Példakód:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddAzureServiceBus("sb1")
.AddTopic("topic1", [])
.AddTopic("topic2", [])
.AddQueue("queue1")
.AddQueue("queue2");
Példajegyzék:
{
"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 Storage-erőforrástípusok
Példakód:
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("images");
storage.AddBlobs("blobs");
storage.AddQueues("queues");
storage.AddTables("tables");
Példajegyzék:
{
"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 erőforrástípus
Példakód:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddAzureRedis("azredis1");
Példajegyzék:
{
"resources": {
"azredis": {
"type": "azure.bicep.v0",
"connectionString": "{azredis.outputs.connectionString}",
"path": "azredis.module.bicep",
"params": {
"principalId": "",
"principalName": ""
}
}
}
}
Azure alkalmazáskonfiguráció erőforrástípusa
Példakód:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddAzureAppConfiguration("appconfig1");
Példajegyzék:
{
"resources": {
"appconfig1": {
"type": "azure.bicep.v0",
"connectionString": "{appconfig1.outputs.appConfigEndpoint}",
"path": "aspire.hosting.azure.bicep.appconfig.bicep",
"params": {
"configName": "appconfig1",
"principalId": "",
"principalType": ""
}
}
}
}
Azure SQL-erőforrástípusok
Példakód:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddAzureSqlServer("sql")
.AddDatabase("inventory");
Példajegyzék:
{
"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 erőforrástípusok
Példakód:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddAzurePostgresFlexibleServer("postgres")
.AddDatabase("db");
Példajegyzék:
{
"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"
}
}
}
A Azure Developer CLI támogatott erőforrástípusok
Az Azure Developer CLI (azd) egy olyan eszköz, amely .NET Aspire projektek üzembe helyezésére használható Azure Container Apps. Az azure.bicep.v0
erőforrástípussal a felhőalapú erőforrástároló-típusok Azure-specifikus erőforrásokhoz rendelhetők le. Az alábbi táblázat a Azure Developer CLItámogatott erőforrástípusokat sorolja fel:
Név | Cloud-agnostic API | Azure API |
---|---|---|
Redis | AddRedis | AddAzureRedis |
Postgres | AddPostgres | AddAzurePostgresFlexibleServer |
SQL Server | AddSqlServer | AddAzureSqlServer |
Ha az erőforrások Azure erőforrásokként konfigurálva lesznek, a jegyzékben a azure.bicep.v0
erőforrástípus jön létre. További információ: .NET Aspire-projekt üzembe helyezése Azure Container Apps a Azure Developer CLI (részletes útmutató)használatával.