.NET Aspire Azure Blob Storage-Integration
umfasst:Hosting-Integration und Client Integration
Azure Blob Storage ist ein Dienst zum Speichern großer Mengen unstrukturierter Daten. Mit der .NET AspireAzure Blob Storage-Integration können Sie eine Verbindung mit vorhandenen Azure Blob Storage Instanzen herstellen oder neue Instanzen aus .NET Anwendungen erstellen.
Hosting-Integration
Die .NET.NET AspireAzure Storage-Hosting-Integrationsmodelle modellieren die verschiedenen Speicherressourcen als die folgenden Typen:
- AzureStorageResource: Stellt eine Azure Speicherressource dar.
- AzureStorageEmulatorResource: Stellt eine Azure Speicher-Emulator-Ressource (Azurite) dar.
- AzureBlobStorageResource: Stellt eine Azure Blob-Speicherressource dar.
- AzureQueueStorageResource: Stellt eine Azure Warteschlangenspeicherressource dar.
- AzureTableStorageResource: Stellt eine Azure Tabellenspeicherressource dar.
Um auf diese Typen und APIs zuzugreifen, um sie auszudrücken, fügen Sie die 📦Aspirehinzu. Hosting.Azure. Speicher NuGet-Paket im App-Host Projekt.
dotnet add package Aspire.Hosting.Azure.Storage
Weitere Informationen finden Sie unter dotnet add package oder Abhängigkeiten in .NET Anwendungen verwalten.
Hinzufügen Azure Speicherressource
Rufen Sie in Ihrem App-Hostprojekt AddAzureStorage auf, um einen Azure Speicherressourcen-Generator hinzuzufügen und zurückzugeben.
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage");
// An Azure Storage resource is required to add any of the following:
//
// - Azure Blob storage resource.
// - Azure Queue storage resource.
// - Azure Table storage resource.
// After adding all resources, run the app...
Wenn Sie eine AzureStorageResource
zum App-Host hinzufügen, werden damit auch andere nützliche APIs verfügbar, um Azure Blob-, Warteschlangen- und Tabellenspeicherressourcen hinzuzufügen. Mit anderen Worten, Sie müssen ein AzureStorageResource
hinzufügen, bevor Sie eine der anderen Speicherressourcen hinzufügen.
Wichtig
Wenn Sie AddAzureStorageaufrufen, wird implizit AddAzureProvisioningaufgerufen, wodurch während des App-Starts Azure Ressourcen dynamisch generiert werden. Die App muss das entsprechende Abonnement und den entsprechenden Standort konfigurieren. Weitere Informationen finden Sie unter Lokale Bereitstellung: Konfiguration.
Generierte Bereitstellungs-Bicep
Wenn Sie neu bei Bicepsind, handelt es sich um eine domänenspezifische Sprache zum Definieren von Azure Ressourcen. Mit .NET.NET Aspiremüssen Sie Bicep nicht manuell schreiben; stattdessen generieren die Bereitstellungs-APIs Bicep für Sie. Wenn Sie Ihre App veröffentlichen, wird die generierte Bicep-Datei zusammen mit der Manifestdatei bereitgestellt. Wenn Sie eine Azure Storage-Ressource hinzufügen, wird die folgende Bicep generiert:
Azure Speicherbicep umschalten.
@description('The location for the resource(s) to be deployed.')
param location string = resourceGroup().location
param principalId string
param principalType string
resource storage 'Microsoft.Storage/storageAccounts@2024-01-01' = {
name: take('storage${uniqueString(resourceGroup().id)}', 24)
kind: 'StorageV2'
location: location
sku: {
name: 'Standard_GRS'
}
properties: {
accessTier: 'Hot'
allowSharedKeyAccess: false
minimumTlsVersion: 'TLS1_2'
networkAcls: {
defaultAction: 'Allow'
}
}
tags: {
'aspire-resource-name': 'storage'
}
}
resource blobs 'Microsoft.Storage/storageAccounts/blobServices@2024-01-01' = {
name: 'default'
parent: storage
}
resource storage_StorageBlobDataContributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(storage.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe'))
properties: {
principalId: principalId
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')
principalType: principalType
}
scope: storage
}
resource storage_StorageTableDataContributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(storage.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3'))
properties: {
principalId: principalId
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3')
principalType: principalType
}
scope: storage
}
resource storage_StorageQueueDataContributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(storage.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '974c5e8b-45b9-4653-ba55-5f855dd0fb88'))
properties: {
principalId: principalId
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '974c5e8b-45b9-4653-ba55-5f855dd0fb88')
principalType: principalType
}
scope: storage
}
output blobEndpoint string = storage.properties.primaryEndpoints.blob
output queueEndpoint string = storage.properties.primaryEndpoints.queue
output tableEndpoint string = storage.properties.primaryEndpoints.table
Diese Bicep-Vorlage ist ein Modul, das ein Azure-Speicherkonto mit den folgenden Standardeinstellungen bereitstellt.
-
kind
: Die Art des Speicherkontos. Der Standardwert istStorageV2
. -
sku
: Die SKU des Speicherkontos. Der Standardwert istStandard_GRS
. -
properties
: Die Eigenschaften des Speicherkontos:-
accessTier
: Die Zugriffsebene des Speicherkontos. Der Standardwert istHot
. -
allowSharedKeyAccess
: Ein boolescher Wert, der angibt, ob das Speicherkonto die Autorisierung von Anforderungen mit dem Kontozugriffsschlüssel zulässt. Der Standardwert istfalse
. -
minimumTlsVersion
: Die mindest unterstützte TLS-Version für das Speicherkonto. Der Standardwert istTLS1_2
. -
networkAcls
: Die Netzwerk-ACLs für das Speicherkonto. Der Standardwert ist{ defaultAction: 'Allow' }
.
-
Zusätzlich zum Speicherkonto stellt es auch einen Blob-Container bereit.
Die folgenden Rollenzuweisungen werden dem Speicherkonto hinzugefügt, um Ihrer Anwendung Zugriff zu gewähren. Weitere Informationen finden Sie in den integrierten Azure rollenbasierten Zugriffssteuerungsrollen (Azure RBAC):
Rolle/ID | Beschreibung |
---|---|
Beiträger zu Speicher-Blob-Datenba92f5b4-2d11-453d-a403-e96b0029c9fe |
Lesen, schreiben und löschen in Azure-Speichercontainern und -Blobs. |
Beitragender zu Daten der Speichertabelle0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3 |
Lesen, Schreiben und Löschen von Azure-Speichertabellen und -einträgen. |
Mitwirkender für Speicherwarteschlangendaten974c5e8b-45b9-4653-ba55-5f855dd0fb88 |
Lesen, Schreiben und Löschen Azure Speicherwarteschlangen und Warteschlangenmeldungen. |
Der generierte Bicep ist ein Ausgangspunkt und kann an Ihre spezifischen Anforderungen angepasst werden.
Anpassen der Bereitstellungsinfrastruktur
Alle .NET AspireAzure Ressourcen sind Unterklassen des AzureProvisioningResource Typs. Dieser Typ ermöglicht die Anpassung des generierten Biceps, indem er eine Fluent-API bereitstellt, um die Azure-Ressourcen mithilfe der ConfigureInfrastructure<T>(IResourceBuilder<T>, Action<AzureResourceInfrastructure>)-API zu konfigurieren. Sie können z. B. die kind
, sku
, properties
und vieles mehr konfigurieren. Im folgenden Beispiel wird veranschaulicht, wie die Azure Speicherressource angepasst wird:
builder.AddAzureStorage("storage")
.ConfigureInfrastructure(infra =>
{
var storageAccount = infra.GetProvisionableResources()
.OfType<StorageAccount>()
.Single();
storageAccount.AccessTier = StorageAccountAccessTier.Cool;
storageAccount.Sku = new StorageSku { Name = StorageSkuName.PremiumZrs };
storageAccount.Tags.Add("ExampleKey", "Example value");
});
Der vorangehende Code:
- Verkettet einen Aufruf der ConfigureInfrastructure-API:
- Der
infra
-Parameter ist eine Instanz des typs AzureResourceInfrastructure. - Die bereitstellbaren Ressourcen werden durch Aufrufen der GetProvisionableResources()-Methode abgerufen.
- Die einzelne StorageAccount wird abgerufen.
- Die StorageAccount.AccessTier wird zu StorageAccountAccessTier.Coolzugewiesen.
- Die StorageAccount.Sku wird einem neuen StorageSku mit einem
Name
von PremiumZrszugewiesen. - Dem Speicherkonto wird ein Tag mit einem Schlüssel von
ExampleKey
und einem Wert vonExample value
hinzugefügt.
- Der
Es stehen viele weitere Konfigurationsoptionen zum Anpassen der Azure Speicherressource zur Verfügung. Weitere Informationen finden Sie unter Azure.Provisioning.Storage.
Mit einem vorhandenen Azure-Speicherkonto verbinden
Möglicherweise verfügen Sie über ein vorhandenes Azure Speicherkonto, mit dem Sie eine Verbindung herstellen möchten. Anstatt eine neue Azure Speicherressource darzustellen, können Sie dem App-Host eine Verbindungszeichenfolge hinzufügen. Um eine Verbindung zu einem vorhandenen Azure Speicherkonto hinzuzufügen, rufen Sie die AddConnectionString-Methode auf:
var builder = DistributedApplication.CreateBuilder(args);
var blobs = builder.AddConnectionString("blobs");
builder.AddProject<Projects.WebApplication>("web")
.WithReference(blobs);
// After adding all resources, run the app...
Anmerkung
Verbindungszeichenfolgen werden verwendet, um eine vielzahl von Verbindungsinformationen darzustellen, einschließlich Datenbankverbindungen, Nachrichtenbroker, Endpunkt-URIs und anderen Diensten. In der .NET.NET Aspire Nomenklatur wird der Begriff "Verbindungszeichen" verwendet, um jegliche Art von Verbindungsinformationen darzustellen.
Die Verbindungszeichenfolge wird in der Konfiguration des App-Hosts konfiguriert, in der Regel unter Benutzergeheimnisse, unter dem Abschnitt ConnectionStrings
. Der App-Host fügt diese Verbindungszeichenfolge als Umgebungsvariable in alle abhängigen Ressourcen ein, z. B.:
{
"ConnectionStrings": {
"blobs": "https://{account_name}.blob.core.windows.net/"
}
}
Die abhängige Ressource kann auf die eingefügte Verbindungszeichenfolge zugreifen, indem sie die GetConnectionString Methode aufruft und den Verbindungsnamen als Parameter übergibt, in diesem Fall "blobs"
. Die GetConnectionString
-API ist die Abkürzung für IConfiguration.GetSection("ConnectionStrings")[name]
.
Hinzufügen von Azure Speicher-Emulator-Ressource
Um eine Azure Speicheremulator-Ressource hinzuzufügen, verketten Sie einen Aufruf auf einem IResourceBuilder<AzureStorageResource>
an die RunAsEmulator-API.
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage")
.RunAsEmulator();
// After adding all resources, run the app...
Wenn Sie RunAsEmulator
aufrufen, werden Ihre Speicherressourcen so konfiguriert, dass sie lokal in einem Emulator betrieben werden. Der Emulator in diesem Fall ist Azurite. Der Azurite Open-Source-Emulator bietet eine kostenlose lokale Umgebung zum Testen Ihrer Azure Blob-, Warteschlangenspeicher- und Tabellenspeicher-Apps und ist ein perfekter Begleiter für die .NET AspireAzure Hosting-Integration. Azurite ist nicht installiert, sondern ist für .NET.NET Aspire als Container zugänglich. Wenn Sie dem App-Host einen Container hinzufügen, wie im vorherigen Beispiel mit dem mcr.microsoft.com/azure-storage/azurite
Image gezeigt, wird der Container erstellt und gestartet, wenn der App-Host gestartet wird. Weitere Informationen finden Sie im Abschnitt Containerressourcenlebenszyklus.
Konfigurieren des Azurite-Containers
Es stehen verschiedene Konfigurationen für Containerressourcen zur Verfügung, z. B. können Sie die Ports des Containers, Umgebungsvariablen, seine Lebensdauerund vieles mehr konfigurieren.
Azurite-Containerports konfigurieren
Standardmäßig macht der Azurite-Container, wenn er von .NET.NET Aspirekonfiguriert wird, die folgenden Endpunkte verfügbar:
Endpunkt | Containerhafen | Hostport |
---|---|---|
blob |
10.000 | dynamisch |
queue |
10001 | dynamisch |
table |
10002 | dynamisch |
Der Port, auf den sie lauschen, ist standardmäßig dynamisch. Wenn der Container gestartet wird, werden die Ports einem zufälligen Port auf dem Hostcomputer zugeordnet. Um die Endpunktports zu konfigurieren, führen Sie Kettenaufrufe für den Containerressourcen-Generator aus, der von der RunAsEmulator
-Methode bereitgestellt wird, wie im folgenden Beispiel gezeigt:
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage").RunAsEmulator(
azurite =>
{
azurite.WithBlobPort("blob", 27000)
.WithQueuePort("queue", 27001)
.WithTablePort("table", 27002);
});
// After adding all resources, run the app...
Der vorstehende Code konfiguriert die vorhandenen blob
, queue
und table
Endpunkte des Azurite-Containers, um die Ports 27000
, 27001
und 27002
zu überwachen. Die Ports des Azurite-Containers sind den Host-Ports zugeordnet, wie in der folgenden Tabelle gezeigt.
Endpunktname | Portzuordnung (container:host ) |
---|---|
blob |
10000:27000 |
queue |
10001:27001 |
table |
10002:27002 |
Konfigurieren des Azurite-Containers mit dauerhafter Lebensdauer
Um den Azurite-Container mit einer dauerhaften Laufzeit zu konfigurieren, rufen Sie die WithLifetime Methode für die Azurite-Containerressource auf und übergeben Sie ContainerLifetime.Persistentals Parameter:
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage").RunAsEmulator(
azurite =>
{
azurite.WithLifetime(ContainerLifetime.Persistent);
});
// After adding all resources, run the app...
Für weitere Informationen siehe Lebensdauer von Container-Ressourcen.
Konfigurieren des Azurite-Containers mit Datenvolumen
Rufen Sie zum Hinzufügen eines Datenvolumes zur Ressource des Azure Speicheremulators die WithDataVolume Methode für die Ressource Azure Speicheremulator auf:
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage").RunAsEmulator(
azurite =>
{
azurite.WithDataVolume();
});
// After adding all resources, run the app...
Das Datenvolumen wird verwendet, um die Azurite-Daten über den Lebenszyklus des Containers hinaus beständig zu speichern. Das Datenvolume wird am Pfad des Azurite-Containers /data
bereitgestellt, und wenn kein name
-Parameter angegeben ist, wird der Name als .azurite/{resource name}
formatiert. Weitere Informationen zu Datenvolumes und Details dazu, warum sie gegenüber Bind-Mountsbevorzugt werden, finden Sie in der -Docker-Dokumentation: Volumes.
Konfigurieren des Azurite-Containers mit Datenbindungs-Mount
Rufen Sie die Azure-Methode auf, um eine Datenbindungs-Bereitstellung zur Ressource des WithDataBindMount Speicheremulators hinzuzufügen:
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("storage").RunAsEmulator(
azurite =>
{
azurite.WithDataBindMount("../Azurite/Data");
});
// After adding all resources, run the app...
Wichtig
Daten Bind-Mounts haben eine eingeschränkte Funktionalität im Vergleich zu Volumes, die eine bessere Leistung, Portabilität und Sicherheit bieten und somit besser für Produktionsumgebungen geeignet sind. Bind-Mounts ermöglichen jedoch den direkten Zugriff und die Änderung von Dateien auf dem Host-System, ideal für Entwicklung und Tests, bei denen eine Echtzeitänderung erforderlich ist.
Datenbindungs-Konfigurationen basieren auf dem Dateisystem des Hostcomputers, um die Azurite-Daten über Neustarts des Containers hinweg beizubehalten. Die Datenbindungs-Einbindung wird auf dem Pfad ../Azurite/Data
auf dem Hostrechner relativ zum App-Hostverzeichnis (IDistributedApplicationBuilder.AppHostDirectory) im Azurite-Container eingehängt. Weitere Informationen zu Datenbindungs-Bereitstellungen finden Sie unter Docker Docs: Binden von Bereitstellungen.
Verbindung zu Speicherressourcen herstellen
Wenn der .NET.NET Aspire-App-Host ausgeführt wird, kann auf die Speicherressourcen über externe Tools wie den Azure-Speicher-Explorerzugegriffen werden. Wenn Ihre Speicherressource lokal mit Azurite ausgeführt wird, wird sie automatisch vom Azure Storage Explorer abgeholt.
Anmerkung
Der Azure Storage Explorer ermittelt Azurite-Speicherressourcen, vorausgesetzt, die Standardports werden verwendet. Wenn Sie den Azurite-Container für die Verwendung verschiedener Ports
Führen Sie die folgenden Schritte aus, um über Azure Speicher-Explorer eine Verbindung mit der Speicherressource herzustellen:
Führen Sie den .NET.NET Aspire App-Host aus.
Öffnen Sie den Azure Speicher-Explorer.
Zeigen Sie den Explorer Bereich an.
Wählen Sie den Link "Alle aktualisieren" aus, um die Liste der Speicherkonten zu aktualisieren.
Erweitern Sie den Emulator & angefügter Knoten.
Erweitern Sie den Knoten Speicherkonten.
Es sollte ein Speicherkonto mit dem Namen Ihrer Ressource als Präfix angezeigt werden:
Sie können das Speicherkonto und dessen Inhalte mit dem Azure Speicher-Explorer erkunden. Weitere Informationen zur Verwendung des Azure-Speicher-Explorers finden Sie unter Erste Schritte mit dem Speicher-Explorer.
Ressource Azure Blob Storage hinzufügen
Registrieren Sie in Ihrem App-Hostprojekt die Azure Blob Storage-Integration, indem Sie den Aufruf von AddBlobs mit der von IResourceBuilder<IAzureStorageResource>
zurückgegebenen AddAzureStorage-Instanz verketten. Im folgenden Beispiel wird veranschaulicht, wie Sie eine Azure Blob Storage Ressource namens storage
und einen BLOB-Container mit dem Namen blobs
hinzufügen:
var builder = DistributedApplication.CreateBuilder(args);
var blobs = builder.AddAzureStorage("storage")
.RunAsEmulator();
.AddBlobs("blobs");
builder.AddProject<Projects.ExampleProject>()
.WithReference(blobs)
.WaitFor(blobs);
// After adding all resources, run the app...
Der vorangehende Code:
- Fügt eine Azure Speicherressource namens
storage
hinzu. - Verkettet einen Aufruf an RunAsEmulator, um die Speicherressource so zu konfigurieren, dass sie lokal mit einem Emulator ausgeführt wird. Der Emulator in diesem Fall ist Azurite.
- Fügt der Speicherressource einen BLOB-Container namens
blobs
hinzu. - Fügt die Ressource
blobs
zuExampleProject
hinzu und wartet, bis die Ressource bereit ist, bevor das Projekt gestartet wird.
Hosten von Integritätsprüfungen für Integration
Die Azure Hosting-Integration für Speicher fügt automatisch eine Zustandsprüfung für die Speicherressource hinzu. Es wird nur hinzugefügt, wenn es als Emulator ausgeführt wird, und überprüft, ob der Azurite-Container läuft und ob eine Verbindung hergestellt werden kann. Die Hostingintegration basiert auf dem 📦 AspNetCore.HealthChecks.Azure.Storage.Blobs NuGet-Paket.
Client Integration
Um mit der .NET AspireAzure Blob Storageclient-Integration zu beginnen, installieren Sie das 📦Aspire.Azure.Storage.Blobs-NuGet-Paket im client-Projekt, also dem Projekt für die Anwendung, die die Azure Blob Storageclientverwendet. Die Azure Blob Storageclient-Integration registriert eine BlobServiceClient Instanz, die Sie für die Interaktion mit Azure Blob Storageverwenden können.
dotnet add package Aspire.Azure.Storage.Blobs
Hinzufügen von Azure Blob Storageclient
Rufen Sie in der Datei Program.cs Ihres client-verbrauchenden Projekts die AddAzureBlobClient-Erweiterungsmethode auf jedem IHostApplicationBuilder auf, um eine BlobServiceClient
für die Verwendung durch den Abhängigkeits-Injektionscontainer zu registrieren. Die Methode verwendet einen Verbindungsnamenparameter.
builder.AddAzureBlobClient("blobs");
Anschließend können Sie die BlobServiceClient
Instanz mithilfe der Abhängigkeitsinjektion abrufen. So rufen Sie beispielsweise die client aus einem Dienst ab:
public class ExampleService(BlobServiceClient client)
{
// Use client...
}
Konfiguration
Die .NET AspireAzure Blob Storage-Integration bietet mehrere Optionen zum Konfigurieren der BlobServiceClient
basierend auf den Anforderungen und Konventionen Ihres Projekts.
Verwenden Sie eine Verbindungszeichenfolge
Wenn Sie eine Verbindungszeichenfolge aus dem Konfigurationsabschnitt ConnectionStrings
verwenden, können Sie beim Aufrufen von AddAzureBlobClientden Namen der Verbindungszeichenfolge angeben:
builder.AddAzureBlobClient("blobs");
Anschließend wird die Verbindungszeichenfolge aus dem Konfigurationsabschnitt ConnectionStrings
abgerufen, und zwei Verbindungsformate werden unterstützt:
Dienst-URI
Der empfohlene Ansatz besteht darin, eine ServiceUri
zu verwenden, die mit der AzureStorageBlobsSettings.Credential-Eigenschaft arbeitet, um eine Verbindung herzustellen. Wenn keine Anmeldeinformationen konfiguriert sind, wird die Azure.Identity.DefaultAzureCredential verwendet.
{
"ConnectionStrings": {
"blobs": "https://{account_name}.blob.core.windows.net/"
}
}
Verbindungszeichenfolge
Alternativ kann eine Azure Speicherverbindungszeichenfolge verwendet werden.
{
"ConnectionStrings": {
"blobs": "AccountName=myaccount;AccountKey=myaccountkey"
}
}
Weitere Informationen finden Sie unter Konfigurieren Azure Speicherverbindungszeichenfolgen.
Verwenden Sie Konfigurationsanbieter
Die .NET AspireAzure Blob Storage-Integration unterstützt Microsoft.Extensions.Configuration. Sie lädt die AzureStorageBlobsSettings und BlobClientOptions aus der Konfiguration mithilfe des Schlüssels Aspire:Azure:Storage:Blobs
. Der folgende Codeausschnitt ist ein Beispiel für eine appsettings.json Datei, die einige der Optionen konfiguriert:
{
"Aspire": {
"Azure": {
"Storage": {
"Blobs": {
"DisableHealthChecks": true,
"DisableTracing": false,
"ClientOptions": {
"Diagnostics": {
"ApplicationId": "myapp"
}
}
}
}
}
}
}
Die vollständige Azure Blob Storageclient Integration JSON Schemas finden Sie unter Aspire.Azure. Storage.Blobs/ConfigurationSchema.json.
Verwenden Sie Inline-Delegaten
Sie können auch den Delegaten Action<AzureStorageBlobsSettings> configureSettings
übergeben, um einige oder alle Optionen inline zu konfigurieren, z. B. zum Konfigurieren von Gesundheitschecks:
builder.AddAzureBlobClient(
"blobs",
settings => settings.DisableHealthChecks = true);
Sie können auch den BlobClientOptions mithilfe des Action<IAzureClientBuilder<BlobServiceClient, BlobClientOptions>> configureClientBuilder
-Delegaten konfigurieren, der der zweite Parameter der AddAzureBlobClient
-Methode ist. Um z. B. den ersten Teil der User-Agent-Header für alle Anfragen, die von diesem clientgestellt werden, festzulegen:
builder.AddAzureBlobClient(
"blobs",
configureClientBuilder: clientBuilder =>
clientBuilder.ConfigureOptions(
options => options.Diagnostics.ApplicationId = "myapp"));
Client Integritätsprüfungen der Integration
Standardmäßig aktivieren Integrationen .NET.NET Aspire Integritätsprüfungen für alle Dienste. Weitere Informationen finden Sie unter .NET.NET Aspire Integrationsübersicht.
Die .NET AspireAzure Blob Storage Integration:
- Fügt den Gesundheitscheck hinzu, wenn AzureStorageBlobsSettings.DisableHealthChecks
false
ist, um eine Verbindung mit der Azure Blob Storageherzustellen. - Integriert in den
/health
HTTP-Endpunkt, der angibt, dass alle registrierten Gesundheitsprüfungen bestehen müssen, damit die App bereit ist, Datenverkehr zu akzeptieren.
Observability und Telemetrie
.NET .NET Aspire Integrationen richten automatisch Protokollierungs-, Nachverfolgungs- und Metrikkonfigurationen ein, die manchmal als die Säulen der Observierbarkeitbezeichnet werden. Weitere Informationen zur Integrationsbeobachtbarkeit und Telemetrie finden Sie unter .NET.NET Aspire Übersicht über Integrationen. Je nach unterstützendem Dienst unterstützen einige Integrationen möglicherweise nur bestimmte dieser Features. Beispielsweise unterstützen einige Integrationen Protokollierung und Ablaufverfolgung, aber keine Metriken. Telemetrie-Features können auch mithilfe der Techniken deaktiviert werden, die im Abschnitt Konfiguration dargestellt werden.
Protokollierung
Die .NET AspireAzure Blob Storage-Integration verwendet die folgenden Protokollkategorien:
Azure.Core
Azure.Identity
Verfolgung
Die .NET AspireAzure Blob Storage-Integration gibt die folgenden Ablaufverfolgungsaktivitäten mithilfe von OpenTelemetryaus:
Azure.Storage.Blobs.BlobContainerClient
Metriken
Die .NET AspireAzure Blob Storage-Integration unterstützt derzeit Metriken nicht standardmäßig aufgrund von Einschränkungen mit dem Azure SDK.