Den här artikeln besvarar vanliga frågor om Azure Developer CLI.
Allmänt
Hur avinstallerar jag Azure Developer CLI?
Det finns olika alternativ för att avinstallera azd
beroende på hur du ursprungligen installerade den. Mer information finns på installationssidan för .
Vad är skillnaden mellan Azure Developer CLI och Azure CLI?
Azure Developer CLI (azd
) och Azure CLI (az
) är båda kommandoradsverktyg, men de hjälper dig att utföra olika uppgifter.
azd
fokuserar på arbetsflödet för utvecklare på hög nivå. Förutom etablering/hantering av Azure-resurser hjälper azd
till att sammanfoga molnkomponenter, lokal utvecklingskonfiguration och pipelineautomatisering till en komplett lösning.
Azure CLI är ett kontrollplansverktyg för att skapa och administrera Azure-infrastruktur, till exempel virtuella datorer, virtuella nätverk och lagring. Azure CLI är utformat för detaljerade kommandon för specifika administrativa uppgifter.
Vad är ett miljönamn?
Azure Developer CLI använder ett miljönamn för att ange den AZURE_ENV_NAME
miljövariabel som används av Azure Developer CLI-mallar. AZURE_ENV_NAME används också för att prefixa Namnet på Azure-resursgruppen. Eftersom varje miljö har en egen uppsättning konfigurationer lagrar Azure Developer CLI alla konfigurationsfiler i miljökataloger.
├── .Azure [This directory displays after you run add 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
Kan jag konfigurera fler än en miljö?
Ja. Du kan konfigurera olika miljöer (till exempel dev, test, produktion). Du kan använda azd env
för att hantera dessa miljöer.
Var lagras miljökonfigurationsfilen (.env)?
Filsökvägen .env är <your-project-directory-name>\.azure\<your-environment-name>\.env
.
Hur används .env-filen?
I Azure Developer CLI refererar azd
-kommandona till .env-filen för miljökonfiguration. Kommandon som azd deploy
även uppdatera .env-filen med till exempel db-anslutningssträngen och Azure Key Vault-slutpunkten.
Jag har kört "azd up" i Codespaces. Kan jag fortsätta mitt arbete i en lokal utvecklingsmiljö?
Ja. Du kan fortsätta utvecklingsarbetet lokalt.
- Kör
azd init -t <template repo>
för att klona mallprojektet till den lokala datorn. - Kör
azd env refresh
för att hämta den befintliga env som skapats med hjälp av Codespaces. Se till att du anger samma miljönamn, prenumeration och plats som tidigare.
Hur används filen azure.yaml?
Filen azure.yaml beskriver de appar och typer av Azure-resurser som ingår i mallen.
Vad är beteendet för funktionen "secretOrRandomPassword"?
Funktionen secretOrRandomPassword
hämtar en hemlighet från Azure Key Vault om parametrar för nyckelvalvets namn och hemlighet anges. Om dessa parametrar inte anges eller om en hemlighet inte kan hämtas returnerar funktionen ett slumpmässigt genererat lösenord som ska användas i stället.
I följande exempel visas ett vanligt användningsfall för secretOrRandomPassword
i en main.parameters.json
fil. Variablerna ${AZURE_KEY_VAULT_NAME}
och sqlAdminPassword
skickas som parametrar för namnen på Nyckelvalvet och hemligheten. Om värdet inte kan hämtas genereras ett slumpmässigt lösenord i stället.
"sqlAdminPassword": {
"value": "$(secretOrRandomPassword ${AZURE_KEY_VAULT_NAME} sqlAdminPassword)"
}
Utdata från secretOrRandomPassword
bör också sparas i Key Vault med Bicep för framtida körningar. Om du hämtar och återanvänder samma hemligheter mellan distributioner kan du förhindra fel eller oavsiktliga beteenden som kan uppstå när nya värden genereras upprepade gånger. Om du vill skapa ett Key Vault och lagra den genererade hemligheten i det använder du Bicep-koden nedan. Du kan visa den fullständiga exempelkoden för dessa moduler på Azure Developer CLI GitHub-lagringsplatsen.
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
}
}]
Den här Bicep-installationen aktiverar följande arbetsflöde för att hantera dina hemligheter:
- Om den angivna hemligheten finns hämtas den från Key Vault med hjälp av funktionen
secretOrRandomPassword
. - Om hemligheten inte finns skapas ett Nyckelvalv och den slumpmässigt genererade hemligheten lagras i den.
- Vid framtida distributioner hämtar metoden
secretOrRandomPassword
den lagrade hemligheten nu när den finns i Key Vault. Key Vault återskapas inte om det redan finns, men samma hemliga värde lagras igen för nästa körning.
Kan jag använda en kostnadsfri Azure-prenumeration?
Ja, men varje Azure-plats kan bara ha en distribution. Om du redan har använt den valda Azure-platsen visas distributionsfelet:
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.
Du kan välja en annan Azure-plats för att åtgärda problemet.
Min app som hanteras med Azure App Service utlöser en varning om "Bedräglig webbplats framåt". Hur kan jag åtgärda det?
Detta kan inträffa på grund av vår metod för att namnge resurser.
Våra "Azure Dev"-skapade mallar gör det möjligt att konfigurera namnet på resursen. Om du vill göra det kan du lägga till en post i main.parameters.json
i mappen infra
. Till exempel:
"webServiceName": {
"value": "my-unique-name"
}
Den här posten skapar en ny resurs med namnet "my-unique-name" i stället för ett slumpmässigt värde, till exempel "app-web-aj84u2adj" nästa gång du etablerar ditt program. Du kan antingen ta bort den gamla resursgruppen manuellt med hjälp av Azure-portalen eller köra azd down
för att ta bort alla tidigare distributioner. När du har tagit bort resurserna kör du azd provision
för att skapa dem igen med det nya namnet.
Det här namnet måste vara globalt unikt, annars får du ett ARM-fel under azd provision
när den försöker skapa resursen.
Kommando: azd provision
Hur vet kommandot vilka resurser som ska etableras?
Kommandot använder Bicep-mallar som finns under <your-project-directory-name>/infra
för att etablera Azure-resurser.
Var hittar jag vilka resurser som etableras i Azure?
Gå till https://portal.azure.com och leta sedan efter resursgruppen, som är rg-<your-environment-name>
.
Hur hittar jag mer information om Azure-fel?
Vi använder Bicep-mallar som finns under <your-project-directory-name>/infra
för att etablera Azure-resurser. Om det finns problem tar vi med felmeddelandet i CLI-utdata.
Du kan också gå till https://portal.azure.com och sedan leta efter resursgruppen, som är rg-<your-environment-name>
. Om någon av distributionerna misslyckas väljer du fellänken för att få mer information.
Andra resurser finns i Felsöka vanliga Azure-distributionsfel – Azure Resource Manager-.
Finns det en loggfil för "azd provision"?
Kommer snart. Den här funktionen planeras för en framtida version.
Kommando: azd deploy
Kan jag köra det här kommandot igen?
Ja.
Hur hittar azd den Azure-resurs som jag vill distribuera min kod till?
Under distributionen identifierar azd
först alla resursgrupper som utgör ditt program genom att leta efter grupper taggade med azd-env-name
och med ett värde som matchar namnet på din miljö. Sedan räknas alla resurser upp i var och en av dessa resursgrupper och letar efter en resurs taggad med azd-service-name
med ett värde som matchar namnet på din tjänst från azure.yaml
.
Vi rekommenderar att du använder taggar för resurser, men du kan också använda egenskapen resourceName
i azure.yaml
för att ange ett explicit resursnamn. I så fall körs inte logiken ovan.
Hur distribuerar jag specifika tjänster i mitt projekt medan jag hoppar över andra?
När du distribuerar projektet kan du välja att distribuera specifika tjänster antingen genom att ange tjänstnamnet i kommandot (d.v.s. azd deploy api
) eller genom att navigera till en undermapp som bara innehåller de tjänster som du vill distribuera. När du gör det visas alla andra tjänster som - Skipped
.
Om du inte vill hoppa över några tjänster måste du antingen köra kommandot från rotmappen eller lägga till flaggan --all
i kommandot.
Kommando: azd up
Kan jag köra "azd up"?
Ja. Vi använder inkrementell distributionsläge.
Hur hittar jag loggfilen för "azd up"?
Kommer snart. Den här funktionen planeras för en framtida version.
Kommando: azd pipeline
Vad är ett Huvudnamn för Azure-tjänsten?
Ett Huvudnamn för Azure-tjänsten är en identitet som skapas för användning med appar, värdbaserade tjänster och automatiserade verktyg för åtkomst till Azure-resurser. Den här åtkomsten begränsas av de roller som tilldelas tjänstens huvudnamn, vilket ger dig kontroll över vilka resurser som kan nås och på vilken nivå. Mer information om autentisering från Azure till GitHub finns i Ansluta GitHub och Azure | Microsoft Docs.
Behöver jag skapa ett Huvudnamn för Azure-tjänsten innan jag kör "azd pipeline config"?
Nej. Kommandot azd pipeline config
tar hand om att skapa Azure-tjänstens huvudnamn och utföra de steg som krävs för att lagra hemligheterna på din GitHub-lagringsplats.
Vilka är alla hemligheter som lagras i GitHub?
Kommandot lagrar fyra hemligheter i GitHub: AZURE_CREDENTIALS, AZURE_ENV_NAME, AZURE_LOCATION och AZURE_SUBSCRIPTION_ID. Du kan åsidosätta värdet för varje hemlighet genom att gå till https://github.com/<your-github-account>/<your-repo>/secrets/actions
.
Vad är OpenID Connect (OIDC) och stöds det?
Med OpenID Connectkan dina arbetsflöden utbyta kortlivade token direkt från Azure.
OIDC stöds som standard för GitHub Actions och Azure Pipeline (anges som federerade), men stöds inte för Azure DevOps eller Terraform.
- För Azure DevOps resulterar det uttryckligen i att
--auth-type
somfederated
resulterar i ett fel. - För Terraform:
- Om
--auth-type
inte har definierats återgår det tillclientcredentials
och resulterar i en varning. - Om
--auth-type
uttryckligen anges tillfederated
resulterar det i ett fel.
- Om
Hur återställer jag azure-tjänstens huvudnamn som lagras i GitHub Actions?
Gå till https://github.com/<your-github-account>/<your-repo>settings/secrets/actions
och uppdatera sedan AZURE_CREDENTIALS
genom att kopiera och klistra in hela JSON-objektet för det nya tjänstens huvudnamn. Till exempel:
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}
Var lagras GitHub Actions-filen?
GitHub Actions-filsökvägen är <your-project-directory-name>\.github\workflows\azure-dev.yml
.
Kan jag distribuera koden i byggsteget i filen azure-dev.yml?
Ja. Ersätt run: azd up --no-prompt
med run: azd deploy --no-prompt
.
Var hittar jag loggen för GitHub Actions-jobbet som jag utlöste när jag körde "azd pipeline config"?
Gå till https://github.com/<your-github-account>/<your-repo>/actions
och referera sedan till loggfilen i arbetsflödeskörningen.
Skapa ett containerprogram lokalt
Varför kan jag inte köra containerappen som jag skapar lokalt?
När du skapar containerprogram lokalt måste du köra azd auth login
i containern för att programmet ska fungera med AzureDeveloperCliCredential
. Du kan också konfigurera programmet så att det använder tjänstens huvudnamn i stället för AzureDeveloperCliCredential
.