Nejčastější dotazy k nástrojům a prostředí CLI pro vývojáře Azure

Tento článek obsahuje odpovědi na nejčastější dotazy týkající se nástrojů, příkazů a prostředí rozhraní příkazového řádku pro vývojáře Azure (azd).

Obecné otázky

Následující část se zaměřuje na obecné azd otázky týkající se nástrojů a prostředí.

Jak můžu odinstalovat rozhraní příkazového řádku pro vývojáře Azure?

Existují různé možnosti odinstalace azd v závislosti na tom, jak jste ho původně nainstalovali. Podrobnosti najdete na stránce instalace .

Jaký je rozdíl mezi rozhraním příkazového řádku pro vývojáře Azure a Azure CLI?

Azure Developer CLI (azd) a Azure CLI (az) jsou oba nástroje příkazového řádku, ale pomáhají vám při různých úkolech.

azd se zaměřuje na pracovní postup vývojáře vysoké úrovně. Kromě zřizování a správy prostředků Azure pomáhá azd spojit cloudové komponenty, místní konfiguraci vývoje a automatizaci kanálů do kompletního řešení.

Azure CLI je nástroj řídicí roviny pro vytváření a správu infrastruktury Azure, jako jsou virtuální počítače, virtuální sítě a úložiště. Azure CLI je určená pro podrobné příkazy pro konkrétní úlohy správy.

Další informace najdete na Azure Developer CLI vs Azure CLI.

Jaký je název prostředí?

Azure Developer CLI používá název prostředí k nastavení proměnné prostředí AZURE_ENV_NAME, kterou používají šablony Azure Developer CLI. AZURE_ENV_NAME slouží také k předponě názvu skupiny prostředků Azure. Vzhledem k tomu, že každé prostředí má vlastní sadu konfigurací, Azure Developer CLI ukládá všechny konfigurační soubory do adresářů prostředí.

├── .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

Další informace o pracovních postupech najdete v tématu azd init a azd up.

Můžu nastavit více než jedno prostředí?

Ano. Můžete nastavit různá prostředí (například vývoj, testování, produkční prostředí). Ke správě těchto prostředí můžete použít nástroj azd env .

Kde je uložený soubor konfigurace prostředí (.env)?

Cesta k souboru .env je <your-project-directory-name>\.azure\<your-environment-name>\.env. Další informace najdete v tématu Správa proměnných prostředí.

Jak se používá soubor .env?

V rozhraní příkazového řádku pro vývojáře Azure příkazy azd odkazují na soubor .env pro konfiguraci prostředí. Příkazy, jako je azd deploy, také aktualizují soubor .env, a to například připojovacím řetězcem pro databázi a koncovým bodem pro Azure Key Vault.

Spustil jsem azd up v Codespaces. Můžu pokračovat v práci v místním vývojovém prostředí?

Ano. Můžete pokračovat ve vývoji místně.

  1. Spuštěním azd init -t <template repo> naklonujte projekt šablony do místního počítače.
  2. Pokud chcete stáhnout existující prostředí vytvořené pomocí Codespaces, spusťte azd env refresh. Ujistěte se, že jste zadali stejný název prostředí, předplatné a umístění jako předtím.

Jak se můžu ověřit v Codespaces, pokud má přihlášení zařízení problém?

Pokud máte problémy s ověřováním kódu zařízení v Codespaces (například opakované požadavky nebo chyby 2FA), zkuste následující alternativní řešení s využitím VS Code Desktopu:

  1. Otevřete svůj Codespace v desktopové verzi VS Code pomocí jedné z těchto metod:
    • Použijte paletu příkazů (Ctrl+Shift+P na Windows nebo Cmd+Shift+P v macOs) a vyberte Codespaces: Open in VS Code Desktop.
    • V prohlížeči klikněte do levého dolního rohu codespace a vyberte Otevřít v aplikaci VS Code Desktop).
  2. V terminálu VS Code Desktop spusťte azd auth login a dokončete ověření pomocí prohlížeče.
  3. Po ověření zavřete VS Code Desktop a vraťte se do codespace v prohlížeči. Stav ověřování by měl být trvalý.

Jak se používá soubor azure.yaml?

Soubor azure.yaml popisuje aplikace a typy prostředků Azure, které jsou součástí šablony.

Jaké je chování secretOrRandomPassword funkce?

Funkce secretOrRandomPassword načte tajný kód z Azure Key Vault, pokud jsou k dispozici parametry pro název a tajný klíč trezoru klíčů. Pokud tyto parametry nejsou zadané nebo tajný kód nelze načíst, funkce místo toho vrátí náhodně vygenerované heslo.

Následující příklad ukazuje běžný případ použití secretOrRandomPassword v souboru main.parameters.json. Proměnné ${AZURE_KEY_VAULT_NAME} a sqlAdminPassword se předávají jako parametry pro názvy Key Vault a tajného kódu. Pokud hodnotu nelze načíst, vygeneruje se místo toho náhodné heslo.

"sqlAdminPassword": {
    "value": "$(secretOrRandomPassword ${AZURE_KEY_VAULT_NAME} sqlAdminPassword)"
}

Výstup secretOrRandomPassword by se měl také uložit do Key Vault pomocí Bicep pro budoucí spuštění. Načítání a opakované použití stejných tajných kódů napříč nasazeními může zabránit chybám nebo neúmyslnému chování, které se může zobrazit při opakovaném generování nových hodnot. Pokud chcete vytvořit Key Vault a uložit v něm vygenerovaný tajný kód, použijte níže uvedený kód Bicep. Úplný ukázkový kód pro tyto moduly můžete zobrazit v úložišti GitHub cli pro vývojáře Azure.

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
}
}]

Toto nastavení Bicep umožňuje správu tajných kódů pomocí následujícího pracovního postupu:

  1. Pokud zadaný tajný klíč existuje, načte se z Key Vault pomocí funkce secretOrRandomPassword.
  2. Pokud tajný kód neexistuje, vytvoří se Key Vault a náhodně vygenerovaný tajný kód se uloží do něj.
  3. Při budoucích nasazeních metoda secretOrRandomPassword načte uložený tajný kód nyní, když existuje v Key Vault. Key Vault se znovu nevytvoří, pokud už existuje, ale stejná hodnota tajného kódu se uloží znovu pro další spuštění.

Můžu používat Azure bezplatné předplatné?

Ano, ale každé Azure umístění může mít pouze jedno nasazení. Pokud jste už vybranou lokalitu Azure použili, dojde k chybě nasazení:

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.

Pokud chcete tento problém vyřešit, můžete vybrat jiné umístění Azure.

Moje aplikace hostovaná na Azure App Service vyvolává varování "Před vámi je klamavý web". Jak to můžu opravit?

K tomu může dojít kvůli naší metodě pojmenování prostředků.

Naše vytvořené šablony Azure pro vývoj umožňují konfigurovat název prostředku. Uděláte to tak, že do main.parameters.json ve složce infra přidáte položku. Například:

"webServiceName": {
    "value": "my-unique-name"
}

Tato položka vytvoří nový prostředek pojmenovaný „my-unique-name“ místo randomizované hodnoty, například „app-web-aj84u2adj“, když příště nasadíte svou aplikaci. Starou skupinu prostředků můžete buď odebrat ručně pomocí portálu Azure, nebo spustit příkaz azd down a odebrat všechna předchozí nasazení. Po odebrání prostředků spusťte azd provision a vytvořte je znovu s novým názvem.

Tento název bude muset být globálně jedinečný, jinak se během azd provision při pokusu o vytvoření prostředku zobrazí chyba ARM.

Můžu pracovat s více tenanty Azure?

Ano. Pokud chcete provést ověření u konkrétního tenanta, použijte parametr --tenant-id s příkazem azd auth login .

azd auth login --tenant-id <tenant-id>

Případně pokud chcete azd mít přístup ke všem tenantům, můžete nejprve v prohlížeči řešit problémy s vícefaktorovým ověřováním (MFA):

  1. Otevřete v prohlížeči Azure Portal.
  2. Přepněte na každého klienta jeden po druhém. Tato akce aktivuje všechny nezbytné výzvy vícefaktorového ověřování a aktualizuje vaše tokeny.
  3. Spusťte azd auth login v terminálu. azd bude používat existující relaci prohlížeče a přístupové tokeny, které jsou teď platné pro všechny tenanty, které jste navštívili.

Můžu spustit azd up vícekrát?

Ano. Používámerežimu přírůstkového nasazení . Další informace najdete v tématu azd up.

Provisioning

Část následující se zaměřuje na proces zřizování azd.

Můžu spustit azd provision vícekrát?

Ano. Používámerežimu přírůstkového nasazení . Další informace najdete v tématu zřizování azd.

azd provision Jak příkaz zjistí, jaké prostředky se mají zřídit?

Příkaz používá šablony Bicep, které najdete v části <your-project-directory-name>/infra k zřízení prostředků Azure.

Kde najdu, jaké prostředky jsou v Azure zřízeny?

Přejděte na https://portal.azure.com a vyhledejte skupinu prostředků s názvem rg-<your-environment-name>.

Jak najdu další informace o chybách Azure?

K zřizování prostředků Azure používáme šablony Bicep, které najdete v části <your-project-directory-name>/infra. Pokud dojde k problémům, zahrneme chybovou zprávu do výstupu rozhraní příkazového řádku.

Můžete také přejít na https://portal.azure.com a pak vyhledat skupinu prostředků, která je rg-<your-environment-name>. Pokud některá z nasazení selže, vyberte odkaz na chybu a získejte další informace.

Další prostředky najdete v tématu Řešení běžných chyb nasazení Azure – Azure Resource Manager.

Existuje soubor protokolu pro azd provision?

Již brzy. Tato funkce se plánuje pro budoucí verzi.

Nasazení

Následující část se zaměřuje na azd proces implementace.

Můžu spustit azd deploy vícekrát?

Ano. Další informace najdete v azd deploy.

Jak azd najde prostředek Azure pro nasazení mého kódu?

Během nasazování azd nejprve zjistí všechny skupiny prostředků, které tvoří vaši aplikaci, vyhledáním skupin označených azd-env-name a hodnotou, která odpovídá názvu vašeho prostředí. Potom vytvoří výčet všech prostředků v každé z těchto skupin prostředků a vyhledá prostředek označený azd-service-name hodnotou, která odpovídá názvu vaší služby z azure.yaml.

I když u prostředků doporučujeme používat značky, můžete k zadání explicitního názvu prostředku použít resourceName také vlastnost v azure.yaml . V takovém případě se výše uvedená logika nespustí.

Jak v projektu nasadím konkrétní služby a přeskočím ostatní?

Při nasazování projektu se můžete rozhodnout nasadit konkrétní služby zadáním názvu služby v příkazu (tj. azd deploy api) nebo přechodem do podsložky, která obsahuje pouze služby, které chcete nasadit. Když to uděláte, budou všechny ostatní služby uvedeny jako - Skipped.

Pokud nechcete přeskočit žádné služby, nezapomeňte buď spustit příkaz z kořenové složky, nebo přidat příznak --all do příkazu.

Konfigurace kanálu

Následující část se zaměřuje na konfiguraci kanálu CI/CD.

Co je aplikační identita Azure?

Zástupce služby Azure je identita vytvořená pro použití aplikacemi, hostovanými službami a automatizovanými nástroji k přístupu k prostředkům Azure. Tento přístup je omezený rolemi, které jsou přiřazeny k "service principal", což vám dává kontrolu nad tím, ke kterým prostředkům můžete přistupovat a na jaké úrovni můžete tento přístup kontrolovat. Další informace o ověřování z Azure do GitHub najdete v tématu Pojení GitHub a Azure | Microsoft Docs.

Musím před spuštěním příkazu azd pipeline config vytvořit instanční objekt Azure?

Ne. Příkaz azd pipeline config se postará o vytvoření instančního objektu Azure a provedení nezbytných kroků pro uložení tajných kódů do úložiště GitHub.

Jaké jsou všechny tajné kódy uložené v GitHub?

Příkaz ukládá čtyři tajné kódy do GitHub: AZURE_CREDENTIALS, AZURE_ENV_NAME, AZURE_LOCATION a AZURE_SUBSCRIPTION_ID. Hodnotu každého tajného kódu můžete přepsat tak, že přejdete na https://github.com/<your-github-account>/<your-repo>/secrets/actions.

Co je OpenID Connect (OIDC) a podporuje se?

S OpenID Connect můžou pracovní postupy vyměňovat krátkodobé tokeny přímo z Azure.

I když se OIDC podporuje jako výchozí pro GitHub Actions a Azure Pipeline (nastavený jako federated), není podporováno pro Azure DevOps ani Terraform.

  • Označení --auth-type jako federated u Azure DevOps způsobí chybu.
  • Pro Terraform:
    • Pokud není definován --auth-type, vrátí se zpět na clientcredentials a výsledkem bude upozornění.
    • Pokud je --auth-type explicitně nastavená na federated, dojde k chybě.

Jak obnovím hlavní službu Azure uloženou v GitHub Actions?

Přejděte na https://github.com/<your-github-account>/<your-repo>settings/secrets/actions, a potom aktualizujte AZURE_CREDENTIALS zkopírováním a vložením celého objektu JSON pro nový objekt hlavní služby. Například:

{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}

Kde je uložený soubor GitHub Actions?

Cesta k souboru GitHub Actions je <your-project-directory-name>\.github\workflows\azure-dev.yml. Další informace najdete v tématu Quickstart: Vytvoření servisního principála a spuštění akce GitHub.

V souboru azure-dev.yml můžu nasadit pouze kód v kroku sestavení?

Ano. Nahraďte run: azd up --no-prompt s run: azd deploy --no-prompt.

Kde najdu protokol úlohy GitHub Actions, kterou jsem aktivoval, když jsem spustil azd pipeline config?

Přejděte na https://github.com/<your-github-account>/<your-repo>/actions, a poté nahlédněte do souboru protokolu ve spuštění pracovního postupu.

Místní sestavení aplikace typu kontejner

Proč nemůžu místně spustit aplikaci kontejneru, kterou vytvářím?

Při sestavování kontejnerových aplikací místně musíte spustit azd auth login v kontejneru, aby aplikace fungovala s AzureDeveloperCliCredential. Případně můžete aplikaci nakonfigurovat tak, aby místo AzureDeveloperCliCredential používala principál služby.