Konfiguracja aplikacja systemu Azure — często zadawane pytania

Ten artykuł zawiera odpowiedzi na często zadawane pytania dotyczące konfiguracji aplikacja systemu Azure.

Czym różni się usługa App Configuration od usługi Azure Key Vault?

Usługa App Configuration ułatwia deweloperom zarządzanie ustawieniami aplikacji i kontrolowanie dostępności funkcji. Ma na celu uproszczenie wielu zadań związanych z pracą ze złożonymi danymi konfiguracji.

Usługa App Configuration obsługuje:

  • Hierarchiczne przestrzenie nazw
  • Etykietowanie
  • Obszerne zapytania
  • Pobieranie wsadowe
  • Wyspecjalizowane operacje zarządzania
  • Interfejs użytkownika zarządzania funkcjami

Usługa App Configuration uzupełnia usługę Key Vault, a obie powinny być używane obok siebie we większości wdrożeń aplikacji.

Czy należy przechowywać wpisy tajne w usłudze App Configuration?

Mimo że usługa App Configuration zapewnia zabezpieczenia ze wzmocnionymi zabezpieczeniami, usługa Key Vault jest nadal najlepszym miejscem do przechowywania wpisów tajnych aplikacji. Usługa Key Vault zapewnia szyfrowanie na poziomie sprzętu, szczegółowe zasady dostępu i operacje zarządzania, takie jak rotacja certyfikatów.

Możesz utworzyć wartości kluczy usługi App Configuration odwołujące się do wpisów tajnych przechowywanych w usłudze Key Vault. Aby uzyskać więcej informacji, zobacz Use Key Vault references in an ASP.NET Core app (Używanie odwołań do usługi Key Vault w aplikacji ASP.NET Core).

Czy usługa App Configuration szyfruje moje dane?

Tak. Usługa App Configuration zawsze szyfruje wszystkie dane przesyłane i magazynowane. Cała komunikacja sieciowa odbywa się za pośrednictwem protokołu TLS 1.2 lub TLS 1.3. Usługa App Configuration obsługuje szyfrowanie magazynowane przy użyciu kluczy zarządzanych przez firmę Microsoft lub kluczy zarządzanych przez klienta.

Czym różni się konfiguracja aplikacji od ustawień usługi aplikacja systemu Azure Service?

aplikacja systemu Azure Service umożliwia definiowanie ustawień aplikacji dla każdego wystąpienia usługi App Service. Te ustawienia są przekazywane jako zmienne środowiskowe do kodu aplikacji. Jeśli chcesz, możesz skojarzyć ustawienie z określonym miejscem wdrożenia. Aby uzyskać więcej informacji, zobacz Konfigurowanie ustawień aplikacji.

Natomiast aplikacja systemu Azure Configuration umożliwia zdefiniowanie ustawień, które mogą być współużytkowane przez wiele aplikacji. Obejmuje to aplikacje uruchomione w usłudze App Service, a także inne platformy. Kod aplikacji uzyskuje dostęp do tych ustawień za pośrednictwem dostawców konfiguracji dla platformy .NET i języka Java, za pośrednictwem zestawu Azure SDK lub bezpośrednio za pośrednictwem interfejsów API REST.

Odwołania do danych usługi App Configuration można dodawać w ustawieniach aplikacji usługi App Service. Możesz również zaimportować i wyeksportować ustawienia między usługą App Service i usługą App Configuration. Ta funkcja umożliwia szybkie skonfigurowanie nowego magazynu usługi App Configuration na podstawie istniejących ustawień usługi App Service. Możesz również udostępnić konfigurację istniejącej aplikacji, która opiera się na ustawieniach usługi App Service.

Czy istnieją ograniczenia rozmiaru dotyczące kluczy i wartości przechowywanych w usłudze App Configuration?

Istnieje limit 10 KB dla pojedynczej wartości klucza, w tym atrybutów, takich jak etykieta, typ zawartości, tagi i inne metadane.

Ten limit powinien być wystarczający dla pojedynczego ustawienia w większości aplikacji. Jeśli okaże się, że ustawienie jest większe niż ten limit, możesz rozważyć przechowywanie danych w innym miejscu i dodać odwołanie do tych danych w usłudze App Configuration.

Aby uzyskać więcej informacji, zobacz Limity subskrypcji i usług platformy Azure.

Jak przechowywać konfiguracje dla wielu środowisk (test, przemieszczanie, produkcja itd.)?

Możesz kontrolować, kto może uzyskiwać dostęp do usługi App Configuration na poziomie poszczególnych sklepów. Użyj oddzielnego magazynu dla każdego środowiska, które wymaga różnych uprawnień. Takie podejście zapewnia najlepszą izolację zabezpieczeń.

Jeśli nie potrzebujesz izolacji zabezpieczeń między środowiskami, możesz użyć etykiet, aby odróżnić wartości konfiguracji. Użyj etykiet, aby włączyć różne konfiguracje dla różnych środowisk , zawiera kompletny przykład.

Jakie są zalecane sposoby korzystania z usługi App Configuration?

Ile kosztuje usługa App Configuration?

Istnieją dwie warstwy cenowe:

  • Warstwa Bezpłatna
  • Warstwa Standardowa

Jeśli magazyn został utworzony przed wprowadzeniem warstwy Standardowa, zostanie on automatycznie przeniesiony do warstwy Bezpłatna po ogólnej dostępności. Możesz wybrać uaktualnienie do warstwy Standardowa lub pozostać w warstwie Bezpłatna.

Nie można obniżyć poziomu magazynu z warstwy Standardowa do warstwy Bezpłatna. Możesz utworzyć nowy magazyn w warstwie Bezpłatna, a następnie zaimportować dane konfiguracji do tego magazynu.

Której warstwy usługi App Configuration należy używać?

Obie warstwy konfiguracji aplikacji oferują podstawowe funkcje, w tym ustawienia konfiguracji, flagi funkcji, odwołania do usługi Key Vault, migawki konfiguracji, podstawowe operacje zarządzania, metryki i dzienniki.

Poniżej przedstawiono zagadnienia dotyczące wybierania warstwy.

  • Zasoby na subskrypcję: zasób składa się z jednego magazynu konfiguracji. Każda subskrypcja jest ograniczona do jednego magazynu konfiguracji na region w warstwie Bezpłatna. Subskrypcje mogą mieć nieograniczoną liczbę magazynów konfiguracji w warstwie Standardowa.

  • Magazyn na zasób: w warstwie Bezpłatna każdy magazyn konfiguracji jest ograniczony do 10 MB zwykłego magazynu i 10 MB magazynu migawek. W warstwie Standardowa każdy magazyn konfiguracji może używać do 1 GB zwykłego magazynu i dodatkowego 1 GB magazynu migawek.

  • Historia poprawek: usługa App Configuration przechowuje historię wszystkich zmian wprowadzonych w kluczach. W warstwie Bezpłatna ta historia jest przechowywana przez siedem dni. W warstwie Standardowa ta historia jest przechowywana przez 30 dni.

  • Limit przydziału żądań: magazyny w warstwie Bezpłatna są ograniczone do 1000 żądań dziennie. Gdy sklep osiągnie 1000 żądań, zwraca kod stanu HTTP 429 dla wszystkich żądań do północy CZASU UTC.

    Magazyny w warstwie Standardowa są ograniczone do 30 000 żądań na godzinę. Po wyczerpaniu limitu przydziału godzinowego żądania mogą zwracać kod stanu HTTP 429 wskazujący zbyt wiele żądań do końca godziny. W miarę wysyłania większej liczby żądań, które są powyżej limitu przydziału, wyższy procent z nich może zwrócić kod stanu 429.

  • Umowa dotycząca poziomu usług: Warstwa Standardowa ma umowę SLA gwarantującą dostępność na poziomie 99,9% i dostępność na poziomie 99,95% z włączoną replikacją geograficzną. Warstwa Bezpłatna nie ma umowy SLA.

  • Funkcje: Obie warstwy obejmują funkcje, w tym szyfrowanie za pomocą kluczy zarządzanych przez firmę Microsoft, uwierzytelnianie za pośrednictwem klucza dostępu lub identyfikatora Entra firmy Microsoft, kontroli dostępu opartej na rolach (RBAC), tożsamości zarządzanej, tagów usług i nadmiarowości strefy dostępności. Warstwa Standardowa oferuje więcej funkcji, w tym obsługę usługi Private Link, szyfrowanie przy użyciu kluczy zarządzanych przez klienta, ochronę przed usuwaniem nietrwałym i możliwość replikacji geograficznej.

  • Koszt: sklepy w warstwie Standardowa mają opłatę za dzienne użycie. Pierwsze 200 000 żądań każdego dnia jest uwzględnianych w opłatach dziennych. Istnieje również opłata za nadwyżkę dla żądań przeszłych dziennej alokacji. Korzystanie z magazynu w warstwie Bezpłatna nie jest kosztowne.

Czy mogę uaktualnić magazyn z warstwy Bezpłatna do warstwy Standardowa? Czy można obniżyć poziom magazynu z warstwy Standardowa do warstwy Bezpłatna?

Możesz uaktualnić warstwę Bezpłatna do warstwy Standardowa w dowolnym momencie.

Nie można obniżyć poziomu magazynu z warstwy Standardowa do warstwy Bezpłatna. Możesz utworzyć nowy magazyn w warstwie Bezpłatna, a następnie zaimportować dane konfiguracji do tego magazynu.

Gdzie znajdują się dane przechowywane w usłudze App Configuration?

Dane klienta przechowywane w usłudze App Configuration znajdują się w regionie, w którym został utworzony magazyn app configuration klienta. Dane klienta będą replikowane do innego regionu tylko wtedy, gdy klient włączy replikację geograficzną dla tego regionu. Dotyczy to wszystkich dostępnych regionów. Klienci mogą przenosić, kopiować lub uzyskiwać dostęp do danych z dowolnej lokalizacji na całym świecie.

Jak usługa App Configuration zapewnia wysoką dostępność danych?

aplikacja systemu Azure Configuration obsługuje replikację geograficzną w celu zwiększenia odporności na awarie regionalne.

aplikacja systemu Azure Configuration obsługuje strefy dostępności platformy Azure w celu ochrony aplikacji i danych przed pojedynczymi awariami centrum danych. Wszystkie regiony z obsługą strefy dostępności składają się z co najmniej 3 stref dostępności, w których każde z nich jest fizycznie niezależnym centrum danych. W przypadku odporności ta obsługa w usłudze App Configuration jest włączona dla wszystkich klientów bez dodatkowych kosztów. Poniżej przedstawiono regiony, w których usługa App Configuration włączyła obsługę stref dostępności. Aby uzyskać więcej informacji, zobacz Regiony i Strefy dostępności na platformie Azure.

Poniżej przedstawiono regiony, w których usługa App Configuration włączyła obsługę strefy dostępności.

Ameryka Północna i Południowa Europa Bliski Wschód Afryka Azja i Pacyfik
Brazylia Południowa Francja Środkowa Katar Środkowy Australia Wschodnia
Kanada Środkowa Włochy Północne Północne Zjednoczone Emiraty Arabskie Indie Środkowe
Central US Niemcy Środkowo-Zachodnie Izrael Centralny Japonia Wschodnia
East US Europa Północna Korea Środkowa
Wschodnie stany USA 2 Norwegia Wschodnia Southeast Asia
South Central US Południowe Zjednoczone Królestwo Azja Wschodnia
US Gov Wirginia West Europe Chiny Północne 3
Zachodnie stany USA 2 Szwecja Środkowa
Zachodnie stany USA 3 Szwajcaria Północna
Meksyk Środkowy Polska Środkowa
Hiszpania Środkowa

Czy istnieją limity liczby żądań wysyłanych do usługi App Configuration?

Magazyny konfiguracji w warstwie Bezpłatna są ograniczone do 1000 żądań dziennie. Magazyny konfiguracji w warstwie Standardowa mogą wystąpić tymczasowe ograniczanie przepustowości, gdy szybkość żądań przekracza 30 000 żądań na godzinę.

Gdy magazyn osiągnie limit w warstwie Standardowa, może zwrócić kod stanu HTTP 429 dla niektórych żądań wysyłanych do końca godziny. Nagłówek retry-after-ms w odpowiedzi daje sugerowany czas oczekiwania (w milisekundach) przed ponowieniu próby żądania.

Jeśli aplikacja regularnie używa kodów stanu HTTP 429, rozważ przeprojektowanie jej w celu zmniejszenia liczby wykonanych żądań. Aby uzyskać więcej informacji, zobacz jak zmniejszyć liczbę żądań wysyłanych do usługi App Configuration.

Moja aplikacja otrzymuje kod stanu HTTP 429 odpowiedzi. Dlaczego?

W następujących okolicznościach otrzymasz odpowiedź kod stanu HTTP 429:

  • Przekroczenie dziennego limitu żądań dla magazynu w warstwie Bezpłatna.
  • Przekroczenie limitu żądań godzinowych dla magazynu w warstwie Standardowa.
  • Chwilowe ograniczanie przepustowości spowodowane dużym wzrostem liczby żądań†.
  • Chwilowe ograniczanie przepustowości spowodowane nadmiernym użyciem przepustowości†.
  • Próba utworzenia lub zmodyfikowania klucza po przekroczeniu limitu przydziału magazynu.

Sprawdź treść odpowiedzi 429 z określonego powodu, dla którego żądanie nie powiodło się.

†A magazynu konfiguracji może wystąpić chwilowe ograniczanie przepustowości, jeśli odbiera duży wzrost liczby żądań lub transferuje nadmierną ilość danych. Klienci usługi App Configuration, tacy jak zestaw Azure SDK, biblioteki dostawcy konfiguracji i zadania usługi Azure Pipelines, automatycznie ponawiają próby dotyczące żądań ograniczonych. W przypadku wszystkich aplikacji korzystających z jednego z tych klientów lub niestandardowego klienta, który ponawia próbę w przypadku żądań ograniczonych, ten momentowy ograniczanie przepustowości powinno być niezauważone, jeśli wystąpi.

Jak mogę oszacować liczbę żądań, które moja aplikacja może wysłać do usługi App Configuration?

Załóżmy, że masz aplikację z 1000 ustawieniami konfiguracji. Aplikacja ładuje wszystkie te ustawienia z usługi App Configuration po uruchomieniu. Następnie sprawdza klucz sentinel pod kątem zmian konfiguracji co 30 sekund. Niezależnie od tego, czy korzystasz z platformy Kubernetes, usługi App Service, czy maszyn wirtualnych, załóżmy, że masz 50 wystąpień aplikacji uruchomionych jednocześnie.

Najpierw szacujmy żądania monitorowania konfiguracji. Każde wystąpienie aplikacji będzie wysyłać jedno żądanie dla klucza sentinel do usługi App Configuration co 30 sekund, dlatego w ciągu godziny będzie wysyłać 120 żądań (=3600/30). Jeśli masz 50 wystąpień aplikacji, aplikacja wysyła 6000 (=120x50) łącznych żądań co godzinę na potrzeby monitorowania konfiguracji. Należy pamiętać, że ponieważ żądania kluczy sentinel są częste i w większości niezmienione, większość z nich nie będzie liczyć się z limitami przydziału godzinowego sklepu†.

Po drugie szacujmy żądania ładowania/ponownego ładowania konfiguracji. Aplikacja ładuje wszystkie ustawienia podczas uruchamiania lub za każdym razem, gdy zostanie wykryta zmiana klucza sentinel. Każde żądanie do usługi App Configuration może pobrać maksymalnie 100 wartości klucza, więc załadowanie wszystkich ustawień potrwa 10 żądań (=1000/100). Jeśli masz 50 wystąpień aplikacji, wysyłasz 500 (=10x50) łącznych żądań po ponownym uruchomieniu aplikacji lub ponownym załadowaniu jej konfiguracji.

Na koniec połączmy ją. Przy założeniu, że klucz sentinel został zaktualizowany dwa razy w ciągu godziny, magazyn usługi App Configuration otrzyma zatem 7000 (=6 000+500x2) łącznych żądań dla tej godziny. Należy pamiętać, że z tych żądań tylko około 1000 żądań (=500x2) będzie używać dostępnego limitu przydziału godzinowego. Zaktualizuj liczby w tym przykładzie, aby pasowały do określonej konfiguracji i odpowiednio zaprojektować, aby mieć wystarczający bufor względem limitu przepustowości godzinowej. Aby uzyskać więcej informacji, zobacz jak zmniejszyć liczbę żądań wysyłanych do usługi App Configuration.

† Sklepy w warstwie Bezpłatna nie mają częstych, powtarzających się żądań wykluczonych z dziennego limitu.

Dlaczego nie mogę utworzyć magazynu usługi App Configuration o takiej samej nazwie jak ten, który właśnie został usunięty?

Wszystkie magazyny usługi App Configuration w warstwie Standardowa automatycznie włączyły funkcję usuwania nietrwałego. Po usunięciu magazynu usługi App Configuration w warstwie Standardowa jego nazwa jest zarezerwowana dla okresu przechowywania. Aby ponownie utworzyć magazyn o tej samej nazwie przed wygaśnięciem okresu przechowywania, należy najpierw przeczyścić magazyn usunięty nietrwale, pod warunkiem, że magazyn nie ma włączonej ochrony przed przeczyszczeniem. Jeśli ochrona przed przeczyszczeniem jest włączona, musisz poczekać na upłynięcie okresu przechowywania. Użyj funkcji przeczyszczania lub ustaw krótszy okres przechowywania, jeśli często trzeba ponownie utworzyć magazyn o tej samej nazwie. Przepływy pracy, które wymagają ponownego utworzenia magazynu o tej samej nazwie, powinny zezwalać na jedną godzinę między przeczyszczeniem magazynu konfiguracji i wykonaniem kolejnej operacji tworzenia. To zalecenie jest wykonywane asynchronicznie, ponieważ po zażądaniu przeczyszczania rzeczywiste czyszczenie zasobów magazynu konfiguracji jest wykonywane asynchronicznie, co wymaga nieco dodatkowego czasu na sfinalizowanie. Aby uniknąć konieczności oczekiwania, zaleca się używanie unikatowych nazw przepływów pracy, które tworzą efemeryczne magazyny konfiguracji.

Jak mogę przywrócić magazyn usługi App Configuration, który został usunięty błędnie?

Wszystkie magazyny usługi App Configuration w warstwie Standardowa obsługują funkcję usuwania nietrwałego, której nie można wyłączyć. W okresie przechowywania można odzyskać usunięty magazyn. Postępuj zgodnie z tymi instrukcjami , aby odzyskać omyłkowo usunięty magazyn App Configuration.

Czy można programowo tworzyć i aktualizować flagi funkcji lub odwołania do usługi Key Vault?

Tak. Chociaż można zarządzać flagami funkcji i odwołaniami usługi Key Vault w usłudze App Configuration za pośrednictwem witryny Azure Portal lub interfejsu wiersza polecenia, można również tworzyć i aktualizować je programowo przy użyciu zestawów SDK usługi App Configuration. W związku z tym można programowo napisać dostosowany portal zarządzania lub zarządzać nimi w ciągłej integracji/ciągłego wdrażania. Flaga funkcji i interfejsy API odwołań usługi Key Vault są dostępne w zestawach SDK wszystkich obsługiwanych języków. Zapoznaj się z przykładowymi linkami, aby zapoznać się z przykładami w każdym obsługiwanym języku.

Ocena i korzystanie z flag funkcji w aplikacji wymaga dostawcy usługi App Configuration i bibliotek zarządzania funkcjami, które są dostępne na platformie .NET i platformie Java Spring. Aby uzyskać więcej informacji, zapoznaj się z sekcją Zarządzanie funkcjami w obszarze Przewodniki Szybki start i samouczki.

Jak używać profilów Java Spring w usłudze App Configuration?

Profile spring umożliwiają oddzielenie części aplikacji, w tym konfiguracji i udostępnienie jej tylko w niektórych środowiskach lub w przypadku użycia określonych bibliotek.

Zaleca się ustawienie etykiety klucz-wartości w celu dopasowania ich do profilów Spring. Domyślnie biblioteka dostawcy App Configuration Spring załaduje wartości kluczy z etykietami zgodnymi z bieżącymi aktywnymi profilami Spring (${spring.profiles.active}), jeśli filtr etykiety nie jest jawnie ustawiony. Jeśli nie ma aktywnego zestawu profilów Spring, zostaną załadowane wartości klucz-wartości bez etykiety.

Na przykład za pomocą profilów dev i prodparametrów należy odpowiednio utworzyć wartości kluczy z następującymi etykietami.

Klucz Etykieta Wartość
/application/config.message Dev Witaj od dewelopera
/application/config.message prod Witaj z prod

Gdy profil spring jest ustawiony na devwartość , wartość config.message to Hello from dev. Gdy profil spring jest ustawiony na prodwartość , wartość config.message to Hello from prod.

To domyślne zachowanie można zastąpić, ustawiając filtr etykiet w pliku bootstrap. Biblioteka dostawcy Spring załaduje wartości kluczy z określonymi etykietami niezależnie od aktywnego profilu Spring.

spring.cloud.azure.appconfiguration.stores[0].selects[0].label-filter: my-label

Aby wybrać inne etykiety i profile spring, możesz użyć filtru etykiet, takiego jak ',${spring.profiles.active}', który wybierze wszystkie klucze bez etykiety i tych pasujących do profilów spring. Etykiety z prawej strony mają priorytet po znalezieniu zduplikowanych kluczy.

Jak włączyć zarządzanie funkcjami w aplikacjach Blazor lub jako usługi o określonym zakresie w aplikacjach platformy .NET?

Począwszy od wersji 3.1.0 biblioteka Microsoft.FeatureManagement umożliwia uruchamianie usług zarządzania funkcjami, w tym filtrów funkcji, jako usług o określonym zakresie w aplikacjach .NET opartych na iniekcji zależności. Aby skorzystać z tej funkcji, możesz po prostu zastąpić AddFeatureManagement wywołanie w kodzie ciągiem AddScopedFeatureManagement, jak pokazano w poniższym fragmencie kodu:

services.AddScopedFeatureManagement();

Filtry funkcji mogą oceniać flagę funkcji na podstawie właściwości żądania HTTP. Jest to zwykle wykonywane przez inspekcję HttpContextIHttpContextAccessorprzez pojedynczy wzorzec. Jednak ten wzorzec nie działa w przypadku aplikacji serwera Blazor, w których należy zamiast tego używać usług o określonym zakresie. W takim przypadku AddScopedFeatureManagement należy użyć metody .

Jak otrzymywać ogłoszenia dotyczące nowych wydań i innych informacji związanych z usługą App Configuration?

Zasubskrybuj nasze repozytorium z ogłoszeniami usługi GitHub.

Jak zgłosić problem lub przekazać sugestię?

Możesz skontaktować się z nami bezpośrednio w usłudze GitHub.

Następne kroki