.NET Aspire Azure tümleştirmelerine genel bakış
Azure kaynakları ekle
Tüm .NET AspireAzure barındırma tümleştirmeleri Azure kaynakları kullanıma sunar ve kurala göre AddAzure*
API'ler kullanılarak eklenir. Bu kaynakları .NET Aspire uygulama konağınıza eklediğinizde, bunlar bir Azure hizmetini temsil ederler.
AddAzure*
API, IResourceBuilder<T>'nin T
kaynağı türü olduğu bir Azure'i döndürür. Bu IResourceBuilder<T>
(oluşturucu) arabirimleri, Azureiçinde temel kaynağını yapılandırmanıza olanak tanıyan akıcı bir API sağlar. Yeni Azure kaynakları eklemek, kaynakları var olan olarak işaretlemek ve kaynakların çeşitli yürütme bağlamlarında nasıl davranacağını yapılandırmak için API'ler vardır.
Tipik geliştirici deneyimi
.NET Aspire uygulama konağınız Azure kaynaklar içerdiğinde ve bunu yerel olarak çalıştırdığınızda (tipik geliştirici F5 veya dotnet run
deneyimi), Azure kaynaklarıAzure aboneliğinizde sağlanır. Bu, geliştirici olarak uygulamanızın bağlamında yerel ortamda hata ayıklama yapmanıza olanak tanır.
.NET .NET Aspire, maliyetleri varsayılan olarak Temel veya StandartStok Tutma Birimi (SKU) kullanarak Azure tümleştirmeleri için en aza indirmeyi amaçlar. Bu mantıklı varsayılanlar sağlansa da Azure kaynaklarını gereksinimlerinize uyacak şekilde özelleştirebilirsiniz. Ayrıca, bazı tümleştirmeler yerel geliştirme, test ve hata ayıklama için yararlı olan öykünücülerini veya kapsayıcılarını destekler. Varsayılan olarak, uygulamanızı yerel olarak çalıştırdığınızda, Azure kaynakları gerçek Azure hizmetini kullanır. Ancak yerel öykünücüleri veya kapsayıcıları kullanacak şekilde yapılandırabilir ve yerel geliştirme sırasında gerçek Azure hizmetiyle ilişkili maliyetlerden kaçınabilirsiniz.
Yerel öykünücüler
Bazı Azure hizmetleri yerel olarak çalışacak şekilde simüle edilebilir. Şu anda .NET Aspire aşağıdaki Azure öykünücülerini destekler:
Barındırma entegrasyonu | Açıklama |
---|---|
Azure Cosmos DB |
AzureCosmosExtensions.RunAsEmulator ile IResourceBuilder<AzureCosmosDBResource> üzerinde Cosmos DB kaynağını NoSQL API ile öykünmek üzere yapılandırmak için çağırın. |
Azure Event Hubs | Event Hubs kaynağını öykünmek üzere yapılandırmak için IResourceBuilder<AzureEventHubsResource> üstünden AzureEventHubsExtensions.RunAsEmulator çalıştırın. |
Azure Service Bus | Service Bus kaynağını Service Bus öykünücüsü AzureServiceBusExtensions.RunAsEmulatoröykünecek şekilde yapılandırmak için IResourceBuilder<AzureServiceBusResource> çağırın. |
Azure SignalR Service |
AzureSignalRExtensions.RunAsEmulator'ı IResourceBuilder<AzureSignalRResource> üzerinde çağırarak, SignalR kaynağını AzureSignalR öykünücü ile emüle edilecek şekilde yapılandırın. |
Azure Depolama | Depolama kaynağını Azurite ile simüle etmek üzere IResourceBuilder<AzureStorageResource> üzerinde AzureStorageExtensions.RunAsEmulator komutunu çalıştırın. |
Azure kaynaklarınızın yerel öykünücüleri kullanmasını sağlamak için, RunAsEmulator
kaynak oluşturucusunun Azure yöntemini ardışık olarak çağırın. Bu yöntem, Azure kaynağını gerçek Azure hizmeti yerine yerel öykünücüyü kullanacak şekilde yapılandırır.
Önemli
Azure kaynak oluşturucusunda kullanılabilir RunAsEmulator
API'lerinden herhangi birinin çağrılması, yayımlama bildirimini etkilemez. Uygulamanızı yayımladığınızda, oluşturulan Bicep dosyası yerel öykünücüyü değil gerçek Azure hizmetini yansıtır.
Yerel kapsayıcılar
Bazı Azure kaynakları, açık kaynak veya şirket içi kapsayıcılar kullanılarak yerel olarak değiştirilebilir. Kapsayıcıdaki bir Azure kaynağını yerel olarak değiştirmek için, RunAsContainer
kaynak oluşturucusunda Azure yöntemine bir çağrı zincirleyin. Bu yöntem, Azure kaynağını gerçek Azure hizmeti yerine yerel geliştirme ve test için hizmetin kapsayıcılı bir sürümünü kullanacak şekilde yapılandırır.
Şu anda .NET Aspire kapsayıcı olarak aşağıdaki Azure hizmetlerini destekler:
Barındırma entegrasyonu | Detaylar |
---|---|
Azure Cache for Redis |
AzureRedisExtensions.RunAsContainer görüntüsünü temel alarak, kapsayıcıda yerel olarak çalışacak şekilde yapılandırmak için IResourceBuilder<AzureRedisCacheResource> üzerindeki docker.io/library/redis 'ı çağırın. |
Azure PostgreSQL Esnek Server |
AzurePostgresExtensions.RunAsContainer görüntüsünü temel alarak, kapsayıcıda yerel olarak çalışacak şekilde yapılandırmak için IResourceBuilder<AzurePostgresFlexibleServerResource> üzerindeki docker.io/library/postgres 'ı çağırın. |
Azure SQL Server |
AzureSqlExtensions.RunAsContainer görüntüsünü temel alarak, kapsayıcıda yerel olarak çalışacak şekilde yapılandırmak için IResourceBuilder<AzureSqlServerResource> üzerindeki mcr.microsoft.com/mssql/server 'ı çağırın. |
Not
Öykünücüler gibi, RunAsContainer
'ı bir Azure kaynak oluşturucusunda kullanmak, yayımlama bildirimini etkilemez. Uygulamanızı yayımladığınızda, oluşturulan Bicep dosyası yerel kapsayıcıyı değil gerçek Azure hizmetini yansıtır.
Azure tümleştirme API'lerini anlama
.NET .NET Aspire'nin gücü, inanılmaz bir geliştirici iç döngüsü sağlama yeteneğinde yatmaktadır. Azure tümleştirmeleri de diğerlerinden farklı değildir. Onlar, tüm Azure kaynaklarında paylaşılan bir ortak API ve desen kümesi sağlarlar. Bu API'ler ve desenler, Azure kaynaklarla tutarlı bir şekilde çalışmayı kolaylaştırmak için tasarlanmıştır.
Önceki kapsayıcılar bölümünde, Azure hizmetlerinin kapsayıcılarda yerel olarak nasıl çalıştırılacağını öğrendiniz.
.NET
.NET Aspirehakkında bilginiz varsa, yerel AddAzureRedis("redis").RunAsContainer()
kapsayıcısı almak için docker.io/library/redis
çağırmanın AddRedis("redis")
'den ne kadar farklı olduğunu merak edebilirsiniz çünkü her ikisi de aynı yerel kapsayıcıyla sonuçlanır.
Yanıt, yerel olarak çalıştırılırken bir fark olmamasıdır. Ancak, yayımlandıklarında farklı kaynaklar elde edersiniz:
API (Uygulama Programlama Arayüzü) | Çalıştırma modu | Yayımlama modu |
---|---|---|
AddAzureRedis("redis").RunAsContainer() | Yerel Redis kapsayıcısı | Azure Cache for Redis |
AddRedis("redis") | Yerel Redis konteyner | Azure ile Redis görüntüsüne sahip Kapsayıcı Uygulama |
Aynı durum SQL ve PostgreSQL hizmetleri için de geçerlidir:
Uygulama Programlama Arayüzü (API) | Çalıştırma modu | Yayımlama modu |
---|---|---|
AddAzurePostgresFlexibleServer("postgres"). RunAsContainer() | Yerel PostgreSQL kapsayıcısı | Azure PostgreSQL Esnek Server |
AddPostgres("postgres") | Yerel PostgreSQL kapsayıcısı | Azure ile PostgreSQL görüntüsüne sahip Kapsayıcı Uygulama |
AddAzureSqlServer("sql").RunAsContainer() | Yerel SQL Server kapsayıcısı | Azure SQL Server |
AddSqlServer("sql") | Yerel SQL Server kapsayıcısı | Azure ile SQL Server görüntüsüne sahip Kapsayıcı Uygulama |
Çalıştırma ve yayımlama modları arasındaki fark hakkında daha fazla bilgi için bkz. .NET.NET Aspire uygulama konağı: Yürütme bağlamı.
Azure kaynaklarını farklı modlarda ifade etmek için API'ler
Dağıtılmış uygulama oluşturucusu, uygulama ana bilgisayarının bir parçası olarak, oluşturucu desenini kullanarak kaynakları AddAzure*
uygulama modeline ekler. Geliştiriciler bu kaynakları yapılandırabilir ve davranışlarını farklı yürütme bağlamlarında tanımlayabilir.
Azure barındırma tümleştirmeleri, bu kaynakların nasıl "yayımlanması" ve "çalıştırılması" gerektiğini belirtmek için API'ler sağlar.
Uygulama ana bilgisayarı çalıştığında, uygulama ana bilgisayarının veya modunda olup olmadığını belirlemek için Publish kullanılır. Bu API'lerin adlandırma kuralları, kaynak için hedeflenen eylemi gösterir.
Aşağıdaki tabloda, Azure kaynaklarını ifade etmek için kullanılan adlandırma kuralları özetlemektedir:
Not
Tüm API'ler tüm Azure kaynaklarda kullanılamaz. Örneğin, bazı Azure kaynakları kapsüllenmiş hale getirilebilir veya taklit edilebilirken, diğerleri bu işlemleri gerçekleştiremez.
Yürütme modları hakkında daha fazla bilgi için bkz. yürütme bağlamı .
Genel çalıştırma modu API kullanım örnekleri
Çalışma zamanı sırasında mevcut bir kaynakla dağıtmaya veya güncelleştirmeye gerek kalmadan dinamik olarak etkileşim kurmanız gerektiğinde RunAsExisting kullanın. Dağıtım yapılandırmasının bir parçası olarak mevcut kaynakları bildirirken doğru kapsamların ve izinlerin uygulandığından emin olmak için PublishAsExisting kullanın. Son olarak, her iki yapılandırmada da mevcut kaynakları bildirirken, referansları parametreleştirme gereğiyle birlikte AsExisting<T>(IResourceBuilder<T>, IResourceBuilder<ParameterResource>, IResourceBuilder<ParameterResource>) kullanın.
IsExisting(IResource) IResource uzantısı yöntemini çağırarak bir kaynağın mevcut kaynak olarak işaretlenip işaretlenmediğini sorgulayabilirsiniz. Daha fazla bilgi için bkz. Azuremevcut kaynaklarını kullanma.
Mevcut Azure kaynaklarını kullanma
.NET Aspire, mevcut Azure kaynaklarına başvurma desteği sağlar. Var olan bir kaynağı PublishAsExisting
, RunAsExisting
ve AsExisting
API'leri aracılığıyla işaretlersiniz. Bu API'ler geliştiricilerin zaten dağıtılmış Azure kaynaklara başvurmasına, bunları yapılandırmasına ve Bicep şablonlarını kullanarak uygun dağıtım bildirimleri oluşturmasına olanak sağlar.
Bu API'lerle ilişkili mevcut kaynaklar, .NET.NET Aspire'in altyapı olarak kodlama yeteneklerisayesinde, rol atamaları ve diğer özelleştirmelerle geliştirilebilir. Bu API'ler, Bicep şablonlarıyla dağıtılabilir Azure kaynaklarla sınırlıdır.
Mevcut Azure kaynaklarını çalıştırma modu için yapılandırma
RunAsExisting yöntemi, dağıtılmış bir uygulama "çalıştır" modunda yürütülürken kullanılır. Bu modda, başvuruda bulunan Azure kaynağının zaten var olduğunu varsayar ve yürütme sırasında kaynağı sağlamadan onunla tümleşir. bir Azure kaynağını mevcut olarak işaretlemek için kaynak oluşturucusunun RunAsExisting
yöntemini çağırın. Aşağıdaki örneği göz önünde bulundurun:
var builder = DistributedApplication.CreateBuilder();
var existingServiceBusName = builder.AddParameter("existingServiceBusName");
var existingServiceBusResourceGroup = builder.AddParameter("existingServiceBusResourceGroup");
var serviceBus = builder.AddAzureServiceBus("messaging")
.RunAsExisting(existingServiceBusName, existingServiceBusResourceGroup);
serviceBus.AddServiceBusQueue("queue");
Önceki kod:
- Yeni bir
builder
örneği oluşturur. - Oluşturucuya
existingServiceBusName
adlı bir parametre ekler. - oluşturucuya Azure Service Bus adlı bir
messaging
kaynağı ekler. -
RunAsExisting
kaynak oluşturucusununserviceBus
yöntemini çağırır veexistingServiceBusName
parametresini geçirir; alternatif olarak,string
parametre aşırı yüklemesini kullanabilirsiniz. -
queue
kaynağınaserviceBus
adlı bir kuyruk ekler.
Varsayılan olarak, Service Bus parametre başvurusunun aynı Azure kaynak grubunda olduğu varsayılır. Ancak, farklı bir kaynak grubundaysa, uygun kaynak gruplandırma işlemini doğru belirtmek için kaynak grubunu açıkça parametre olarak geçirebilirsiniz.
Mevcut Azure kaynaklarını yayımlama modu için yapılandırma
PublishAsExisting yöntemi, amaç yayımlama modu sırasında zaten var olan bir Azure kaynağını bildirmek ve bunlara başvurmak olduğunda "yayımlama" modunda kullanılır. Bu API, Bicep'teki mevcut kaynaklarla eşleşen kaynak tanımlarını içeren bildirimlerin ve şablonların oluşturulmasını kolaylaştırır.
bir Azure kaynağını "yayımlama" modunda var olarak işaretlemek için kaynak oluşturucusunda PublishAsExisting
yöntemini çağırın. Aşağıdaki örneği göz önünde bulundurun:
var builder = DistributedApplication.CreateBuilder();
var existingServiceBusName = builder.AddParameter("existingServiceBusName");
var existingServiceBusResourceGroup = builder.AddParameter("existingServiceBusResourceGroup");
var serviceBus = builder.AddAzureServiceBus("messaging")
.PublishAsExisting(existingServiceBusName, existingServiceBusResourceGroup);
serviceBus.AddServiceBusQueue("queue");
Önceki kod:
- Yeni bir
builder
örneği oluşturur. - Oluşturucuya
existingServiceBusName
adlı bir parametre ekler. - oluşturucuya Azure Service Bus adlı bir
messaging
kaynağı ekler. -
PublishAsExisting
kaynak oluşturucusununserviceBus
yöntemini çağırır veexistingServiceBusName
parametresini geçirir; alternatif olarak,string
parametre aşırı yüklemesini kullanabilirsiniz. -
queue
kaynağınaserviceBus
adlı bir kuyruk ekler.
Uygulama konağı yayımlama modunda yürütüldükten sonra oluşturulan bildirim dosyası, mevcut existingResourceName
kaynağına başvurmak için kullanılabilecek Azure parametresini içerir. Bildirim dosyasının aşağıdaki oluşturulmuş kısmi kod parçacığını göz önünde bulundurun:
"messaging": {
"type": "azure.bicep.v0",
"connectionString": "{messaging.outputs.serviceBusEndpoint}",
"path": "messaging.module.bicep",
"params": {
"existingServiceBusName": "{existingServiceBusName.value}",
"principalType": "",
"principalId": ""
}
},
"queue": {
"type": "value.v0",
"connectionString": "{messaging.outputs.serviceBusEndpoint}"
}
Bildirim dosyası hakkında daha fazla bilgi için, dağıtım aracı oluşturucuları için bildirim biçimine .NET.NET Aspire bakın.
Ayrıca, oluşturulan Bicep şablonu mevcut existingResourceName
kaynağına başvurmak için kullanılabilecek Azure parametresini içerir. Aşağıdaki oluşturulan Bicep şablonunu göz önünde bulundurun:
@description('The location for the resource(s) to be deployed.')
param location string = resourceGroup().location
param existingServiceBusName string
param principalType string
param principalId string
resource messaging 'Microsoft.ServiceBus/namespaces@2024-01-01' existing = {
name: existingServiceBusName
}
resource messaging_AzureServiceBusDataOwner 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(messaging.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '090c5cfd-751d-490a-894a-3ce6f1109419'))
properties: {
principalId: principalId
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '090c5cfd-751d-490a-894a-3ce6f1109419')
principalType: principalType
}
scope: messaging
}
resource queue 'Microsoft.ServiceBus/namespaces/queues@2024-01-01' = {
name: 'queue'
parent: messaging
}
output serviceBusEndpoint string = messaging.properties.serviceBusEndpoint
Oluşturulan Bicep şablonları hakkında daha fazla bilgi için bkz. Kod olarak altyapı ve diğer yayımlama API'lerini göz önünde bulundurun .
Uyarı
Kimlik doğrulaması gerektiren mevcut kaynaklarla etkileşim kurarken, .NET.NET Aspire uygulama modelinde yapılandırdığınız kimlik doğrulama stratejisinin mevcut kaynağın izin verdiği kimlik doğrulama stratejisiyle uyumlu olduğundan emin olun. Örneğin, yönetilen kimliğe izin verecek şekilde yapılandırılmamış mevcut bir AzurePostgreSQL kaynağında yönetilen kimlik kullanmak mümkün değildir. Benzer şekilde, mevcut bir AzureRedis kaynağı erişim anahtarlarını devre dışı bırakmışsa erişim anahtarı kimlik doğrulaması kullanmak mümkün değildir.
Tüm modlarda mevcut Azure kaynaklarını yapılandırma
AsExisting<T>(IResourceBuilder<T>, IResourceBuilder<ParameterResource>, IResourceBuilder<ParameterResource>) yöntemi, dağıtılmış uygulama "çalıştır" veya "yayımla" modunda çalışırken kullanılır.
AsExisting
yöntemi her iki senaryoda da çalıştığından, yalnızca kaynak adına veya kaynak grubu adına parametreli başvuruyu destekler. Bu yaklaşım hem test hem de üretim ortamlarında aynı kaynağın kullanılmasını önlemeye yardımcı olur.
bir Azure kaynağını mevcut olarak işaretlemek için kaynak oluşturucusunun AsExisting
yöntemini çağırın. Aşağıdaki örneği göz önünde bulundurun:
var builder = DistributedApplication.CreateBuilder();
var existingServiceBusName = builder.AddParameter("existingServiceBusName");
var existingServiceBusResourceGroup = builder.AddParameter("existingServiceBusResourceGroup");
var serviceBus = builder.AddAzureServiceBus("messaging")
.AsExisting(existingServiceBusName, existingServiceBusResourceGroup);
serviceBus.AddServiceBusQueue("queue");
Önceki kod:
- Yeni bir
builder
örneği oluşturur. - Oluşturucuya
existingServiceBusName
adlı bir parametre ekler. - oluşturucuya Azure Service Bus adlı bir
messaging
kaynağı ekler. -
AsExisting
kaynak oluşturucusununserviceBus
yöntemini çağırır veexistingServiceBusName
parametresini geçirir. -
queue
kaynağınaserviceBus
adlı bir kuyruk ekler.
Bağlantı dizeleriyle mevcut Azure kaynaklarını ekleme
Not
Bağlantı dizeleri veritabanı bağlantıları, ileti aracıları, uç nokta URI'leri ve diğer hizmetler gibi çok çeşitli bağlantı bilgilerini temsil etmek için kullanılır. .NET .NET Aspire sıfatında, her tür bağlantı bilgisini temsil etmek için "bağlantı dizesi" terimi kullanılır.
Aşağıdaki örneği göz önünde bulundurun; burada yayın modunda bir Azure Depolama kaynağı eklerken, çalıştırma modunda mevcut bir Azure Depolamaya bir bağlantı dizesi eklersiniz:
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.ExecutionContext.IsPublishMode
? builder.AddAzureStorage("storage")
: builder.AddConnectionString("storage");
builder.AddProject<Projects.Api>("api")
.WithReference(storage);
// After adding all resources, run the app...
Önceki kod:
- Yeni bir
builder
örneği oluşturur. - "Yayımla" modunda Azure adlı bir
storage
Depolama kaynağı ekler. - "Çalıştır" modunda Azure adlı mevcut bir
storage
Depolamaya bağlantı dizesi ekler. - Oluşturucuya
api
adlı bir proje ekler. -
api
projesi, moddan bağımsız olarakstorage
kaynağına başvurur.
Kullanıcı API projesi, uygulama ana bilgisayarı tarafından nasıl yapılandırıldığına dair bilgisi olmadan bağlantı dizesi bilgilerini kullanır. "Yayımlama" modunda kod, yeni bir ConnectionStrings__storage
(veya ConnectionStrings:storage
) yapılandırma anahtarından çözülür. Bu yapılandırma değerleri, uygulama çalıştırıldığında görüntülenebilir. Daha fazla bilgi için bkz. Kaynak ayrıntıları.
birinci sınıf AsExisting
API ile modellenen mevcut kaynaklardan farklı olarak, bağlantı dizeleri olarak modellenen mevcut kaynak ek rol atamaları veya altyapı özelleştirmeleriyle geliştirilemez.
Azure Kapsayıcı Uygulaması Olarak Yayımla
.NET .NET Aspire temel kaynakları altyapı yönetimini azaltan sunucusuz bir platform olan Azure Container Appsolarak yayımlamanıza olanak tanır. Desteklenen kaynak türlerinden bazıları şunlardır:
- ContainerResource: Belirtilen kapsayıcıyı temsil eder.
- ExecutableResource: Belirtilen yürütülebilir işlemi temsil eder.
- ProjectResource: Belirtilen .NET projelerini temsil eder.
Bu kaynakları yayımlamak için aşağıdaki API'leri kullanın:
- AzureContainerAppContainerExtensions.PublishAsAzureContainerApp<T>(IResourceBuilder<T>, Action<AzureResourceInfrastructure,ContainerApp>)
- AzureContainerAppExecutableExtensions.PublishAsAzureContainerApp<T>(IResourceBuilder<T>, Action<AzureResourceInfrastructure,ContainerApp>)
- AzureContainerAppProjectExtensions.PublishAsAzureContainerApp<T>(IResourceBuilder<T>, Action<AzureResourceInfrastructure,ContainerApp>)
Bu API'ler, kaynakları Azure Kapsayıcı Uygulaması olarak yayımlanacak şekilde yapılandırır ve gerekli altyapı ile Bicep dosyalarını uygulama konağınıza eklemek için dolaylı olarak AddAzureContainerAppsInfrastructure(IDistributedApplicationBuilder)'i çağırır. Örneğin, aşağıdaki kodu göz önünde bulundurun:
var builder = DistributedApplication.CreateBuilder();
var env = builder.AddParameter("env");
var api = builder.AddProject<Projects.AspireApi>("api")
.PublishAsAzureContainerApp<Projects.AspireApi>((infra, app) =>
{
app.Template.Containers[0].Value!.Env.Add(new ContainerAppEnvironmentVariable
{
Name = "Hello",
Value = env.AsProvisioningParameter(infra)
});
});
Önceki kod:
- Yeni bir
builder
örneği oluşturur. - Oluşturucuya
env
adlı bir parametre ekler. - Oluşturucuya
api
adlı bir proje ekler. -
infra
'ün AzureResourceInfrastructure veapp
'in ContainerAppolduğu durumlarda,api
kaynak oluşturucusununPublishAsAzureContainerApp
yöntemini çağırarak, Azure Container App altyapısını yapılandıran bir lambda ifadesi geçirir.-
env
parametresini kullanarak kapsayıcı uygulamasınaHello
adlı bir ortam değişkeni ekler. -
AsProvisioningParameter
yöntemi,env
'i altyapıda ya yeni bir ProvisioningParameter olarak ele almak ya da aynı ada sahip bir parametre mevcutsa var olan bicep parametresini yeniden kullanmak için kullanılır.
-
Daha fazla bilgi için bkz. ContainerApp ve AsProvisioningParameter.
Kod olarak altyapı
Azure için .NET SDK'sı, 📦Azure sağlama NuGet paketi ve hizmete özgü Azure sağlama paketlerinden oluşan bir dizi sunar. Bu Azure sağlama kitaplıkları, Azure altyapısını .NET'da yerel olarak bildirimli bir şekilde belirtmeyi kolaylaştırır. API'leri, C# dilinde nesne yönelimli bir altyapı yazmanıza olanak tanır ve bunun sonucunda Bicep ile çalışabilirsiniz. Bicep, kaynakları beyan yoluyla dağıtmak için kullanılan bir alan-özel dili (DSL)dır.
Azure kaynakları el ile sağlamak mümkün olsa da .NET AspireAzure kaynakları ifade etmek için bir dizi API sağlayarak süreci basitleştirir. Bu API'ler, .NET Aspire arabirimini genişleten AzureIDistributedApplicationBuilder barındırma kitaplıklarında uzantı yöntemleri olarak kullanılabilir. Uygulama konağınıza Azure kaynakları eklediğinizde, bunlar dolaylı olarak uygun sağlama işlevselliğini sağlar. Başka bir deyişle, herhangi bir sağlama API'sini doğrudan çağırmanız gerekmez.
.NET Aspire modelleri Azure barındırma tümleştirmelerinin içinde Azure kaynakları modellediğinden, bu kaynaklar Azure SDK kullanılarak sağlanır. Sizin için gerekli olan Azure kaynaklarını tanımlayan Bicep dosyaları oluşturulmaktadır. Oluşturulan Bicep dosyaları, uygulamanızı yayımladığınızda bildirim dosyasıyla birlikte çıkarılır.
Oluşturulan Bicep dosyalarını etkilemenin birkaç yolu vardır:
-
Azure. Özelleştirme sağlama:
- Altyapıyı yapılandırma: Azure kaynak altyapısını özelleştirin.
- Azure altyapısı ekleme: Uygulama konağınıza Azure altyapısını el ile ekleyin.
-
özel Bicep şablonlarınıkullanın:
- Bicep dosyasına referans ekleme: Diskteki bir Bicep dosyasına referans ekleyin.
- Referans Bicep iç içe: İç içe bir Bicep şablonu ekleyin.
Yerel sağlama ve Azure.Provisioning
Terimleri karıştırmaktan kaçınmak ve "sağlamayı" netleştirmeye yardımcı olmak için, yerel sağlama ile Azure sağlamaarasındaki farkı anlamak önemlidir.
Yerel sağlama:
Varsayılan olarak, Azure kaynakları eklemek için Azure barındırma tümleştirme API'lerinden herhangi birini çağırdığınızda, AddAzureProvisioning(IDistributedApplicationBuilder) API örtük olarak çağrılır. Bu API, uygulama konağı başlatıldığında Azure kaynakları sağlamak için kullanılan bağımlılık ekleme (DI) kapsayıcısına hizmetleri kaydeder. Bu kavram, yerel sağlamaolarak bilinir. Daha fazla bilgi için bkz. Yerel Azure sağlama.
Azure.Provisioning
:Azure.Provisioning
NuGet paketine başvurur ve Bicep oluşturmak için C# kullanmanıza olanak tanıyan bir kitaplık kümesidir. Azure barındırma tümleştirmeleri .NET Aspire altında bu kitaplıkları kullanarak ihtiyacınız olan Azure kaynaklarını tanımlayan Bicep dosyaları oluşturur. Daha fazla bilgi içinAzure.Provisioning
özelleştirme'ye bakın.
Azure.Provisioning
özelleştirme
Tüm .NET AspireAzure barındırma tümleştirmeleri çeşitli Azure kaynaklarını kullanıma sunar ve bunların tümü AzureProvisioningResource türünün alt sınıflarıdır ve AzureBicepResourcedevralır. Bu, genel olarak bu türle kısıtlanmış uzantıları etkinleştirir ve akıcı bir API'nin altyapıyı istediğiniz gibi özelleştirmesine olanak tanır. .NET .NET Aspire varsayılan değerler sağlasa da, bu API'leri kullanarak oluşturulan Bicep'i etkileyebilirsiniz.
Altyapıyı yapılandırma
Çalışmakta olduğunuz Azure kaynağından bağımsız olarak, temel altyapısını yapılandırmak için ConfigureInfrastructure uzantı yöntemine ardışık çağrıda bulunursunuz. Bu yöntem, Azuretüründe bir configure
temsilcisi geçirerek Action<AzureResourceInfrastructure>
kaynağının altyapısını özelleştirmenizi sağlar.
AzureResourceInfrastructure türü, Azure.Provisioning.Infrastructurealt sınıfıdır. Bu tür, Azure kaynağının temel altyapısını yapılandırmak için çok büyük bir API yüzey alanı sunar.
Aşağıdaki örneği göz önünde bulundurun:
var sku = builder.AddParameter("storage-sku");
var storage = builder.AddAzureStorage("storage")
.ConfigureInfrastructure(infra =>
{
var resources = infra.GetProvisionableResources();
var storageAccount = resources.OfType<StorageAccount>().Single();
storageAccount.Sku = new StorageSku
{
Name = sku.AsProvisioningParameter(infra)
};
});
Önceki kod:
-
storage-sku
adlı bir parametre ekler. -
Azureadlı AddAzureStorage API'sine
storage
Depolama ekler. -
ConfigureInfrastructure
'a bir çağrıyı zincirleyerek Azure Depolama altyapısını özelleştirir:- Sağlanabilir kaynakları elde eder.
- Tek bir StorageAccount'ı filtreler.
-
storage-sku
parametresini StorageAccount.Sku özelliğine atar:-
StorageSku yeni bir örneğinin,
Name
API'sinin sonucundan atanan AsProvisioningParameter özelliği vardır.
-
StorageSku yeni bir örneğinin,
Bu, dış bir parametrenin Depolama altyapısına akışını örnekler ve oluşturulan Bicep dosyasının istenen yapılandırmayı yansıtmasını sağlar.
Azure altyapısı ekleme
Tüm Azure hizmetleri .NET Aspire tümleştirmeleri olarak kullanıma sunulmaz. Daha sonra olabilecek olmasına rağmen, Azure.Provisioning.*
kitaplıklarında mevcut olan hizmetleri sağlayabilirsiniz.
Azure Container Registry'yi yönetmekle sorumlu çalışan hizmetiniz olduğu bir senaryo düşünün. Şimdi bir uygulama konak projesinin 📦Azure.Provisioning.ContainerRegistry NuGet paketine bağımlılık aldığını hayal edin.
AddAzureInfrastructure
Container Registry altyapısını uygulama konağınıza eklemek için Azure API'sini kullanabilirsiniz:
var acr = builder.AddAzureInfrastructure("acr", infra =>
{
var registry = new ContainerRegistryService("acr")
{
Sku = new()
{
Name = ContainerRegistrySkuName.Standard
},
};
infra.Add(registry);
var output = new ProvisioningOutput("registryName", typeof(string))
{
Value = registry.Name
};
infra.Add(output);
});
builder.AddProject<Projects.WorkerService>("worker")
.WithEnvironment(
"ACR_REGISTRY_NAME",
new BicepOutputReference("registryName", acr.Resource));
Önceki kod:
-
AddAzureInfrastructure,
acr
adıyla çağrılır. -
configureInfrastructure
Container Registry altyapısını özelleştirmek için Azure bir temsilci sağlar:- Bir ContainerRegistryService örneğini,
acr
adıyla ve standart bir SKU ile oluşturur. -
Azure Container Registry hizmetini
infra
değişkenine ekler. -
ProvisioningOutput adında,
registryName
türünde ve Azure Container Registry ismine karşılık gelen bir değere sahip birstring
örneği oluşturur. - Çıktıyı
infra
değişkenine ekler.
- Bir ContainerRegistryService örneğini,
- Oluşturucuya
worker
adlı bir proje ekler. - Projede WithEnvironment ortam değişkenini
ACR_REGISTRY_NAME
çıkışının değerine ayarlamak içinregistryName
'a bir çağrı zincirler.
İşlev, Azure hizmeti doğrudan bir Azure tümleştirmesi olarak kullanıma sunulmasa bile uygulama ana bilgisayarınız projesine nasıl .NET Aspire altyapısı ekleneceğini gösterir. Ayrıca, Azure Container Registry'nin çıkışını bağlı bir projenin ortamına nasıl aktaracağınızı da gösterir.
Ortaya çıkan Bicep dosyasını dikkate alın.
@description('The location for the resource(s) to be deployed.')
param location string = resourceGroup().location
resource acr 'Microsoft.ContainerRegistry/registries@2023-07-01' = {
name: take('acr${uniqueString(resourceGroup().id)}', 50)
location: location
sku: {
name: 'Standard'
}
}
output registryName string = acr.name
Bicep dosyası, Azure API tarafından tanımlanan AddAzureInfrastructure
Container Registry'nin istenen yapılandırmasını yansıtır.
Özel Bicep şablonlarını kullanma
İstediğiniz bulut sağlayıcısı olarak Azure hedeflerken, altyapınızı kod olarak tanımlamak için Bicep'i kullanabilirsiniz. Daha temiz bir söz dizimi ve modülerlik ve kod yeniden kullanımı için daha iyi destek ile yazma deneyimini önemli ölçüde basitleştirmeyi amaçlar.
.NET .NET Aspire önceden oluşturulmuş bicep şablonları kümesi sağlarken, bazen şablonları özelleştirmek veya kendi şablonunuzu oluşturmak isteyebilirsiniz. Bu bölümde, Bicep şablonlarını özelleştirmek için kullanabileceğiniz kavramlar ve ilgili API'ler açıklanmaktadır.
Önemli
Bu bölüm size Bicep'i öğretmek için değil, .NET.NET Aspireile kullanmak üzere özel Bicep şablonları oluşturma konusunda rehberlik sağlamak için tasarlanmıştır.
azd
CLI, uygulamayı Azure'e dağıtmak için Bicep şablonlarını kullanır.
Aspire.Hosting.Azure
paketini yükleme
Bicep dosyalarına başvurmak istediğinizde, Azure barındırma tümleştirmelerinden hiçbirini kullanmıyor olmanız mümkündür. Bu durumda, Aspire.Hosting.Azure
paketini yükleyerek Bicep dosyalarına başvurmaya devam edebilirsiniz. Bu paket, Bicep dosyalarına başvurmak ve Azure kaynaklarını özelleştirmek için gerekli API'leri sağlar.
Bahşiş
Azure barındırma tümleştirmelerinden herhangi birini kullanıyorsanız geçişli bir bağımlılık olduğundan Aspire.Hosting.Azure
paketini yüklemeniz gerekmez.
Bu işlevlerden herhangi birini kullanmak için 📦Aspire.Hosting.Azure NuGet paketi yüklenmelidir.
dotnet add package Aspire.Hosting.Azure
Daha fazla bilgi için bkz. dotnet add package veya .NET uygulamalarında paket bağımlılıklarını yönetme.
Örneklerden neler bekleyebileceğiniz
Bu bölümdeki tüm örneklerde Aspire.Hosting.Azure ad alanını kullandığınız varsayılır. Ayrıca örneklerde IDistributedApplicationBuilder bir örneğiniz olduğu varsayılır:
using Aspire.Hosting.Azure;
var builder = DistributedApplication.CreateBuilder(args);
// Examples go here...
builder.Build().Run();
Varsayılan olarak, Bicep ile ilgili herhangi bir API'yi çağırdığınızda, uygulama başlatma sırasında AddAzureProvisioning kaynaklarını dinamik olarak oluşturma desteği ekleyen bir çağrı da Azure'a yapılır. Daha fazla bilgi için bkz. yerel ayarlama ve Azure.Provisioning
.
Bicep dosyalarına referans ver
Hayal edin ki, storage.bicep
Depolama Hesabı sağlayan bir Bicep şablonunuz var ve bu şablon Azure adlı bir dosyada bulunuyor.
param location string = resourceGroup().location
param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}'
resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
Disk üzerindeki Bicep dosyasına başvuru eklemek için AddBicepTemplate yöntemini çağırın. Aşağıdaki örneği göz önünde bulundurun:
builder.AddBicepTemplate(
name: "storage",
bicepFile: "../infra/storage.bicep");
Önceki kod, ../infra/storage.bicep
konumunda bulunan bir Bicep dosyasına bir referans ekler. Dosya yolları, uygulama konağı projesine göre olmalıdır. Bu başvuru, uygulamanın kaynak koleksiyonuna AzureBicepResource adıyla bir "storage"
eklenmesine neden olur ve API kaynağı daha fazla özelleştirmek için kullanılabilecek bir IResourceBuilder<AzureBicepResource>
örneği döndürür.
Bicep satır içi referansı
Diskte bicep dosyası olması en yaygın senaryo olsa da, Bicep şablonlarını satır içine de ekleyebilirsiniz. Satır içi şablonlar, kodda şablon tanımlamak istediğinizde veya şablonu dinamik olarak oluşturmak istediğinizde yararlı olabilir. Satır içi Bicep şablonu eklemek için bicep şablonuyla AddBicepTemplateString yöntemini string
olarak çağırın. Aşağıdaki örneği göz önünde bulundurun:
builder.AddBicepTemplateString(
name: "ai",
bicepContent: """
@description('That name is the name of our application.')
param cognitiveServiceName string = 'CognitiveService-${uniqueString(resourceGroup().id)}'
@description('Location for all resources.')
param location string = resourceGroup().location
@allowed([
'S0'
])
param sku string = 'S0'
resource cognitiveService 'Microsoft.CognitiveServices/accounts@2021-10-01' = {
name: cognitiveServiceName
location: location
sku: {
name: sku
}
kind: 'CognitiveServices'
properties: {
apiProperties: {
statisticsEnabled: false
}
}
}
"""
);
Bu örnekte, Bicep şablonu satır içi string
olarak tanımlanır ve "ai"
adıyla uygulamanın kaynaklar koleksiyonuna eklenir. Bu örnek bir Azure yapay zeka kaynağı sağlar.
Parametreleri Bicep şablonlarına geçirme
Bicep, şablonun davranışını özelleştirmek için kullanılabilecekparametreleri kabul etme desteği sunar. .NET .NET Aspire'den bir Bicep şablonuna parametre geçirmek için, aşağıdaki örnekte gösterildiği gibi WithParameter yöntemine zincirleme çağrıları yapın:
var region = builder.AddParameter("region");
builder.AddBicepTemplate("storage", "../infra/storage.bicep")
.WithParameter("region", region)
.WithParameter("storageName", "app-storage")
.WithParameter("tags", ["latest","dev"]);
Önceki kod:
-
"region"
örneğinebuilder
adlı bir parametre ekler. -
../infra/storage.bicep
konumunda bulunan bir Bicep dosyasına başvuru ekler. - standart parametre çözümlemesi kullanılarak çözümlenen
"region"
parametresini Bicep şablonuna geçirir. -
"storageName"
parametresini sabit kodlanmış değeriyle Bicep şablonuna geçirir. -
"tags"
parametresini bir dizi dizeyle Bicep şablonuna geçirir.
Daha fazla bilgi için bkz. dış parametreler.
İyi bilinen parametreler
.NET .NET Aspire, Bicep şablonlarına geçirilebilen iyi bilinen parametreler kümesi sağlar. Bu parametreler, Bicep şablonlarına uygulama ve ortam hakkında bilgi sağlamak için kullanılır. Aşağıdaki iyi bilinen parametreler kullanılabilir:
Alan | Açıklama | Değer |
---|---|---|
AzureBicepResource.KnownParameters.KeyVaultName | Gizli çıktıları depolamak için kullanılan anahtar kasası kaynağının adı. | "keyVaultName" |
AzureBicepResource.KnownParameters.Location | Kaynağın konumu. Bu, tüm kaynaklar için gereklidir. | "location" |
AzureBicepResource.KnownParameters.LogAnalyticsWorkspaceId | Log Analytics çalışma alanının kaynak kimliği. | "logAnalyticsWorkspaceId" |
AzureBicepResource.KnownParameters.PrincipalId | Geçerli kullanıcının veya yönetilen kimliğin ana kimliği. | "principalId" |
AzureBicepResource.KnownParameters.PrincipalName | Geçerli kullanıcının veya yönetilen kimliğin ana adı. | "principalName" |
AzureBicepResource.KnownParameters.PrincipalType | Geçerli kullanıcı veya yönetilen kimliğin ana türü.
User veya ServicePrincipal . |
"principalType" |
İyi bilinen bir parametre kullanmak için parametre adını WithParametergibi WithParameter(AzureBicepResource.KnownParameters.KeyVaultName)
yöntemine geçirin. İyi bilinen parametrelerin değerlerini geçirmezsiniz çünkü .NET.NET Aspire bunları sizin adınıza çözümler.
Bir Azure Event Grid webhook kurmak istediğiniz bir örneği düşünün. Bicep şablonunu aşağıdaki gibi tanımlayabilirsiniz:
param topicName string
param webHookEndpoint string
param principalId string
param principalType string
param location string = resourceGroup().location
// The topic name must be unique because it's represented by a DNS entry.
// must be between 3-50 characters and contain only values a-z, A-Z, 0-9, and "-".
resource topic 'Microsoft.EventGrid/topics@2023-12-15-preview' = {
name: toLower(take('${topicName}${uniqueString(resourceGroup().id)}', 50))
location: location
resource eventSubscription 'eventSubscriptions' = {
name: 'customSub'
properties: {
destination: {
endpointType: 'WebHook'
properties: {
endpointUrl: webHookEndpoint
}
}
}
}
}
resource EventGridRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(topic.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'd5a91429-5739-47e2-a06b-3470a27159e7'))
scope: topic
properties: {
principalId: principalId
principalType: principalType
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'd5a91429-5739-47e2-a06b-3470a27159e7')
}
}
output endpoint string = topic.properties.endpoint
Bu Bicep şablonu, topicName
, webHookEndpoint
, principalId
, principalType
ve isteğe bağlı location
gibi çeşitli parametreleri tanımlar. Bu parametreleri Bicep şablonuna geçirmek için aşağıdaki kod parçacığını kullanabilirsiniz:
var webHookApi = builder.AddProject<Projects.WebHook_Api>("webhook-api");
var webHookEndpointExpression = ReferenceExpression.Create(
$"{webHookApi.GetEndpoint("https")}/hook");
builder.AddBicepTemplate("event-grid-webhook", "../infra/event-grid-webhook.bicep")
.WithParameter("topicName", "events")
.WithParameter(AzureBicepResource.KnownParameters.PrincipalId)
.WithParameter(AzureBicepResource.KnownParameters.PrincipalType)
.WithParameter("webHookEndpoint", () => webHookEndpointExpression);
-
webHookApi
projesi,builder
'e referans olarak eklenir. -
topicName
parametresine sabit kodlanmış bir ad değeri geçirilir. -
webHookEndpoint
parametresi,api
rotası ile/hook
proje referanslarının "https" uç noktasından URL'ye çözümlenen bir ifade olarak aktarılır. -
principalId
veprincipalType
parametreleri iyi bilinen parametreler olarak geçirilir.
İyi bilinen parametreler kural tabanlıdır ve WithParameter
API'sini kullanarak geçirildiğinde buna karşılık gelen bir değerle eşlik edilmemelidir. İyi bilinen parametreler, önceki örnekte gösterildiği gibi Bicep şablonlarına eklendiğinde
Bicep referanslarından çıktılar elde etme
Bicep şablonlarına parametre geçirmenin yanı sıra, Bicep şablonlarından da çıkışlar alabilirsiniz. Aşağıdaki Bicep şablonunu, output
adında bir endpoint
tanımladığı için göz önünde bulundurun.
param storageName string
param location string = resourceGroup().location
resource myStorageAccount 'Microsoft.Storage/storageAccounts@2019-06-01' = {
name: storageName
location: location
kind: 'StorageV2'
sku:{
name:'Standard_LRS'
tier: 'Standard'
}
properties: {
accessTier: 'Hot'
}
}
output endpoint string = myStorageAccount.properties.primaryEndpoints.blob
Bicep, endpoint
adlı bir çıktı tanımlar. Bicep şablonundan çıktı almak için aşağıdaki C# kod parçacığında gösterildiği gibi bir GetOutput örneğinde IResourceBuilder<AzureBicepResource>
yöntemini çağırın:
var storage = builder.AddBicepTemplate(
name: "storage",
bicepFile: "../infra/storage.bicep"
);
var endpoint = storage.GetOutput("endpoint");
Bu örnekte, Bicep şablonunun çıkışı alınır ve bir endpoint
değişkeninde depolanır. Genellikle, bu çıkışı bir ortam değişkeni olarak ona bağlı olan başka bir kaynağa geçirirsiniz. Örneğin, bu uç noktaya bağımlı olan ASP.NET Core Minimal API projeniz varsa, aşağıdaki kod parçacığını kullanarak çıkışı projeye ortam değişkeni olarak geçirebilirsiniz:
var storage = builder.AddBicepTemplate(
name: "storage",
bicepFile: "../infra/storage.bicep"
);
var endpoint = storage.GetOutput("endpoint");
var apiService = builder.AddProject<Projects.AspireSample_ApiService>(
name: "apiservice"
)
.WithEnvironment("STORAGE_ENDPOINT", endpoint);
Daha fazla bilgi için bakınız Bicep çıkışları.
Bicep referanslarından gizli çıktılara erişme
Bicep ile çalışırken gizli bilgiler için çıkışlardan kaçınmak önemlidir. Bir çıkış gizliolarak kabul ediliyorsa ve bu nedenle günlüklerde veya başka yerlerde gösterilmemesi gerekiyorsa, ona bu şekilde davranabilirsiniz. Bu, gizli anahtarı Azure Key Vault'da depolayıp Bicep şablonuna referans verilerek gerçekleştirilebilir.
.NET Aspire
Azure tümleştirmesi, Bicep şablonundan gelen çıktıları güvenli bir şekilde depolamak için bir desen sağlar. Bu desen, kaynakların keyVaultName
'de gizli bilgileri depolamak için Azure Key Vault parametresini kullanmasına olanak tanır.
Gizli çıktıların güvenliğini sağlama konseptinin anlaşılmasına yardımcı olan bir örnek olarak aşağıdaki Bicep şablonunu göz önünde bulundurun.
param databaseAccountName string
param keyVaultName string
param databases array = []
@description('Tags that will be applied to all resources')
param tags object = {}
param location string = resourceGroup().location
var resourceToken = uniqueString(resourceGroup().id)
resource cosmosDb 'Microsoft.DocumentDB/databaseAccounts@2023-04-15' = {
name: replace('${databaseAccountName}-${resourceToken}', '-', '')
location: location
kind: 'GlobalDocumentDB'
tags: tags
properties: {
consistencyPolicy: { defaultConsistencyLevel: 'Session' }
locations: [
{
locationName: location
failoverPriority: 0
}
]
databaseAccountOfferType: 'Standard'
}
resource db 'sqlDatabases@2023-04-15' = [for name in databases: {
name: '${name}'
location: location
tags: tags
properties: {
resource: {
id: '${name}'
}
}
}]
}
var primaryMasterKey = cosmosDb.listKeys(cosmosDb.apiVersion).primaryMasterKey
resource vault 'Microsoft.KeyVault/vaults@2023-07-01' existing = {
name: keyVaultName
resource secret 'secrets@2023-07-01' = {
name: 'connectionString'
properties: {
value: 'AccountEndpoint=${cosmosDb.properties.documentEndpoint};AccountKey=${primaryMasterKey}'
}
}
}
Önceki Bicep şablonu, diğer birkaç parametre arasında keyVaultName
parametresini bekler. Ardından bir Azure Cosmos DB kaynağı tanımlar ve connectionString
adı verilen sırrı Azure Key Vault içine saklar, bu da Cosmos DB örneğine tam bağlantı dizesini temsil eder. Bu gizli dizi bağlantı dizesi değerine erişmek için aşağıdaki kod parçacığını kullanabilirsiniz:
var cosmos = builder.AddBicepTemplate("cosmos", "../infra/cosmosdb.bicep")
.WithParameter("databaseAccountName", "fallout-db")
.WithParameter(AzureBicepResource.KnownParameters.KeyVaultName)
.WithParameter("databases", ["vault-33", "vault-111"]);
var connectionString =
cosmos.GetSecretOutput("connectionString");
builder.AddProject<Projects.WebHook_Api>("api")
.WithEnvironment(
"ConnectionStrings__cosmos",
connectionString);
Önceki kod parçacığında, cosmos
Bicep şablonu builder
'e referans olarak eklenir. Bicep şablonundan alınan connectionString
gizli çıkış, bir değişkende depolanır. Gizli çıktı daha sonra ConnectionStrings__cosmos
projesine bir ortam değişkeni (api
) olarak geçirilir. Bu ortam değişkeni Cosmos DB örneğine bağlanmak için kullanılır.
Bu kaynak dağıtıldığında, temel alınan dağıtım mekanizması Azure Key Vault'den gizli öğeleri otomatik olarak referans alır. Gizli izolasyonu garanti etmek için .NET.NET Aspire her kaynak için bir Anahtar Kasası oluşturur.
Not
yerel sağlama modunda gizli dizi Key Vault'tan ayıklanır ve bir ortam değişkeninde ayarlanır. Daha fazla bilgi için bkz. Yerel Azure sağlama.
Yayımcılık
Uygulamanızı yayımladığınızda, Azure tarafından üretilen sağlama Bicep, Azure Developer CLI aboneliğinizde Azure kaynaklarını oluşturmak için kullanılır. .NET .NET Aspire yayımlama bildirimioluşturur ve bu da yayımlama sürecinin önemli bir parçasıdır. Azure Developer CLI, Azure kaynaklarını yönetmek için bir dizi komut sağlayan bir komut satırı aracıdır.
Yayımlama ve dağıtım hakkında daha fazla bilgi için bkz. Azure Developer CLI kullanarak .NET Aspire projesini Azure Container Apps'a dağıtma (ayrıntılı kılavuz).
.NET Aspire