Megosztás a következőn keresztül:


.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, resourcesnevű 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.

Diagram, amely bemutatja, hogy mely erőforrások járulnak hozzá a megfelelő helyőrző sztringekhez.

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:

Egy diagram, amely bemutatja, hogy a jegyzék JSON struktúrája hogyan képez le helyőrző sztringeket.

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. Az container.v0 erőforrásokon előfordulhat, hogy a connectionString 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ő a url.
  • 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 bindingsJSON 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 egyike tcp, udp, httpvagy https.
  • protocol: Az alábbi értékek egyike tcp vagy udp
  • transport: Ugyanaz, mint scheme, de http és http2kö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 connectionStringrendelkező 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.v0modellezett. 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.

Lásd még: