Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Artykuł zawiera odpowiedzi na często zadawane pytania dotyczące narzędzi, poleceń i środowisk interfejsu wiersza polecenia dla programistów Azure (azd).
Pytania ogólne
Poniższa sekcja koncentruje się na ogólnych azd pytaniach dotyczących narzędzi i środowiska.
Jak odinstalować Azure Developer CLI?
Istnieją różne opcje odinstalowywania azd w zależności od sposobu jego instalacji. Aby uzyskać szczegółowe informacje, odwiedź stronę instalacji .
Jaka jest różnica między Azure Developer CLI a Azure CLI?
Azure Developer CLI (azd) i Azure CLI (az) to narzędzia wiersza polecenia, ale każde z nich ułatwia wykonywanie innych zadań.
azd koncentruje się na przepływie pracy deweloperów wysokiego poziomu. Oprócz aprowizacji/zarządzania zasobami Azure azd ułatwia łączenie składników chmury, lokalnej konfiguracji programowania i automatyzacji potoków w kompletnym rozwiązaniu.
Azure CLI to narzędzie płaszczyzny sterowania do tworzenia i administrowania infrastrukturą Azure, taką jak maszyny wirtualne, sieci wirtualne i magazyn. Azure CLI jest zaprojektowana wokół szczegółowych poleceń dla określonych zadań administracyjnych.
Aby uzyskać więcej informacji, odwiedź Azure Developer CLI a Azure CLI.
Co to jest nazwa środowiska?
Azure Developer CLI używa nazwy środowiska do ustawienia zmiennej środowiskowej AZURE_ENV_NAME, która jest używana przez szablony CLI Azure Developer.
AZURE_ENV_NAME jest również używany do prefiksu nazwy grupy zasobów Azure. Ponieważ każde środowisko ma własny zestaw konfiguracji, Azure interfejs wiersza polecenia dewelopera przechowuje wszystkie pliki konfiguracji w katalogach środowiska.
├── .Azure [This directory displays after you run `azd init` or `azd up`]
│ ├── <your environment1> [A directory to store all environment-related configurations]
│ │ ├── .env [Contains environment variables]
│ │ └── main.parameters.json [A parameter file]
│ └── <your environment2> [A directory to store all environment-related configurations]
│ │ ├── .env [Contains environment variables]
│ │ └── main.parameters.json [A parameter file]
│ └──config.json
Aby uzyskać więcej informacji na temat przepływów pracy, zobacz azd init i azd up.
Czy mogę skonfigurować więcej niż jedno środowisko?
Tak. Możesz skonfigurować różne środowiska (na przykład deweloperskie, testowe, produkcyjne). Do zarządzania tymi środowiskami można użyć azd env .
Gdzie jest przechowywany plik konfiguracji środowiska (env)?
Ścieżka pliku env jest <your-project-directory-name>\.azure\<your-environment-name>\.env. Aby uzyskać więcej informacji, zobacz Zarządzanie zmiennymi środowiskowymi.
Jak jest używany plik env?
W Azure Developer CLI polecenia azd odnoszą się do pliku .env dla konfiguracji środowiska. Polecenia, takie jak azd deploy, również aktualizują plik .env, na przykład poprzez dodanie ciągu połączenia bazy danych i punktu końcowego Azure Key Vault.
Ja uruchomiłem azd up w usłudze Codespaces. Czy mogę kontynuować pracę w lokalnym środowisku projektowym?
Tak. Możesz kontynuować prace programistyczne lokalnie.
- Uruchom
azd init -t <template repo>, aby sklonować projekt szablonu na komputer lokalny. - Aby ściągnąć istniejącą env utworzoną przy użyciu usługi Codespaces, uruchom polecenie
azd env refresh. Upewnij się, że podajesz taką samą nazwę środowiska, subskrypcję i lokalizację, jak poprzednio.
Jak uwierzytelnić się w usłudze Codespaces, jeśli wystąpił problem z logowaniem urządzenia?
Jeśli wystąpią problemy z uwierzytelnianiem kodu urządzenia w usłudze Codespaces (na przykład cykliczne żądania uwierzytelniania 2FA lub błędy), spróbuj wykonać następujące obejście przy użyciu programu VS Code Desktop:
- Otwórz aplikację Codespace w programie VS Code Desktop przy użyciu jednej z następujących metod:
- Użyj palety poleceń (Ctrl+Shift+P w Windows lub Cmd+Shift+P w systemie MacOs) i wybierz pozycję Codespaces: Otwórz w programie VS Code Desktop.
- Kliknij lewy dolny róg obszaru Codespace w przeglądarce i wybierz pozycję Otwórz w programie VS Code Desktop.
- W terminalu pulpitu VS Code uruchom azd auth login i dokończ uwierzytelnianie w przeglądarce.
- Po uwierzytelnieniu zamknij program VS Code Desktop i wróć do środowiska Codespace w przeglądarce. Stan uwierzytelniania powinien być trwały.
Jak jest używany plik azure.yaml?
Plik azure.yaml opisuje aplikacje i typy zasobów Azure zawartych w szablonie.
Jakie jest zachowanie secretOrRandomPassword funkcji?
Funkcja secretOrRandomPassword pobiera tajemnicę z Azure Key Vault, jeśli podano parametry nazwy magazynu kluczy i tajemnicy. Jeśli te parametry nie są podane lub nie można pobrać tajnego, funkcja zwraca losowo wygenerowane hasło do użycia zamiast tego.
W poniższym przykładzie pokazano typowy przypadek użycia secretOrRandomPassword w pliku main.parameters.json. Zmienne ${AZURE_KEY_VAULT_NAME} i sqlAdminPassword są przekazywane jako parametry dla nazw Key Vault i tajemnicy. Jeśli nie można pobrać wartości, zamiast tego zostanie wygenerowane losowe hasło.
"sqlAdminPassword": {
"value": "$(secretOrRandomPassword ${AZURE_KEY_VAULT_NAME} sqlAdminPassword)"
}
Wynik secretOrRandomPassword powinien być również zapisywany w Key Vault dla przyszłych uruchomień, przy użyciu Bicep. Pobieranie i ponowne używanie tych samych sekrety w różnych wdrożeniach może zapobiec błędom lub niezamierzonym zachowaniom, które mogą wystąpić przy wielokrotnym generowaniu nowych wartości. Aby utworzyć Key Vault i zapisać wygenerowany sekret, użyj poniższego kodu Bicep. Pełny przykładowy kod dla tych modułów można wyświetlić w repozytorium interfejsu wiersza polecenia dewelopera Azure GitHub.
module keyVault './core/security/keyvault.bicep' = {
name: 'keyvault'
scope: resourceGroup
params: {
name: '${take(prefix, 17)}-vault'
location: location
tags: tags
principalId: principalId
}
}
module keyVaultSecrets './core/security/keyvault-secret.bicep' = {
name: 'keyvault-secret-sqlAdminPassword'
scope: resourceGroup
params: {
keyVaultName: keyVault.outputs.name
name: 'sqlAdminPassword'
secretValue: sqlAdminPassword
}
}]
Ta konfiguracja Bicep umożliwia następujący przepływ pracy do zarządzania sekretami:
- Jeśli określony sekret istnieje, zostaje pobrany z Key Vault przy użyciu funkcji
secretOrRandomPassword. - Jeśli wpis tajny nie istnieje, zostanie utworzony Key Vault, a wygenerowany losowo wpis tajny jest przechowywany w nim.
- W przyszłych wdrożeniach metoda
secretOrRandomPasswordpobiera przechowywany sekret, który teraz istnieje w Key Vault. Key Vault nie zostanie ponownie utworzony, jeśli już istnieje, ale ta sama wartość sekretu zostanie ponownie zapisana podczas kolejnego uruchomienia.
Czy mogę używać bezpłatnej subskrypcji Azure?
Tak, ale każda lokalizacja Azure może mieć tylko jedno wdrożenie. Jeśli została już użyta wybrana lokalizacja Azure, zostanie wyświetlony błąd wdrożenia:
InvalidTemplateDeployment: The template deployment '<env_name>' isn't valid according to the validation procedure. The tracking ID is '<tracking_id>'. See inner errors for details.
Aby rozwiązać ten problem, możesz wybrać inną lokalizację Azure.
Moja aplikacja hostowana w usłudze Azure App Service powoduje ostrzeżenie: wykryto stronę o zwodniczym charakterze. Jak mogę rozwiązać ten problem?
Może się to zdarzyć z powodu naszej metody nazewnictwa zasobów.
Nasze szablony "Azure Dev" umożliwiają skonfigurowanie nazwy zasobu. W tym celu możesz dodać wpis do main.parameters.json w folderze infra. Przykład:
"webServiceName": {
"value": "my-unique-name"
}
Ten wpis tworzy nowy zasób o nazwie "my-unique-name" zamiast losowej wartości, takiej jak "app-web-aj84u2adj", podczas kolejnego udostępniania aplikacji. Możesz ręcznie usunąć starą grupę zasobów przy użyciu portalu Azure lub uruchomić azd down, aby usunąć wszystkie poprzednie wdrożenia. Po usunięciu zasobów uruchom azd provision, aby utworzyć je ponownie przy użyciu nowej nazwy.
Ta nazwa musi być globalnie unikatowa. W przeciwnym razie podczas próby utworzenia zasobu wystąpi błąd usługi ARM podczas azd provision.
Czy mogę pracować z wieloma dzierżawcami Azure?
Tak. Aby uwierzytelnić się w dzierżawie określonej, użyj parametru --tenant-id z poleceniem azd auth login.
azd auth login --tenant-id <tenant-id>
Alternatywnie, jeśli chcesz, aby azd miał(a) dostęp do wszystkich swoich dzierżawców, najpierw możesz rozwiązać wyzwania związane z uwierzytelnianiem wieloskładnikowym (MFA) w przeglądarce.
- Otwórz Azure Portal w przeglądarce.
- Przejdź do każdej dzierżawy po jednym. Ta akcja wyzwala wszelkie niezbędne wyzwania dotyczące uwierzytelniania wieloskładnikowego i odświeża tokeny.
- Uruchom
azd auth loginw terminalu.azdużywa istniejącej sesji przeglądarki i tokenów dostępu, które są teraz prawidłowe dla wszystkich odwiedzonych dzierżawców.
Czy mogę uruchomić azd up wiele razy?
Tak. Używamy trybu wdrażania przyrostowego . Aby uzyskać więcej informacji, zobacz azd up.
Provisioning
azd W poniższej sekcji opisano proces prowizjonowania.
Czy mogę uruchomić azd provision wiele razy?
Tak. Używamy trybu wdrażania przyrostowego . Aby uzyskać więcej informacji, zobacz azd provision.
Jak polecenie azd provision wie, jakie zasoby należy przydzielić?
Polecenie używa szablonów Bicep, które znajdują się w <your-project-directory-name>/infra do aprowizacji zasobów Azure.
Gdzie mogę znaleźć, jakie zasoby są aprowidowane w Azure?
Przejdź do https://portal.azure.com, a następnie wyszukaj grupę zasobów, która jest rg-<your-environment-name>.
Jak znaleźć więcej informacji o błędach Azure?
Do aprowizowania zasobów Azure używamy szablonów Bicep, które znajdują się w <your-project-directory-name>/infra. Jeśli występują problemy, wyjście CLI zawiera komunikat o błędzie.
Możesz również przejść do https://portal.azure.com, a następnie wyszukać grupę zasobów, która jest rg-<your-environment-name>. Jeśli którekolwiek z wdrożeń zakończy się niepowodzeniem, wybierz link błędu, aby uzyskać więcej informacji.
W przypadku innych zasobów zobacz Rozwiązywanie typowych błędów wdrażania Azure — Azure Resource Manager.
Czy istnieje plik dziennika dla azd provisionprogramu ?
Wkrótce. Ta funkcja jest planowana na przyszłe wydanie.
Wdrożenie
W poniższej azd sekcji skupiono się na procesie wdrażania.
Czy mogę uruchomić azd deploy wiele razy?
Tak. Aby uzyskać więcej informacji, zobacz azd deploy .
W jaki sposób azd znajduje zasób Azure do wdrożenia kodu?
Podczas wdrażania azd najpierw odnajduje wszystkie grupy zasobów tworzące aplikację, wyszukując grupy oznaczone azd-env-name i wartością zgodną z nazwą środowiska. Następnie wylicza wszystkie zasoby w każdej z tych grup zasobów, wyszukując zasób oznaczony azd-service-name wartością zgodną z nazwą usługi z azure.yaml.
Chociaż zalecamy używanie tagów w zasobach, możesz również użyć resourceName właściwości azure.yaml , aby podać jawną nazwę zasobu. W takim przypadku powyższa logika nie jest uruchamiana.
Jak wdrożyć określone usługi w moim projekcie podczas pomijania innych?
Podczas wdrażania projektu można wybrać wdrożenie określonych usług, określając nazwę usługi w poleceniu (tj. azd deploy api) lub przechodząc do podfolderu zawierającego tylko usługi, które chcesz wdrożyć. W tym przypadku wszystkie inne usługi będą wyświetlane jako - Skipped.
Jeśli nie chcesz pominąć żadnych usług, pamiętaj, aby uruchomić polecenie z folderu głównego lub dodać flagę --all do polecenia.
Konfiguracja pipeline'u
Poniższa sekcja koncentruje się na konfiguracji potoku CI/CD.
Co to jest jednostka usługi Azure?
Podmiot usługi Azure to tożsamość utworzona do użytku z aplikacjami, usługami hostowanymi i zautomatyzowanymi narzędziami w celu uzyskiwania dostępu do zasobów platformy Azure. Ten dostęp jest ograniczony przez role przypisane do jednostki usługi, która zapewnia kontrolę nad tym, do których zasobów można uzyskiwać dostęp i na jakim poziomie. Aby uzyskać więcej informacji na temat uwierzytelniania z Azure do GitHub, zobacz Połączenie GitHub i Azure | Microsoft Docs.
Czy muszę utworzyć jednostkę usługi Azure przed uruchomieniem azd pipeline config?
Nie. Polecenie azd pipeline config zajmuje się tworzeniem jednostki usługi Azure oraz wykonywaniem niezbędnych kroków do przechowywania tajemnic w repozytorium GitHub.
Jakie są wszystkie wpisy tajne przechowywane w GitHub?
Polecenie przechowuje cztery wpisy tajne w GitHub: AZURE_CREDENTIALS, AZURE_ENV_NAME, AZURE_LOCATION i AZURE_SUBSCRIPTION_ID. Możesz zastąpić wartość każdego tajnego, przechodząc do https://github.com/<your-github-account>/<your-repo>/secrets/actions.
Co to jest openID Connect (OIDC) i czy jest obsługiwany?
Dzięki OpenID Connect przepływy pracy mogą wymieniać krótkotrwałe tokeny bezpośrednio z Azure.
Chociaż funkcja OIDC jest obsługiwana jako domyślna dla GitHub Actions i Azure Pipeline (ustawiona jako federowana), nie jest obsługiwana dla Azure DevOps lub Terraform.
- W przypadku Azure DevOps jawne wywołanie
--auth-typejakofederatedspowoduje wystąpienie błędu. - Dla programu Terraform:
- Jeśli
--auth-typenie jest zdefiniowana, nastąpi powrót doclientcredentialsi spowoduje ostrzeżenie. - Jeśli
--auth-typejest jawnie ustawiona nafederated, spowoduje to wystąpienie błędu.
- Jeśli
Jak zresetować główne konto usługi Azure przechowywane w GitHub Actions?
Przejdź do https://github.com/<your-github-account>/<your-repo>settings/secrets/actions, a następnie zaktualizuj AZURE_CREDENTIALS, kopiując i wklejając cały obiekt JSON dla nowej jednostki usługi. Przykład:
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}
Gdzie jest przechowywany plik GitHub Actions?
Ścieżka pliku GitHub Actions jest <your-project-directory-name>\.github\workflows\azure-dev.yml. Aby uzyskać więcej informacji, zobacz Szybki start: Tworzenie zasady usługi i uruchamianie akcji GitHub.
Czy w pliku azure-dev.yml można wdrożyć tylko kod w kroku kompilacji?
Tak. Zamień run: azd up --no-prompt na run: azd deploy --no-prompt.
Gdzie mogę znaleźć dziennik zadania GitHub Actions, które zostało wyzwolone po uruchomieniu azd pipeline config?
Przejdź do https://github.com/<your-github-account>/<your-repo>/actions, a następnie zapoznaj się z plikiem dziennika w przebiegu przepływu pracy.
Lokalne kompilowanie aplikacji kontenera
Dlaczego nie mogę uruchomić lokalnie aplikacji kontenera, którą kompiluję?
Podczas lokalnego kompilowania aplikacji kontenerów należy uruchomić azd auth login w kontenerze, aby aplikacja działała z AzureDeveloperCliCredential. Alternatywnie możesz skonfigurować aplikację tak, aby używała jednostki usługi zamiast AzureDeveloperCliCredential.