Udostępnij za pośrednictwem


Aprowizowanie Azure lokalnych

.NET .NET Aspire upraszcza lokalne tworzenie aplikacji natywnych dla chmury za pomocą atrakcyjnego modelu hosta aplikacji. Ten model umożliwia uruchamianie aplikacji lokalnie przy użyciu tej samej konfiguracji i usług, co w Azure. Z tego artykułu dowiesz się, jak aprowizować zasoby Azure ze środowiska deweloperskiego lokalnego za pośrednictwem hosta aplikacji .NET.NET Aspire.

Notatka

Dla jasności, zasoby są przydzielane w Azure, ale proces przydzielania jest inicjowany z lokalnego środowiska deweloperskiego. Aby zoptymalizować lokalne środowisko programistyczne, rozważ użycie emulatora lub kontenerów, jeśli są dostępne. Aby uzyskać więcej informacji, zobacz Typowe środowisko deweloperskie.

Wymagania

W tym artykule założono, że masz konto Azure i subskrypcję. Jeśli nie masz konta Azure, możesz utworzyć bezpłatne konto na Azure. Aby aprowizacja funkcji działała poprawnie, należy uwierzytelnić się przy użyciu Azure. Upewnij się, że masz zainstalowany Azure Developer CLI. Ponadto należy podać pewne wartości konfiguracji, aby logika aprowizacji mogła tworzyć zasoby w Twoim imieniu.

Interfejsy API do udostępniania hosta aplikacji

Host aplikacji udostępnia zestaw API do zarządzania zasobami Azure. Te API są dostępne jako metody rozszerzeń w bibliotekach hostingu .NET AspireAzure, rozszerzając interfejs IDistributedApplicationBuilder. Po dodaniu zasobów Azure do hosta aplikacji, zostanie automatycznie dodana odpowiednia funkcjonalność aprowizacji. Innymi słowy, nie musisz bezpośrednio wywoływać żadnych interfejsów API udostępniania.

Po uruchomieniu hosta aplikacji jest wykonywana następująca logika aprowizacji:

  1. Sekcja Azure konfiguracji została zweryfikowana.
  2. Gdy są nieprawidłowe, pulpit nawigacyjny i dane wyjściowe hosta aplikacji zapewniają wskazówki o tym, czego brakuje. Aby uzyskać więcej informacji, zobacz Brak wskazówek dotyczących wartości konfiguracji.
  3. Gdy prawidłowe zasoby Azure są przydzielane warunkowo:
    1. Jeśli wdrożenie Azure dla danego zasobu nie istnieje, zostanie ono utworzone i skonfigurowane jako wdrożenie.
    2. Konfiguracja tego wdrożenia jest oznaczona sumą kontrolną jako środek mający na celu wspieranie aprowizacji zasobów tylko w razie potrzeby.

Użyj istniejących zasobów Azure

Host aplikacji automatycznie zarządza aprowizowaniem zasobów Azure. Przy pierwszym uruchomieniu hosta aplikacji aprowizuje zasoby określone w hoście aplikacji. Kolejne przebiegi nie będą ponownie przydzielać zasobów, chyba że konfiguracja hosta aplikacji ulegnie zmianie.

Jeśli przygotowałeś już zasoby Azure poza hostem aplikacji i chcesz z nich korzystać, możesz podać ciąg połączenia z interfejsem API AddConnectionString, jak pokazano w poniższym przykładzie Azure Key Vault.

// Service registration
var secrets = builder.ExecutionContext.IsPublishMode
    ? builder.AddAzureKeyVault("secrets")
    : builder.AddConnectionString("secrets");

// Service consumption
builder.AddProject<Projects.ExampleProject>()
       .WithReference(secrets)

W poprzednim fragmencie kodu pokazano, jak dodać Azure Key Vault do hosta aplikacji. Interfejs API AddAzureKeyVault służy do dodawania Azure Key Vault do hosta aplikacji. Interfejs API AddConnectionString służy do udostępniania parametrów połączenia hostowi aplikacji.

Alternatywnie w przypadku niektórych zasobów Azure możesz wyrazić zgodę na uruchomienie ich jako emulatora za pomocą interfejsu API RunAsEmulator. Ten interfejs API jest dostępny na potrzeby integracji Azure Cosmos DB i Azure Storage. Aby na przykład uruchomić AzureAzure Cosmos DB jako emulator, możesz użyć następującego fragmentu kodu:

var cosmos = builder.AddAzureCosmosDB("cosmos")
                    .RunAsEmulator();

Interfejs API RunAsEmulator konfiguruje zasób Azure Cosmos DB tak, aby był emulowany przy użyciu emulatora Azure Cosmos DB z wykorzystaniem interfejsu API NoSQL.

.NET Aspire Azure integracje hostingu

Jeśli używasz zasobów Azure na hoście aplikacji, używasz co najmniej jednej z .NET AspireAzure integracji hostingowych. Te biblioteki hostingu udostępniają metody rozszerzenia interfejsu IDistributedApplicationBuilder, aby dodać zasoby Azure do hosta aplikacji.

Konfiguracja

W przypadku używania zasobów Azure w lokalnym środowisku deweloperskim trzeba dostarczyć niezbędne wartości konfiguracji. Wartości konfiguracji są określane w sekcji Azure:

  • SubscriptionId: identyfikator subskrypcji Azure.
  • AllowResourceGroupCreation: wartość logiczna wskazująca, czy utworzyć nową grupę zasobów.
  • ResourceGroup: nazwa grupy zasobów do użycia.
  • Location: region Azure do użycia.

Rozważmy następujący przykład konfiguracji appsettings.json:

{
  "Azure": {
    "SubscriptionId": "<Your subscription id>",
    "AllowResourceGroupCreation": true,
    "ResourceGroup": "<Valid resource group name>",
    "Location": "<Valid Azure location>"
  }
}

Ważny

Zaleca się przechowywanie tych wartości jako tajnych aplikacji. Aby uzyskać więcej informacji, zobacz Zarządzanie sekretami aplikacji.

Po skonfigurowaniu niezbędnych wartości możesz rozpocząć provisionowanie zasobów Azure w lokalnym środowisku deweloperskim.

Azure konfiguracja przechowalni poświadczeń

Host aplikacji .NET Aspire używa magazynu poświadczeń do uwierzytelniania i autoryzacji zasobów Azure. W zależności od posiadanej subskrypcji odpowiedni magazyn poświadczeń może być potrzebny w scenariuszach udostępniania zasobów dla wielu dzierżawców.

Z zainstalowanym pakietem NuGet 📦Aspire.Hosting.Azure oraz jeśli host aplikacji zależy od zasobów Azure, domyślny magazyn poświadczeń Azure opiera się na DefaultAzureCredential. Aby zmienić to zachowanie, możesz ustawić wartość magazynu poświadczeń w pliku appsettings.json, jak pokazano w poniższym przykładzie:

{
  "Azure": {
    "CredentialSource": "AzureCli"
  }
}

Podobnie jak w przypadku wszystkich ustawień opartych na konfiguracji , można je skonfigurować za pomocą alternatywnych dostawców, takich jak tajne dane użytkownika lub zmienne środowiskowe . Wartość Azure:CredentialSource można ustawić na jedną z następujących wartości:

Napiwek

Aby uzyskać więcej informacji na temat uwierzytelniania i autoryzacji w pakiecie Azure SDK, zobacz łańcuchy poświadczeń w bibliotece tożsamości Azure dla .NET.

Wsparcie dla narzędzi

W Visual Studiomożna użyć Połączonych Usług do skonfigurowania domyślnych ustawień konfiguracji Azure. Wybierz projekt hosta aplikacji, kliknij prawym przyciskiem myszy na węzeł usług połączonych, a następnie wybierz pozycję Azure Ustawienia aprowizacji zasobów:

Visual Studio 2022: projekt hosta aplikacji .NET Aspire, menu kontekstowe Usługi połączone.

Spowoduje to otwarcie okna dialogowego, w którym można skonfigurować ustawienia aprowizacji Azure, jak pokazano na poniższym zrzucie ekranu:

Visual Studio 2022: okno dialogowe Azure Ustawienia aprowizacji zasobów.

Brakujące wskazówki dotyczące wartości konfiguracji

Jeśli brakuje sekcji konfiguracji Azure, brakuje wartości lub jest ona nieprawidłowa, .NET.NET Aspire pulpit nawigacyjny zawiera przydatne wskazówki. Rozważmy na przykład hosta aplikacji, który nie ma wartości konfiguracji SubscriptionId, próbując przy tym użyć zasobu Azure Key Vault. Strona Resources wskazuje stan jako brakującą konfigurację subskrypcji:

pulpit nawigacyjny .NET.NET Aspire: brak konfiguracji subskrypcji.

Ponadto dzienniki konsoli również wyświetlają te informacje, rozważmy następujący zrzut ekranu:

.NET.NET Aspire pulpit nawigacyjny: dzienniki konsoli, brak konfiguracji subskrypcji.

Znane ograniczenia

Po aprowizacji zasobów Azure w ten sposób należy ręcznie wyczyścić zasoby w portalu Azure, ponieważ .NET Aspire nie zapewnia wbudowanego mechanizmu usuwania zasobów Azure. Najprostszym sposobem osiągnięcia tego celu jest usunięcie skonfigurowanej grupy zasobów. Można to zrobić w portalu Azure lub przy użyciu interfejsu wiersza polecenia Azure:

az group delete --name <ResourceGroupName>

Zastąp <ResourceGroupName> nazwą grupy zasobów, którą chcesz usunąć. Aby uzyskać więcej informacji, zapoznaj się z instrukcjami az group delete.