Den här artikeln besvarar vanliga frågor om Azure Developer CLI.
Allmänt
Hur gör jag för att avinstallera Azure Developer CLI?
Det finns olika alternativ för avinstallation azd
beroende på hur du installerade den. Mer information finns på installationssidan .
Vad är skillnaden mellan Azure Developer CLI och Azure CLI?
Både Azure Developer CLI (azd
) och Azure CLI (az
) är 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 att etablera/hantera Azure-resurser hjälper azd
det 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 miljövariabeln AZURE_ENV_NAME
som används i Azure Developer CLI-mallar. AZURE_ENV_NAME används också som prefix i 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 mer än en miljö?
Ja. Du kan konfigurera olika miljöer (till exempel dev, test, produktion). Du kan använda azd env
till att hantera dessa miljöer.
Var lagras miljökonfigurationsfilen (.env)?
Filsökvägen för .env är <your-project-directory-name>\.azure\<your-environment-name>\.env
.
Hur används .env-filen?
I Azure Developer CLI azd
refererar kommandona till .env-filen för miljökonfiguration. Kommandon som azd deploy
även uppdaterar .env-filen med till exempel db-anslutningssträng 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. - Om du vill hämta den befintliga env som skapats med hjälp av Codespaces kör du
azd env refresh
. 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 i stället 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 för 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
secretOrRandomPassword
funktionen . - Om hemligheten inte finns skapas ett Nyckelvalv och den slumpmässigt genererade hemligheten lagras i den.
- Vid framtida distributioner
secretOrRandomPassword
hämtar metoden 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 main.parameters.json
en post i mappen i 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 när azd provision
det 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 gör jag för att hittar du 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 azd
identifierar du 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
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 resourceName
egenskapen i azure.yaml
för att ange ett explicit resursnamn. I så fall körs inte logiken ovan.
Kommando: azd up
Kan jag köra "azd up"?
Ja. Vi använder det inkrementella distributionsläget.
Hur gör jag för att hitta 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 Anslut 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-GH-account>/<your-repo>/secrets/actions
.
Vad är OpenID Anslut (OIDC) och stöds det?
Med OpenID Connect kan dina arbetsflöden utbyta kortlivade token direkt från Azure.
Även om OIDC stöds som standard för GitHub Actions och Azure Pipeline (anges som federerade) stöds det inte för Azure DevOps eller Terraform.
- För Azure DevOps resulterar det uttryckligen
--auth-type
federated
i ett fel. - För Terraform:
- Om
--auth-type
inte har definierats återgår det tillclientcredentials
och resulterar i en varning. - Om
--auth-type
anges uttryckligen tillfederated
resulterar det i ett fel.
- Om
Hur gör jag för att återställa Azure-tjänstens huvudnamn som lagras i GitHub Actions?
Gå till https://github.com/<your-GH-account>/<your-repo>settings/secrets/actions
och uppdatera AZURE_CREDENTIALS
sedan 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-GH-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
.