Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Z tego samouczka dowiesz się, jak kompilować, konfigurować i wdrażać bezpieczną aplikację Spring Boot w usłudze aplikacja systemu Azure Service, która łączy się z bazą danych MongoDB na platformie Azure (w rzeczywistości baza danych Cosmos DB z interfejsem API bazy danych MongoDB). Po zakończeniu będziesz mieć aplikację Java SE działającą na Azure App Service w systemie Linux.
Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
- Utwórz architekturę bezpieczną domyślnie dla usługi Azure App Service i usługi Azure Cosmos DB z interfejsem API MongoDB.
- Zabezpiecz sekrety połączenia, używając tożsamości zarządzanej i odwołań do usługi Key Vault.
- Wdrażanie przykładowej aplikacji Spring Boot w usłudze App Service z repozytorium GitHub.
- Uzyskaj dostęp do ustawień aplikacji usługi App Service w kodzie aplikacji.
- Wprowadź aktualizacje i ponownie wdróż kod aplikacji.
- Strumieniowanie dzienników diagnostycznych z usługi App Service.
- Zarządzanie aplikacją w witrynie Azure Portal.
- Aprowizuj tę samą architekturę i wdróż przy użyciu interfejsu wiersza polecenia dla deweloperów platformy Azure.
- Zoptymalizuj przepływ pracy programowania za pomocą usług GitHub Codespaces i GitHub Copilot.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Jeśli nie masz konta platformy Azure, możesz go utworzyć bezpłatnie.
- Konto usługi GitHub. Możesz również uzyskać jeden za darmo.
- Znajomość języka Java z programowaniem w środowisku Spring Framework.
- (Opcjonalnie) Aby wypróbować narzędzie GitHub Copilot, konto narzędzia GitHub Copilot. Dostępna jest 30-dniowa bezpłatna wersja próbna.
- Konto platformy Azure z aktywną subskrypcją. Jeśli nie masz konta platformy Azure, możesz go utworzyć bezpłatnie.
- Zainstalowany interfejs wiersza polecenia dla deweloperów platformy Azure. Możesz wykonać kroki opisane w usłudze Azure Cloud Shell, ponieważ ma już zainstalowany interfejs wiersza polecenia dla deweloperów platformy Azure.
- Znajomość języka Java z programowaniem w środowisku Spring Framework.
- (Opcjonalnie) Aby wypróbować narzędzie GitHub Copilot, konto narzędzia GitHub Copilot. Dostępna jest 30-dniowa bezpłatna wersja próbna.
Przeskocz na koniec
Możesz szybko wdrożyć przykładową aplikację opisaną w tym samouczku i zobaczyć, jak działa na platformie Azure. Uruchom następujące polecenia w usłudze Azure Cloud Shell i postępuj zgodnie z monitem:
mkdir msdocs-spring-boot-mongodb-sample-app
cd msdocs-spring-boot-mongodb-sample-app
azd init --template msdocs-spring-boot-mongodb-sample-app
azd up
1. Uruchamianie przykładu
Najpierw należy skonfigurować przykładową aplikację opartą na danych jako punkt wyjścia. Dla wygody przykładowe repozytorium zawiera konfigurację kontenera deweloperskiego . Kontener deweloperski ma wszystko, czego potrzebujesz, aby opracować aplikację, w tym bazę danych MongoDB, pamięć podręczną i wszystkie zmienne środowiskowe wymagane przez przykładową aplikację. Kontener deweloperski może działać w usłudze GitHub codespace, co oznacza, że można uruchomić przykład na dowolnym komputerze z przeglądarką internetową.
Krok 1. W nowym oknie przeglądarki:
- Zaloguj się na istniejącym koncie GitHub.
- Przejdź do https://github.com/Azure-Samples/msdocs-spring-boot-mongodb-sample-app/fork.
- Usuń zaznaczenie pola Kopiuj tylko gałąź główną. Chcesz wszystkie gałęzie.
- Wybierz Utwórz gałąź.
Krok 2: W forku GitHub:
- Wybierz main>starter-no-infra dla gałęzi początkowej. Ta gałąź zawiera tylko przykładowy projekt i brak plików ani konfiguracji związanych z platformą Azure.
- Wybierz Code>Utwórz przestrzeń kodu na starter-no-infra. Skonfigurowanie przestrzeni kodu zajmuje kilka minut.
Krok 3. W terminalu usługi Codespace:
- Uruchom program
mvn package spring-boot:run. - Po wyświetleniu powiadomienia
Your application running on port 8080 is available.wybierz pozycję Otwórz w przeglądarce. Przykładowa aplikacja powinna być widoczna na nowej karcie przeglądarki. Aby zatrzymać serwer Jetty, wpiszCtrl+C.
Napiwek
Możesz zapytać narzędzie GitHub Copilot o to repozytorium. Na przykład:
- @workspace Co robi ten projekt?
- @workspace Jak aplikacja łączy się z bazą danych?
- @workspace Co robi folder .devcontainer?
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
2. Tworzenie usług App Service i Cosmos DB
Najpierw należy utworzyć zasoby platformy Azure. Kroki używane w tym samouczku umożliwiają utworzenie zestawu bezpiecznych domyślnie zasobów obejmujących usługę App Service i usługę Azure Cosmos DB. W przypadku procesu tworzenia należy określić:
- Nazwa aplikacji internetowej. Jest ona używana jako część nazwy DNS dla aplikacji.
- Region do fizycznego uruchamiania aplikacji na świecie. Jest ona również używana jako część nazwy DNS aplikacji.
- Stos wykonawczy dla aplikacji. W tym miejscu wybierasz wersję języka Java, która ma być używana dla aplikacji.
- Plan hostingu aplikacji. Jest to warstwa cenowa obejmująca zestaw funkcji i pojemność skalowania aplikacji.
- Grupa zasobów dla aplikacji. Grupa zasobów umożliwia grupowanie (w kontenerze logicznym) wszystkich zasobów platformy Azure potrzebnych dla aplikacji.
Zaloguj się do portalu Azure i wykonaj następujące kroki, aby utworzyć zasoby usługi Azure App Service.
Krok 1. W witrynie Azure Portal:
- Wprowadź ciąg "baza danych aplikacji internetowej" na pasku wyszukiwania w górnej części witryny Azure Portal.
- Wybierz element oznaczony jako Web App + Database pod nagłówkiem Marketplace. Możesz również bezpośrednio przejść do kreatora tworzenia.
Krok 2. Na stronie Tworzenie aplikacji internetowej i bazy danych wypełnij formularz w następujący sposób.
- Grupa zasobów: wybierz pozycję Utwórz nową i użyj nazwy msdocs-spring-cosmosdb-tutorial.
- Region: dowolny region świadczenia usługi Azure blisko Ciebie.
- Nazwa: msdocs-spring-cosmosdb-XYZ, gdzie XYZ oznacza dowolne trzy losowe znaki. Ta nazwa musi być unikatowa w obrębie całej platformy Azure.
- Stos środowiska uruchomieniowego: Java 21.
- Stos serwera internetowego Java: Java SE (osadzony serwer internetowy).
- Silnik: API Cosmos DB dla MongoDB. Cosmos DB to w pełni zarządzana baza danych NoSQL, relacyjna i wektorowa baza danych jako usługa na platformie Azure.
- Plan hostingu: Podstawowy. Gdy wszystko będzie gotowe, możesz skalować w górę do warstwy cenowej produkcyjnej.
- Wybierz pozycję Przejrzyj i utwórz.
- Po zakończeniu walidacji wybierz pozycję Utwórz.
Krok 3. Ukończenie wdrożenia trwa kilka minut. Po zakończeniu wdrażania wybierz przycisk Przejdź do zasobu . Jesteś przekierowany bezpośrednio do aplikacji usługi App Service, ale tworzone są następujące zasoby:
- Grupa zasobów: kontener dla wszystkich utworzonych zasobów.
- Plan usługi App Service: definiuje zasoby obliczeniowe dla usługi App Service. Został utworzony plan systemu Linux w warstwie Podstawowa.
- App Service: reprezentuje aplikację i działa w planie usługi App Service.
- Sieć wirtualna: zintegrowana z aplikacją usługi App Service i izoluje ruch sieciowy zaplecza.
- Azure Cosmos DB: dostępny tylko zza prywatnego punktu końcowego. Baza danych jest tworzona dla Ciebie na koncie bazy danych.
- Prywatne punkty końcowe: punkty końcowe dostępu dla serwera bazy danych i pamięci podręcznej Redis w sieci wirtualnej.
- Prywatne strefy DNS: umożliwić rozpoznawanie DNS serwera bazy danych i pamięci podręcznej Redis w sieci wirtualnej.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
3. Zabezpieczanie sekretów połączenia
Kreator wygenerował parametry łączności jako ustawienie aplikacji dla Ciebie. Jednak najlepszą praktyką w zakresie zabezpieczeń jest całkowite wyeliminowanie tajemnic z usługi App Service. Przeniesiesz swoje tajne dane do Azure Key Vault i zmienisz ustawienia aplikacji na odwołanie do Key Vault przy użyciu Service Connectors.
Krok 1. Na stronie usługi App Service:
- W menu po lewej stronie wybierz pozycję Ustawienia > Zmienne środowiskowe.
- Obok pozycji AZURE_COSMOS_CONNECTIONSTRING wybierz pozycję Pokaż wartość. Te parametry połączenia pozwalają połączyć się z bazą danych Cosmos DB chronioną prywatnym punktem końcowym. Wpis tajny jest jednak zapisywany bezpośrednio w aplikacji usługi App Service, co nie jest najlepsze. Zmienisz to.
Krok 2: Utwórz magazyn kluczy do bezpiecznego zarządzania tajemnicami.
- Na górnym pasku wyszukiwania wpisz "Key Vault", a następnie wybierz pozycję Marketplace>Key Vault.
- W Grupie zasobów wybierz msdocs-spring-cosmosdb-tutorial.
- W polu Nazwa magazynu kluczy wpisz nazwę składającą się tylko z liter i cyfr.
- W regionie ustaw lokalizację próbki jako lokalizację grupy zasobów.
Krok 3:
- Wybierz kartę Sieć.
- Usuń zaznaczenie pozycji Włącz dostęp publiczny.
- Wybierz pozycję Utwórz prywatny punkt końcowy.
- W Grupie zasobów wybierz msdocs-spring-cosmosdb-tutorial.
- W polu Nazwa magazynu kluczy wpisz nazwę składającą się tylko z liter i cyfr.
- W regionie ustaw lokalizację próbki jako lokalizację grupy zasobów.
- W oknie dialogowym w polu Lokalizacja wybierz tę samą lokalizację co aplikacja usługi App Service.
- W Grupie zasobów wybierz msdocs-spring-cosmosdb-tutorial.
- W polu Nazwa wpisz msdocs-spring-cosmosdb-XYZVaultEndpoint.
- W obszarze Sieć wirtualna wybierz pozycję msdocs-spring-cosmosdb-XYZVnet.
- W podsiecimsdocs-spring-cosmosdb-XYZSubnet.
- Wybierz przycisk OK.
- Wybierz pozycję Przeglądanie i tworzenie, a następnie wybierz pozycję Utwórz. Poczekaj na zakończenie implementacji skarbca kluczy. Powinien zostać wyświetlony komunikat "Wdrożenie zostało ukończone".
Krok 4:
- Na górnym pasku wyszukiwania wpisz msdocs-spring-cosmosdb, a następnie zasób usługi App Service o nazwie msdocs-spring-cosmosdb-XYZ.
- Na stronie App Service w menu po lewej stronie wybierz Ustawienia usługi > Łącznik. Istnieje już łącznik, który został utworzony przez kreatora aplikacji.
- Zaznacz pole wyboru obok łącznika, a następnie wybierz pozycję Edytuj.
- Na karcie Podstawy ustaw Typ klienta na SpringBoot. Ta opcja umożliwia utworzenie zmiennych środowiskowych specyficznych dla środowiska Spring Boot.
- Wybierz kartę Uwierzytelnianie.
- Wybierz Przechowaj tajny wpis w usłudze Key Vault.
- W obszarze Połączenie z usługą Key Vault wybierz pozycję Utwórz nową. Okno dialogowe Tworzenie połączenia jest otwierane w górnej części okna dialogowego edycji.
Krok 5: W oknie dialogowym Utwórz połączenie dla połączenia usługi Key Vault:
- W usłudze Key Vault wybierz utworzony wcześniej magazyn kluczy.
- Wybierz Przejrzyj i utwórz. Powinna zostać wyświetlona zarządzana tożsamość przypisana przez system ustawiona na Wybrana.
- Po zakończeniu walidacji wybierz pozycję Utwórz.
Krok 6. Jesteś z powrotem w oknie dialogowym edycji dla defaultConnector.
- Na karcie Uwierzytelnianie poczekaj na utworzenie łącznika magazynu kluczy. Po zakończeniu Połączenie usługi Key Vault zostanie automatycznie wybrane z listy rozwijanej.
- Wybierz pozycję Dalej: Sieć.
- Wybierz pozycję Konfiguruj reguły zapory, aby włączyć dostęp do usługi docelowej. Jeśli zostanie wyświetlony komunikat "Brak prywatnego punktu końcowego w usłudze docelowej", zignoruj go. Kreator tworzenia aplikacji już zabezpieczył bazę danych Cosmos DB za pomocą prywatnego punktu końcowego.
- Wybierz pozycję Zapisz. Zaczekaj na wyświetlenie powiadomienia Aktualizacja powiodła się .
Krok 7. Aby zweryfikować zmiany:
- W menu po lewej stronie ponownie wybierz pozycję Zmienne środowiskowe .
- Upewnij się, że ustawienie aplikacji spring.data.mongodb.uri istnieje. Łącznik domyślny wygenerował go dla Ciebie, a aplikacja Spring Boot używa już zmiennej .
- Obok ustawienia aplikacji wybierz pozycję Pokaż wartość. Wartość powinna być
@Microsoft.KeyVault(...), co oznacza, że jest to referencja do magazynu kluczy, ponieważ tajny jest teraz zarządzany w magazynie kluczy.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
4. Wdrażanie przykładowego kodu
W tym kroku skonfigurujesz wdrożenie usługi GitHub przy użyciu funkcji GitHub Actions. Jest to tylko jeden z wielu sposobów wdrażania w usłudze App Service, ale także doskonały sposób na ciągłą integrację w procesie wdrożenia. Domyślnie każde git push do twojego repozytorium GitHub uruchamia akcję budowania i wdrażania.
Krok 1. W menu po lewej stronie wybierz pozycję .
Krok 2. Na stronie Centrum wdrażania:
- W obszarze Źródło wybierz pozycję GitHub. Domyślnie funkcja GitHub Actions jest wybierana jako dostawca kompilacji.
- Zaloguj się do konta usługi GitHub i postępuj zgodnie z monitem, aby autoryzować platformę Azure.
- W obszarze Organizacja wybierz swoje konto.
- W obszarze Repozytorium wybierz pozycję msdocs-spring-boot-mongodb-sample-app.
- W obszarze Gałąź wybierz pozycję starter-no-infra. Jest to ta sama gałąź, w której pracowaliśmy z przykładową aplikacją bez żadnych plików ani konfiguracji związanych z platformą Azure.
- W polu Typ uwierzytelniania wybierz pozycję Tożsamość przypisana przez użytkownika.
- W górnym menu wybierz pozycję Zapisz. Usługa App Service dodaje plik przepływu pracy do wybranego repozytorium GitHub w katalogu
.github/workflows. Domyślnie centrum wdrażania tworzy tożsamość przypisaną przez użytkownika, aby przepływ pracy mógł uwierzytelniać za pomocą Microsoft Entra (uwierzytelnianie OIDC). Aby uzyskać informacje o opcjach uwierzytelniania alternatywnego, zobacz Wdrażanie w usłudze App Service przy użyciu funkcji GitHub Actions.
Krok 3:
- Wybierz zakładkę Dzienniki. Zobacz, że nowe wdrożenie zostało już uruchomione, ale stan to Niepowodzenie.
- Wybierz pozycję Kompiluj/Wdróż dzienniki.
Zostanie otwarta karta przeglądarki na karcie Akcje rozwidlenia repozytorium w usłudze GitHub. W adnotacjach zostanie wyświetlony błąd
The string 'java21' is not valid SeVer notation for a Java version. Jeśli chcesz, na stronie wybierz krok kompilacji , który zakończył się niepowodzeniem, aby uzyskać więcej informacji.
Krok 4. Błąd pokazuje, że wystąpił problem podczas przepływu pracy usługi GitHub. Aby to rozwiązać, najpierw pobierz najnowsze zmiany do swojego środowiska kodu. Wróć do obszaru roboczego GitHub codespace przykładowego fork-a, uruchom git pull origin starter-no-infra.
Spowoduje to pobranie nowo zatwierdzonego pliku przepływu pracy do środowiska kodowania.
Krok 5 (Opcja 1: w usłudze GitHub Copilot):
- Rozpocznij nową sesję czatu, wybierając widok Czat, a następnie +.
- Zapytaj: "@workspace Dlaczego otrzymuję błąd w akcjach usługi GitHub: ciąg "java21" nie jest prawidłową notacją SemVer dla wersji języka Java". Copilot może podać wyjaśnienie, a nawet przekazać link do pliku przepływu pracy, który należy naprawić.
- Otwórz plik .github/workflows/starter-no-infra_msdocs-spring-cosmosdb-123.yaml w eksploratorze i wprowadź sugerowaną poprawkę. GitHub Copilot nie daje tej samej odpowiedzi za każdym razem, może być konieczne zadawanie większej liczby pytań, aby dostosować jego odpowiedź. Aby uzyskać porady, zobacz Co mogę zrobić z usługą GitHub Copilot w mojej przestrzeni kodu?.
Krok 5 (opcja 2: bez narzędzia GitHub Copilot):
- Otwórz plik .github/workflows/starter-no-infra_msdocs-spring-cosmosdb-123.yaml w eksploratorze i znajdź
setup-java@v4akcję. - Zmień wartość z
java-versionna'21'.
Krok 6:
- Wybierz rozszerzenie Kontroli źródła.
- W polu tekstowym wpisz komunikat zatwierdzenia, taki jak
Fix error in java-version. Możesz też wybrać
i zezwolić usłudze GitHub Copilot na wygenerowanie komunikatu zatwierdzenia. - Wybierz pozycję Zatwierdź, a następnie potwierdź wartość Tak.
- Wybierz pozycję Synchronizuj zmiany 1, a następnie potwierdź przy użyciu przycisku OK.
Krok 7. Powrót do strony Centrum wdrażania w witrynie Azure Portal:
- Na karcie Dzienniki wybierz pozycję Odśwież. Nowe uruchomienie wdrożenia zostało już uruchomione z zatwierdzonych zmian.
- W elemencie dziennika dla przebiegu wdrożenia wybierz wpis Dzienniki kompilacji/deploju z najnowszą sygnaturą czasową.
Krok 8. Zostajesz przeniesiony do swojego repozytorium GitHub i widzisz, że akcja GitHub jest uruchomiona. Plik przepływu pracy definiuje dwa oddzielne etapy, kompilowanie i wdrażanie. Poczekaj na uruchomienie usługi GitHub, aby wyświetlić stan Ukończono.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
5. Przejdź do aplikacji
Krok 1. Na stronie usługi App Service:
- W menu po lewej stronie wybierz pozycję Przegląd.
- Wybierz adres URL aplikacji.
Krok 2. Dodaj kilka zadań do listy. Gratulacje, uruchamiasz aplikację internetową w usłudze aplikacja systemu Azure z bezpieczną łącznością z usługą Azure Cosmos DB.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
6. Przesyłanie strumieniowe dzienników diagnostycznych
Usługa Azure App Service przechwytuje wszystkie komunikaty wysyłane na konsolę, aby ułatwić diagnozowanie problemów z aplikacją. Przykładowa aplikacja zawiera standardowe instrukcje rejestrowania log4j, aby zademonstrować tę funkcję, jak pokazano w poniższym fragmencie kodu:
private static Logger logger = LoggerFactory.getLogger(TodoListController.class);
@Autowired
private TodoItemRepository todoItemRepository;
public TodoListController() {
}
/**
* HTTP GET
*/
@GetMapping(path = "/api/todolist/{index}", produces = {MediaType.APPLICATION_JSON_VALUE})
public TodoItem getTodoItem(@PathVariable("index") String index) {
logger.info("GET request access '/api/todolist/{}' path.", index);
return todoItemRepository.findById(index).get();
}
Krok 1. Na stronie usługi App Service:
- W menu po lewej stronie wybierz pozycję Dzienniki usługi App Service.
- W obszarze Rejestrowanie aplikacji wybierz pozycję System plików.
- W górnym menu wybierz pozycję Zapisz.
Krok 2: Z menu po lewej stronie wybierz Strumień logów. Zobaczysz dzienniki aplikacji, w tym dzienniki platformy i dzienniki z wewnątrz kontenera.
Dowiedz się więcej o rejestrowaniu w aplikacjach Java w serii dotyczącej Włączania usługi Azure Monitor OpenTelemetry dla aplikacji .NET, Node.js, Python i Java.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
7. Czyszczenie zasobów
Po zakończeniu możesz usunąć wszystkie zasoby z subskrypcji platformy Azure, usuwając grupę zasobów.
Krok 1. Na pasku wyszukiwania w górnej części witryny Azure Portal:
- Wpisz nazwę grupy zasobów.
- Wybierz odpowiednią grupę zasobów.
Krok 2. Na stronie grupy zasobów wybierz pozycję Usuń grupę zasobów.
Krok 3:
- Potwierdź usunięcie, wpisując nazwę grupy zasobów.
- Wybierz Usuń.
- Potwierdź ponownie polecenie Usuń .
2. Tworzenie zasobów platformy Azure i wdrażanie przykładowej aplikacji
W tym kroku utworzysz zasoby platformy Azure i wdrożysz przykładową aplikację w celu App Service dla systemu Linux. Kroki używane w tym samouczku umożliwiają utworzenie zestawu bezpiecznych domyślnie zasobów obejmujących usługę App Service i usługę Azure Cosmos DB.
Kontener deweloperski ma już interfejs wiersza polecenia dla deweloperów platformy Azure (AZD).
W katalogu głównym repozytorium uruchom polecenie
azd init.azd init --template javase-app-service-cosmos-redis-infraPo wyświetleniu monitu podaj następujące odpowiedzi:
Pytanie Odpowiedź Bieżący katalog nie jest pusty. Czy chcesz zainicjować projekt tutaj w katalogu "<your-directory>"? Y Co chcesz zrobić z tymi plikami? Zachowaj istniejące pliki bez zmian Wprowadź nową nazwę środowiska Wpisz unikatową nazwę. Szablon AZD używa tej nazwy jako części nazwy DNS aplikacji internetowej na platformie Azure ( <app-name>-<hash>.azurewebsites.net). Znaki alfanumeryczne i łączniki są dozwolone.Zaloguj się do Azure, uruchamiając polecenie
azd auth logini postępując zgodnie z instrukcjami.azd auth loginUtwórz niezbędne zasoby platformy Azure i za pomocą polecenia
azd upwdróż kod aplikacji. Postępuj zgodnie z monitem, aby wybrać żądaną subskrypcję i lokalizację zasobów platformy Azure.azd upWykonanie polecenia
azd uptrwa około 15 minut (pamięć podręczna Redis jest najbardziej czasochłonna). Ponadto kompiluje i wdraża kod aplikacji, ale później zmodyfikujesz kod, aby pracować z usługą App Service. Gdy jest uruchomiona, polecenie udostępnia komunikaty dotyczące procesu aprowizacji i wdrażania, w tym link do wdrożenia na platformie Azure. Po zakończeniu polecenie wyświetli również link do aplikacji wdrażania.Ten szablon AZD zawiera pliki (azure.yaml i katalog infra ), które generują domyślną architekturę secure-by-default z następującymi zasobami platformy Azure:
- Grupa zasobów: kontener dla wszystkich utworzonych zasobów.
- Plan usługi App Service: definiuje zasoby obliczeniowe dla usługi App Service. Zostanie utworzony plan systemu Linux w warstwie B1 .
- App Service: reprezentuje aplikację i działa w planie usługi App Service.
- Sieć wirtualna: zintegrowana z aplikacją usługi App Service i izoluje ruch sieciowy zaplecza.
- Konto usługi Azure Cosmos DB z API MongoDB jest dostępne tylko zza prywatnego punktu końcowego. Baza danych jest tworzona dla Ciebie na serwerze.
- Azure Cache for Redis: dostępne tylko z poziomu sieci wirtualnej.
- Azure Key Vault: dostępny tylko za pomocą prywatnego punktu końcowego. Służy do zarządzania tajnymi informacjami dla aplikacji w usłudze App Service.
- Prywatne punkty końcowe: punkty końcowe umożliwiające dostęp do magazynu kluczy, serwera bazy danych i pamięci podręcznej Redis w sieci wirtualnej.
- Prywatne strefy DNS: Umożliwiają rozwiązywanie nazw DNS bazy danych Cosmos DB, pamięci podręcznej Redis i magazynu kluczy w sieci wirtualnej.
- Obszar roboczy usługi Log Analytics: działa jako kontener docelowy aplikacji w celu wysłania dzienników, gdzie można również wykonywać zapytania dotyczące dzienników.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
3. Sprawdź parametry połączenia
Szablon AZD, którego używasz, wygenerował zmienne łączności dla Ciebie już jako ustawienia aplikacji i wyprowadza je do terminalu dla Twojej wygody. Ustawienia aplikacji są jednym ze sposobów na utrzymanie tajemnic połączenia poza repozytorium kodu.
W danych wyjściowych AZD znajdź ustawienie aplikacji
spring.data.mongodb.uri. Wyświetlane są tylko nazwy ustawień. Wyglądają one następująco w danych wyjściowych usługi AZD:App Service app has the following app settings: - spring.data.mongodb.uri - spring.data.mongodb.database - spring.redis.host - spring.redis.port - spring.redis.password - spring.redis.database - spring.redis.ssl - spring.cloud.azure.keyvault.secret.credential.managed_identity_enabled - spring.cloud.azure.keyvault.secret.endpoint - azure.keyvault.uri - azure.keyvault.scopespring.data.mongodb.urizawiera identyfikator URI połączenia z bazą danych Cosmos DB na platformie Azure. Jest to standardowa zmienna Spring Data, której aplikacja używa już w pliku src/main/resources/application.properties .W eksploratorze przejdź do folderu src/main/resources/application.properties i sprawdź, czy aplikacja Spring Boot używa już zmiennej
spring.data.mongodb.uriw celu uzyskania dostępu do danych.Dla wygody dane wyjściowe szablonu AZD zawierają bezpośredni link do strony ustawień aplikacji. Znajdź link i otwórz go na nowej karcie przeglądarki.
Jeśli przyjrzysz się wartości
spring.data.mongodb.uri, powinna to być@Microsoft.KeyVault(...), co oznacza, że jest to odwołanie do magazynu kluczy, ponieważ sekret jest zarządzany w magazynie kluczy.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
4. Przejdź do aplikacji
W danych wyjściowych usługi AZD znajdź adres URL aplikacji i przejdź do niej w przeglądarce. Adres URL wygląda następująco w danych wyjściowych usługi AZD:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <URL>
Dodaj kilka zadań do listy.
Gratulacje, uruchamiasz aplikację internetową w usłudze aplikacja systemu Azure z bezpieczną łącznością z usługą Azure Cosmos DB.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
Transmisja dziennika diagnostycznego
Usługa aplikacji platformy Azure może rejestrować dzienniki konsoli, aby ułatwić diagnozowanie problemów z Twoją aplikacją. Dla wygody szablon AZD włączył już rejestrowanie w lokalnym systemie plików i wysyła dzienniki do obszaru roboczego usługi Log Analytics.
Przykładowa aplikacja zawiera standardowe instrukcje rejestrowania log4j, aby zademonstrować tę funkcję, jak pokazano w poniższym fragmencie kodu:
private static Logger logger = LoggerFactory.getLogger(TodoListController.class);
@Autowired
private TodoItemRepository todoItemRepository;
public TodoListController() {
}
/**
* HTTP GET
*/
@GetMapping(path = "/api/todolist/{index}", produces = {MediaType.APPLICATION_JSON_VALUE})
public TodoItem getTodoItem(@PathVariable("index") String index) {
logger.info("GET request access '/api/todolist/{}' path.", index);
return todoItemRepository.findById(index).get();
}
W danych wyjściowych usługi AZD znajdź link do strumieniowego przesyłania dzienników usługi App Service i przejdź do niego w przeglądarce. Link wygląda następująco w danych wyjściowych usługi AZD:
Stream App Service logs at: <URL>
Dowiedz się więcej o rejestrowaniu w aplikacjach Java w serii dotyczącej Włączania usługi Azure Monitor OpenTelemetry dla aplikacji .NET, Node.js, Python i Java.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
6. Czyszczenie zasobów
Aby usunąć wszystkie zasoby platformy Azure w bieżącym środowisku wdrażania, uruchom polecenie azd down i postępuj zgodnie z monitami.
azd down
Rozwiązywanie problemów
- Widok wdrażania portalu dla usługi Azure Cosmos DB przedstawia stan konfliktu
- Wdrożona przykładowa aplikacja nie wyświetla aplikacji listy zadań
Widok wdrażania portalu dla usługi Azure Cosmos DB przedstawia stan konfliktu
W zależności od subskrypcji i wybranego regionu, stan wdrożenia usługi Azure Cosmos DB może mieć wartość Conflict z następującym komunikatem w szczegółach operacji:
Sorry, we are currently experiencing high demand in <region> region, and cannot fulfill your request at this time.
Błąd jest najprawdopodobniej spowodowany limitem subskrypcji dla wybranego regionu. Spróbuj wybrać inny region wdrożenia.
Wdrożona przykładowa aplikacja nie wyświetla aplikacji listy zadań
Jeśli zobaczysz stronę Hey, Java developers! zamiast aplikacji listy zadań, najprawdopodobniej usługa App Service nadal ładuje zaktualizowany kontener z najnowszego wdrożenia kodu. Poczekaj kilka minut i odśwież stronę.
Często zadawane pytania
- Ile kosztuje ta konfiguracja?
- Jak mogę uruchomić migrację bazy danych z bazą danych Cosmos DB za siecią wirtualną?
- W jaki sposób programowanie aplikacji lokalnych działa z funkcją GitHub Actions?
- Nie mam uprawnień do tworzenia tożsamości przypisanej przez użytkownika
Ile kosztuje ta konfiguracja?
Cennik utworzonych zasobów jest następujący:
- Plan usługi App Service jest tworzony w warstwie Podstawowa i można go skalować w górę lub w dół. Zobacz Cennik usługi App Service.
- Konto usługi Azure Cosmos DB jest tworzone w warstwie bezserwerowej i wiąże się z nią niewielki koszt. Zobacz Cennik usługi Azure Cosmos DB.
- Usługa Azure Cache for Redis jest tworzona w pakiecie Podstawowym z minimalnym rozmiarem pamięci podręcznej. Z tą warstwą wiąże się niewielki koszt. Można ją skalować w górę do wyższych warstw wydajności w celu uzyskania wyższej dostępności, klastrowania i innych funkcji. Zobacz Cennik usługi Azure Cache for Redis.
- Sieć wirtualna nie powoduje naliczania opłat, chyba że skonfigurujesz dodatkowe funkcje, takie jak komunikacja równorzędna. Zobacz Cennik usługi Azure Virtual Network.
- Prywatna strefa DNS wiąże się z niewielką opłatą. Zobacz Cennik usługi Azure DNS.
Jak przeprowadzić migrację danych z bazy Cosmos DB znajdującej się za siecią wirtualną?
Kontener Java SE w usłudze App Service ma już łączność sieciową z usługą Cosmos DB, ale nie zawiera żadnych narzędzi migracji ani innych narzędzi bazy danych MongoDB. Masz kilka opcji:
- Automatycznie uruchamiaj migracje baz danych przy uruchomieniu aplikacji, na przykład z użyciem Hibernate lub Flyway.
- W sesji SSH aplikacji zainstaluj narzędzie migracji, takie jak Flyway, a następnie uruchom skrypt migracji. Pamiętaj, że zainstalowane narzędzie nie będzie utrwalane po ponownym uruchomieniu aplikacji, chyba że znajduje się w katalogu /home .
- Zintegruj usługę Azure Cloud Shell z siecią wirtualną i uruchom migracje baz danych z tego miejsca.
W jaki sposób programowanie aplikacji lokalnych działa z funkcją GitHub Actions?
Na przykład przy użyciu automatycznie wygenerowanego pliku przepływu pracy z usługi App Service każdy git push rozpoczyna nowy przebieg kompilacji i wdrożenia. Z lokalnego klonu repozytorium GitHub należy wprowadzić żądane aktualizacje i wypchnąć je do usługi GitHub. Na przykład:
git add .
git commit -m "<some-message>"
git push origin main
Nie mam uprawnień do tworzenia tożsamości przypisanej przez użytkownika
Zobacz Skonfiguruj wdrożenie funkcji GitHub Actions w Centrum wdrożeń.
Co mogę zrobić za pomocą narzędzia GitHub Copilot w swojej przestrzeni kodu?
Możesz zauważyć, że widok czatu GitHub Copilot był już dostępny, gdy tworzyłeś przestrzeń kodową. Dla Twojej wygody dołączamy rozszerzenie czatu Copilot w usłudze GitHub w definicji kontenera (zobacz .devcontainer/devcontainer.json). Potrzebujesz jednak konta GitHub Copilot (dostępna jest 30-dniowa bezpłatna wersja próbna).
Kilka wskazówek dotyczących rozmowy z usługą GitHub Copilot:
- W jednej sesji czatu pytania i odpowiedzi opierają się na sobie i możesz dostosować swoje pytania, aby dostosować uzyskaną odpowiedź.
- Domyślnie narzędzie GitHub Copilot nie ma dostępu do żadnego pliku w repozytorium. Aby zadać pytania dotyczące pliku, najpierw otwórz plik w edytorze.
- Aby umożliwić usłudze GitHub Copilot dostęp do wszystkich plików w repozytorium podczas przygotowywania odpowiedzi, zacznij od pytania
@workspace. Aby uzyskać więcej informacji, zobacz Use the @workspace agent. - W sesji czatu narzędzie GitHub Copilot może sugerować zmiany i (z
@workspace) nawet tam, gdzie wprowadzić zmiany, ale nie może wprowadzać zmian. Wystarczy dodać sugerowane zmiany i przetestować je.
Następne kroki
- Azure dla deweloperów języka Java
- Spring Boot
- Projekt Spring Data dla usługi Azure Cosmos DB
- Azure Cosmos DB i —App Service Linux
Dowiedz się więcej na temat uruchamiania aplikacji Java w usłudze App Service w przewodniku dla deweloperów.
Dowiedz się, jak zabezpieczyć aplikację przy użyciu domeny niestandardowej i certyfikatu.