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.
W tym samouczku pokazano, jak utworzyć bezpieczną aplikację Node.js w usłudze Azure App Service połączoną z bazą danych Azure Cosmos DB for MongoDB . Usługa Azure App Service oferuje wysoce skalowalną, samonastosową usługę hostingu internetowego przy użyciu systemu operacyjnego Linux. Po zakończeniu masz aplikację Express.js działającą w usłudze Azure App Service w systemie Linux.
Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
- Utwórz architekturę domyślnie bezpieczną dla usługi Azure App Service i usługi Azure Cosmos DB z użyciem interfejsu API MongoDB.
- Zabezpieczanie tajemnic połączenia przy użyciu tożsamości zarządzanej i odwołań do Key Vault.
- Wdróż przykładową aplikację Node.js 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.
- Przesyłanie strumieniowe 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ż bezpłatnie uzyskać jeden.
- Znajomość programowania Express.js.
- (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ść programowania Express.js.
- (Opcjonalnie) Aby wypróbować narzędzie GitHub Copilot, konto narzędzia GitHub Copilot. Dostępna jest 30-dniowa bezpłatna wersja próbna.
Przejdź do końca
Przykładową aplikację można szybko wdrożyć 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-nodejs-mongodb-azure-sample-app
cd msdocs-nodejs-mongodb-azure-sample-app
azd init --template msdocs-nodejs-mongodb-azure-sample-app
azd up
Uruchamianie aplikacji przykładowej
Skonfiguruj przykładową aplikację opartą na danych jako punkt początkowy. Przykładowe repozytorium zawiera konfigurację kontenera deweloperskiego. Kontener deweloperski ma wszystko, czego potrzebujesz do utworzenia aplikacji. Zawiera ona bazę danych, 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-nodejs-mongodb-azure-sample-app/fork.
- Usuń zaznaczenie pola Kopiuj tylko gałąź główną. Chcesz, aby wszystkie gałęzie.
- Wybierz Utwórz fork.
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 pozycję Code>Create codespace on starter-no-infra (Utwórz przestrzeń kodu w infrastrukturze starter-no-infra). Skonfigurowanie przestrzeni kodu zajmuje kilka minut.
Krok 3: W terminalu usługi Codespace:
- Uruchom program
npm install && npm start. - Po wyświetleniu powiadomienia
Your application running on port 3000 is available.wybierz pozycję Otwórz w przeglądarce. Przykładowa aplikacja powinna być widoczna na nowej karcie przeglądarki. - Aby zatrzymać aplikację Express.js, wpisz
Ctrl+C.
Napiwek
Możesz zapytać narzędzie GitHub Copilot o to repozytorium. Na przykład:
- @workspace Co robi ten projekt?
- @workspace Co robi folder .devcontainer?
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
Twórz usługę App Service i bazę danych Azure Cosmos DB
W tym kroku utworzysz 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 dla bazy danych MongoDB. W przypadku procesu tworzenia należy określić:
- Nazwa aplikacji internetowej. Jest to część nazwy DNS aplikacji.
- Region, w którym aplikacja będzie uruchamiana fizycznie na świecie. Jest również częścią nazwy DNS aplikacji.
- Stos środowiska uruchomieniowego dla aplikacji. W tym miejscu wybierasz wersję środowiska Node, 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 witryny Azure Portal 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 Web App + Database pod nagłówkiem Marketplace. Możesz również przejść bezpośrednio do obszaru Tworzenie aplikacji internetowej i bazy danych .
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-expressjs-mongodb-tutorial.
- Region: dowolny region świadczenia usługi Azure blisko Ciebie.
- Nazwa: msdocs-expressjs-mongodb-XYZ, gdzie XYZ jest dowolnymi trzema losowymi znakami.
- Stos wykonawczy: Node 24 LTS.
- Silnik: API Cosmos DB dla MongoDB. Usługa Azure Cosmos DB to natywna baza danych w chmurze oferująca 100% zgodny interfejs API bazy danych MongoDB. Zanotuj nazwę bazy danych wygenerowaną dla Ciebie (<>). Będziesz jej potrzebować później.
- Plan hostingu: Podstawowy. Gdy wszystko będzie gotowe, możesz skalować w górę do warstwy cenowej produkcyjnej.
- Wybierz 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 pozycję Przejdź do zasobu. Przejście bezpośrednio do aplikacji usługi App Service. 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. Zostanie 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.
- Prywatny punkt końcowy → Punkt końcowy dostępu dla zasobu bazy danych w sieci wirtualnej.
- Interfejs sieciowy → reprezentuje prywatny adres IP dla prywatnego punktu końcowego.
- Usługa Azure Cosmos DB dla bazy danych MongoDB → dostępna tylko zza prywatnego punktu końcowego. Baza danych i użytkownik są tworzone dla Ciebie na serwerze.
- Prywatna strefa DNS → umożliwia rozpoznawanie nazw DNS serwera usługi Azure Cosmos DB w sieci wirtualnej.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
Bezpieczne sekrety połączenia
Wdrożenie wygenerowało dla ciebie ciąg łączności już jako ustawienie aplikacji. Jednak najlepszą praktyką w zakresie zabezpieczeń jest całkowite unikanie przechowywania tajemnic w usłudze App Service. Przenieś wpisy tajne do magazynu kluczy i zmień ustawienie aplikacji na odwołanie do usługi Key Vault za pomocą łączników usługi.
Krok 1: Na stronie App Service:
- W menu po lewej stronie wybierz pozycję Ustawienia > Zmienne środowiskowe.
- Obok pozycji AZURE_COSMOS_CONNECTIONSTRING wybierz pozycję Pokaż wartość. Ten parametr połączenia pozwala nawiązanie połączenia z bazą danych Cosmos DB zabezpieczoną przy prywatnym punkcie końcowym. Wpis tajny jest zapisywany bezpośrednio w aplikacji usługi App Service, co nie jest najlepsze. Zmienisz tę konfigurację.
Krok 2: Utwórz magazyn kluczy na potrzeby bezpiecznego zarządzania tajnymi informacjami.
- Na górnym pasku wyszukiwania wpisz Key Vault, a następnie wybierz pozycję Marketplace>Key Vault.
- W Grupie zasobów wybierz msdocs-expressjs-mongodb-tutorial.
- W polu Nazwa magazynu kluczy wpisz nazwę składającą się tylko z liter i cyfr.
- W Region ustaw przykładową lokalizację jako grupę 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-expressjs-mongodb-tutorial.
- W polu Nazwa magazynu kluczy wpisz nazwę składającą się tylko z liter i cyfr.
- W polu Lokalizacja ustaw przykładową lokalizację jako grupę zasobów.
- W oknie dialogowym w polu Lokalizacja wybierz tę samą lokalizację co aplikacja usługi App Service.
- W obszarze Grupa zasobów wybierz grupę zasobów, taką jak msdocs-expressjs-mongodb-tutorial.
- W polu Nazwa wprowadź nazwę, taką jak msdocs-expressjs-mongodb-VaultEndpoint.
- W obszarze Sieć wirtualna wybierz pozycję msdocs-expressjs-mongodbVnet.
- W Podsieci wybierz pozycję msdocs-expressjs-mongodb-XYZSubnet.
- Wybierz przycisk OK.
- Wybierz Przejrzyj i utwórz, a następnie wybierz Utwórz. Poczekaj na zakończenie wdrożenia skarbca kluczy. Powinno zostać wyświetlone komunikat Wdrożenie zostało ukończone.
Krok 4:
- Na górnym pasku wyszukiwania wpisz msdocs-expressjs-mongodb, a następnie zasób usługi App Service o nazwie msdocs-expressjs-mongodb.
- Na stronie App Service w menu po lewej stronie wybierz pozycję Ustawienia>Łącznik usługi. Istnieje już łącznik, który stworzył kreator tworzenia aplikacji.
- Zaznacz pole wyboru obok łącznika, a następnie wybierz pozycję Edytuj.
- Na karcie Podstawowe ustaw Typ klienta na Node.js.
- Wybierz kartę Uwierzytelnianie .
- Wybierz Przechowaj tajny 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 Tworzenie połączenia dla połączenia usługi Key Vault:
- W usłudze Key Vault wybierz utworzony wcześniej magazyn kluczy.
- Wybierz Przejrzyj i utwórz. Powinieneś upewnić się, że zarządzana tożsamość przypisana przez system jest ustawiona na Wybrana.
- Po zakończeniu walidacji wybierz pozycję Utwórz.
Krok 6. Wróciłeś do okna dialogowego edycji defaultConnector.
- Na karcie Uwierzytelnianie poczekaj na utworzenie łącznika magazynu kluczy. Po zakończeniu pole rozwijane Połączenie Key Vault zostanie wybrane automatycznie.
- Wybierz 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. Proces tworzenia aplikacji zabezpieczył już bazę danych usługi Cosmos DB przy użyciu prywatnego punktu końcowego.
- Wybierz pozycję Zapisz. Poczekaj, aż aktualizacja powiodła się.
Krok 7. Aby zweryfikować zmiany:
- W menu po lewej stronie ponownie wybierz pozycję Zmienne środowiskowe .
- Obok ustawienia aplikacji AZURE_COSMOS_CONNECTIONSTRING wybierz pozycję Pokaż wartość. Wartość powinna być
@Microsoft.KeyVault(...), co oznacza, że to odwołanie do magazynu kluczy. Tajemnica jest teraz zarządzana w magazynie kluczy.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
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 ciągłej integracji w procesie wdrażania. Domyślnie każde git push repozytorium GitHub rozpoczyna akcję kompilacji i wdrażania.
Krok 1: W menu po lewej stronie wybierz pozycję Centrum wdrażania>.
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 Repozytorium wybierz msdocs-nodejs-mongodb-azure-sample-app.
- W obszarze Gałąź wybierz pozycję starter-no-infra. Ta gałąź jest taka sama, 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 zatwierdza plik workflow w wybranym repozytorium GitHub w katalogu
.github/workflows. Domyślnie centrum wdrażania tworzy tożsamość przypisaną przez użytkownika dla przepływu pracy do uwierzytelnienia przy użyciu 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: Wróć do przestrzeni roboczej GitHub w swoim przykładowym rozwidleniu, uruchom git pull origin starter-no-infra.
To polecenie ściąga nowo zatwierdzony plik przepływu pracy do przestrzeni kodu.
Krok 4 (opcja 1: w usłudze GitHub Copilot):
- Rozpocznij nową sesję czatu, wybierając widok Czat, a następnie +.
- Zapytaj: "@workspace Jak aplikacja łączy się z bazą danych?" Copilot może wskazać plikapp.js i wywołanie
mongoose.connect. - Załóżmy, że mam zmienną parametrów połączenia na platformie Azure o nazwie AZURE_COSMOS_CONNECTIONSTRING. Copilot może zasugerować kod podobny do tego w Opcji 2: bez użycia GitHub Copilot, a nawet poinformować Cię o konieczności wprowadzenia zmian w app.js.
- Otwórz app.js w eksploratorze i dodaj sugestię kodu w metodzie
getApp. Narzędzie 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 4 (opcja 2: bez narzędzia GitHub Copilot):
- W eksploratorze otwórz app.js.
- Znajdź wiersz o
mongoose.connectnazwie (wiersz 16) i zmieńprocess.env.MONGODB_URIwartość naprocess.env.AZURE_COSMOS_CONNECTIONSTRING || process.env.MONGODB_URI.
Krok 5:
- Wybierz rozszerzenie Kontroli Źródła.
- W polu tekstowym wpisz komunikat zatwierdzenia, taki jak
Update environment variable. 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 6. Wróć do strony Centrum wdrażania w witrynie Azure Portal:
- Na karcie Dzienniki wybierz pozycję Odśwież. Nowy przebieg wdrożenia został już rozpoczęty na podstawie Twoich zatwierdzonych zmian.
- W elemencie dziennika dla przebiegu wdrożenia wybierz wpis Dzienniki kompilacji/wdrażania z najnowszym znacznikiem czasu.
Krok 7: Zostaniesz przeniesiony do swojego repozytorium GitHub i zobaczysz, że akcja GitHub jest uruchomiona. Plik przepływu pracy definiuje dwa etapy, build i deploy. Poczekaj na uruchomienie usługi GitHub, aby wyświetlić stan Ukończono.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
Przechodzenie do aplikacji
Krok 1: Na stronie App Service:
- W menu po lewej stronie wybierz pozycję Przegląd.
- Wybierz adres URL aplikacji.
Krok 2. Dodaj kilka zadań do listy. Gratulacje, uruchamiasz bezpieczną aplikację zorientowaną na dane Node.js w usłudze Azure App Service.
Przesyłaj logi diagnostyczne
Usługa aplikacji Azure przechwytuje wszystkie komunikaty rejestrowane w konsoli, aby pomóc w diagnozowaniu problemów z Twoją aplikacją. Przykładowa aplikacja generuje komunikaty dziennika konsoli w każdym z jego punktów końcowych, aby zademonstrować tę funkcję. Na przykład get punkt końcowy zwraca komunikat o liczbie zadań pobranych z bazy danych i pojawia się komunikat o błędzie, jeśli coś pójdzie nie tak.
router.get('/', function(req, res, next) {
Task.find()
.then((tasks) => {
const currentTasks = tasks.filter(task => !task.completed);
const completedTasks = tasks.filter(task => task.completed === true);
console.log(`Total tasks: ${tasks.length} Current tasks: ${currentTasks.length} Completed tasks: ${completedTasks.length}`)
res.render('index', { currentTasks: currentTasks, completedTasks: completedTasks });
})
.catch((err) => {
console.log(err);
res.send('Sorry! Something went wrong.');
});
});
Krok 1: Na stronie 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 wybierz Log stream. Zobaczysz dzienniki aplikacji, w tym dzienniki platformy i dzienniki z wewnątrz kontenera.
Sprawdzanie wdrożonych plików przy użyciu narzędzia Kudu
Usługa Azure App Service udostępnia internetową konsolę diagnosyjną o nazwie Kudu. Konsola umożliwia sprawdzenie środowiska hostingu serwera dla aplikacji internetowej. Za pomocą narzędzia Kudu można wyświetlić pliki wdrożone na platformie Azure, przejrzeć historię wdrażania aplikacji, a nawet otworzyć sesję SSH w środowisku hostingu.
Krok 1: Na stronie App Service:
- W menu po lewej stronie wybierz pozycję Narzędzia programistyczne>.
- Wybierz pozycję Przejdź.
Krok 2. Na stronie Kudu wybierz pozycję Wdrożenia.
Jeśli wdrożysz kod w usłudze App Service przy użyciu narzędzia Git lub wdrożenia zip, zobaczysz historię wdrożeń aplikacji internetowej.
Krok 3: Wróć do strony głównej Kudu i wybierz opcję Witryna wwwroot.
Możesz wyświetlić strukturę wdrożonego folderu i wybrać opcję przeglądania i wyświetlania plików.
Uprzątnij zasoby
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:
- Aby potwierdzić usunięcie, wprowadź nazwę grupy zasobów.
- Wybierz pozycję Usuń.
Tworzenie zasobów platformy Azure i wdrażanie przykładowej aplikacji
W tej sekcji utworzysz zasoby platformy Azure i wdrożysz przykładową aplikację w usłudze App Service w systemie 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 nodejs-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 w tym miejscu <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 platformy Azure, uruchamiając polecenie
azd auth logini postępując zgodnie z instrukcjami.azd auth loginUtwórz niezbędne zasoby platformy Azure i wdróż kod aplikacji przy użyciu polecenia
azd up. Postępuj zgodnie z monitem, aby wybrać żądaną subskrypcję i lokalizację zasobów platformy Azure.azd upWykonanie
azd uppolecenia trwa około 15 minut. Pamięć podręczna Redis zajmuje najwięcej czasu. Polecenie kompiluje i wdraża kod aplikacji. Później zmodyfikujesz kod, aby pracować z usługą App Service.Podczas jego uruchamiania 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 interfejsem API bazy danych MongoDB: dostępne tylko zza jego prywatnego punktu końcowego. Baza danych jest tworzona dla Ciebie na serwerze.
- Azure Cache for Redis: dostępne tylko z poziomu sieci wirtualnej.
- Magazyn kluczy: dostępny tylko zza prywatnego punktu końcowego. Służy do zarządzania wpisami tajnymi dla aplikacji usługi App Service.
- Prywatne punkty końcowe: punkty końcowe dostępu dla magazynu kluczy, serwera bazy danych i pamięci podręcznej Redis w sieci wirtualnej.
- Prywatne strefy DNS: umożliw rozpoznawanie DNS bazy danych Cosmos DB, pamięci podręcznej Redis i magazynu kluczy w ramach 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.
Po pierwszym zakończeniu tworzenia zasobów i wdrożeniu kodu aplikacji, wdrożona przykładowa aplikacja nie działa jeszcze. Aby nawiązać połączenie z bazą danych na platformie Azure, musisz wprowadzić niewielkie zmiany.
Weryfikowanie parametrów połączenia
Szablon AZD już wygenerował dla Ciebie zmienne łączności jako ustawienia aplikacji i wyprowadza je do terminalu dla Twojej wygody. Ustawienia aplikacji to jeden ze sposobów na utrzymanie tajnych danych połączenia z dala od repozytorium kodu.
W danych wyjściowych usługi AZD znajdź ustawienie
AZURE_COSMOS_CONNECTIONSTRINGaplikacji . 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: - AZURE_COSMOS_CONNECTIONSTRING - AZURE_REDIS_CONNECTIONSTRING - AZURE_KEYVAULT_RESOURCEENDPOINT - AZURE_KEYVAULT_SCOPEAZURE_COSMOS_CONNECTIONSTRINGzawiera parametry połączenia do bazy danych Cosmos DB na platformie Azure. Musisz go użyć w kodzie później.Szablon AZD zawiera bezpośredni link do strony ustawień aplikacji. Znajdź link i otwórz go na nowej karcie przeglądarki.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
Modyfikowanie przykładowego kodu i ponowne wdrażanie
W usłudze GitHub Codespace rozpocznij nową sesję czatu, klikając widok Czat, a następnie klikając +.
Zapytaj, @workspace Jak aplikacja łączy się z bazą danych? Copilot może pokazać plik app.js i wywołanie
mongoose.connect.Załóżmy, że mam zmienną parametrów połączenia na platformie Azure o nazwie AZURE_COSMOS_CONNECTIONSTRING. Copilot może dać sugestię kodu podobną do tej w opcji 2: bez kroków Narzędzia GitHub Copilot , a nawet poinformuj Cię o zmianie w app.js.
Otwórz app.js w eksploratorze i dodaj sugestię kodu w metodzie
getApp.Narzędzie 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?.
Wróć do terminalu codespace, uruchom polecenie
azd deploy.azd deploy
Napiwek
Możesz również po prostu zawsze używać azd up, które wykonuje to samo, co azd package, azd provision, i azd deploy.
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
Przechodzenie 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.
Przesyłaj logi diagnostyczne
Usługa aplikacji Azure przechwytuje wszystkie komunikaty rejestrowane w konsoli, aby pomóc w diagnozowaniu problemów z Twoją aplikacją. Przykładowa aplikacja generuje komunikaty dziennika konsoli w każdym z jego punktów końcowych, aby zademonstrować tę funkcję. Na przykład get punkt końcowy zwraca komunikat o liczbie zadań pobranych z bazy danych i pojawia się komunikat o błędzie, jeśli coś pójdzie nie tak.
router.get('/', function(req, res, next) {
Task.find()
.then((tasks) => {
const currentTasks = tasks.filter(task => !task.completed);
const completedTasks = tasks.filter(task => task.completed === true);
console.log(`Total tasks: ${tasks.length} Current tasks: ${currentTasks.length} Completed tasks: ${completedTasks.length}`)
res.render('index', { currentTasks: currentTasks, completedTasks: completedTasks });
})
.catch((err) => {
console.log(err);
res.send('Sorry! Something went wrong.');
});
});
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 na temat rejestrowania w aplikacjach Java w serii "Włącz usługę Azure Monitor OpenTelemetry dla platformy .NET, Node.js, Python i aplikacji Java".
Masz problemy? Zapoznaj się z sekcją Rozwiązywanie problemów.
Uprzątnij zasoby
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 wdrożenia na portalu dla usługi Azure Cosmos DB wyświetla status konfliktu
- Na stronie przeglądarki wdrożonej aplikacji jest wyświetlany komunikat "Coś poszło nie tak".
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 być 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.
Na stronie przeglądarki wdrożonej aplikacji jest wyświetlany komunikat "Coś poszło nie tak".
Prawdopodobnie nadal musisz wprowadzić zmiany parametry połączenia w kodzie aplikacji. Zobacz Wdrażanie przykładowego kodu.
Często zadawane pytania
- Ile kosztuje ta konfiguracja?
- Jak nawiązać połączenie z serwerem usługi Azure Cosmos DB zabezpieczonym za siecią wirtualną przy użyciu innych narzędzi?
- W jaki sposób programowanie aplikacji lokalnych działa z funkcją GitHub Actions?
- Dlaczego wdrożenie funkcji GitHub Actions jest tak powolne?
- Nie mam uprawnień do tworzenia tożsamości przypisanej przez użytkownika
- Co mogę zrobić za pomocą narzędzia GitHub Copilot w swojej przestrzeni kodu?
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.
- Serwer usługi Azure Cosmos DB jest tworzony w jednym regionie i może być dystrybuowany do innych regionów. Zobacz Cennik usługi Azure Cosmos DB.
- Sieć wirtualna nie powoduje naliczania opłat, chyba że skonfigurujesz dodatkową funkcjonalność, jak np. peering. Zobacz Cennik usługi Azure Virtual Network.
- Prywatna strefa DNS wiąże się z niewielką opłatą. Zobacz Cennik usługi Azure DNS.
Jak mogę połączyć się z serwerem usługi Azure Cosmos DB zabezpieczonym za siecią wirtualną przy użyciu innych narzędzi?
- Aby uzyskać podstawowy dostęp z poziomu narzędzia wiersza polecenia, można uruchomić
mongoshz poziomu terminalu SSH aplikacji. Kontener aplikacji nie zawieramongosh, dlatego należy zainstalować go ręcznie. Należy pamiętać, że zainstalowany klient nie jest utrwalany podczas ponownego uruchamiania aplikacji. - Aby nawiązać połączenie z klienta graficznego interfejsu użytkownika bazy danych MongoDB, komputer musi znajdować się w sieci wirtualnej. Na przykład może to być maszyna wirtualna platformy Azure połączona z jedną z podsieci lub komputer w sieci lokalnej, która ma połączenie sieci VPN typu lokacja-lokacja z siecią wirtualną platformy Azure.
- Aby nawiązać połączenie z powłoki bazy danych MongoDB ze strony zarządzania usługą Azure Cosmos DB w witrynie Azure Portal, komputer musi również znajdować się w sieci wirtualnej. Zamiast tego można otworzyć zaporę sieciową serwera Azure Cosmos DB dla adresu IP komputera lokalnego, ale to zwiększa powierzchnię ataku tej konfiguracji.
W jaki sposób programowanie aplikacji lokalnych działa z funkcją GitHub Actions?
Weź automatycznie wygenerowany plik przepływu pracy z usługi App Service jako przykład, każdy git push rozpoczyna nową kompilację i uruchomienie wdrożenia. Z lokalnego klonu repozytorium GitHub dokonujesz żądanych aktualizacji i wysyłasz je do usługi GitHub. Na przykład:
git add .
git commit -m "<some-message>"
git push origin main
Dlaczego wdrożenie funkcji GitHub Actions jest tak powolne?
Automatycznie wygenerowany plik przepływu pracy z usługi App Service definiuje proces buduj-następnie-umieść, uruchomienie obejmujące dwa zadania. Ponieważ każde zadanie jest uruchamiane we własnym czystym środowisku, plik przepływu pracy działa tak, aby deploy zadanie miało dostęp do plików z build zadania.
- Pod koniec
buildzadania przekaż pliki jako artefakty. - Na początku zadania
deploypobierz artefakty.
Większość czasu poświęcanego przez proces dwuzadaniowy jest spędzana na wysyłanie i pobieranie artefaktów. Jeśli chcesz, możesz uprościć plik przepływu pracy, łącząc dwa zadania w jedno, co eliminuje konieczność kroków wysyłania i pobierania.
Nie mam uprawnień do tworzenia tożsamości przypisanej przez użytkownika
Zobacz Konfigurowanie wdrożenia funkcji GitHub Actions z Centrum wdrażania.
Co mogę zrobić za pomocą narzędzia GitHub Copilot w swojej przestrzeni kodu?
Możliwe, że już zauważyłeś, że widok czatu GitHub Copilot był dostępny w momencie tworzenia codespace'u. Dla 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 nawzajem, a ty możesz dopracować swoje pytania, aby uściślić 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. - Podczas sesji czatu narzędzie GitHub Copilot może sugerować zmiany,
@workspacea nawet gdzie wprowadzić zmiany, ale nie jest dozwolone, by wprowadzał zmiany za ciebie. Wystarczy dodać sugerowane zmiany i przetestować je.
Oto kilka innych rzeczy, które można powiedzieć, aby dostroić uzyskaną odpowiedź:
- @workspace Gdzie zdefiniowano MONGODB_URI?
- W którym pliku wprowadzam zmianę?
- Czy ta zmiana spowoduje przerwanie działania aplikacji lokalnie?