Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A CLI do Desenvolvedor do Azure (azd) usa variáveis de ambiente para armazenar e gerenciar configurações para ambientes de implantação. Essas variáveis controlam como seu aplicativo é provisionado, implantado e executado no Azure. Este artigo explica como as variáveis de ambiente funcionam em azd ambientes e fornece diretrizes sobre como gerenciá-las com eficiência.
Entender variáveis de ambiente
No contexto da CLI do Desenvolvedor do Azure, as variáveis de ambiente são pares chave-valor que estão vinculados a ambientes nomeados específicos, como desenvolvimento, teste ou prod. Cada azd ambiente mantém seu próprio conjunto de variáveis de ambiente, permitindo que você defina configurações diferentes para destinos de implantação diferentes.
As variáveis de ambiente são azd armazenadas em arquivos dentro .env de suas pastas de ambiente na .azure pasta. Eles servem como entradas para:
- Fluxos de trabalho de implantação de aplicativo
- Configurações para serviços e conexões do Azure
- Provisionamento de infraestrutura via Bicep e Terraform
Ao contrário das variáveis de ambiente tradicionais que existem no nível do sistema operacional, azd as variáveis de ambiente têm como escopo ambientes específicos em seu projeto, fornecendo isolamento entre diferentes destinos de implantação.
As variáveis de ambiente fornecem vários benefícios importantes ao trabalhar com azd:
- Isolamento de ambiente: mantenha as configurações para desenvolvimento, teste e produção separadas e distintas.
- Consistência de configuração: verifique se todos os membros da equipe usam as mesmas configurações para um ambiente específico.
- Infraestrutura como Código: defina a parametrização de infraestrutura por meio de variáveis em vez de valores embutidos em código.
- Automação de implantação: habilite pipelines de CI/CD para implantar em ambientes diferentes usando a mesma base de código, mas configurações diferentes.
- Gerenciamento simplificado: atualize facilmente as configurações em todos os serviços em um ambiente de um local central.
Cada azd ambiente tem seu próprio conjunto de variáveis, permitindo configurações específicas do ambiente ao usar o mesmo código de aplicativo e modelos de infraestrutura.
Variáveis de ambiente e arquivos .env
As azd variáveis de ambiente são armazenadas em .env arquivos dentro dos diretórios específicos do ambiente do seu projeto. Quando você cria um ambiente usando azd env new <name>, uma estrutura de diretório é criada:
.azure/
├── <environment-name>/
│ ├── .env # Environment variables for this environment
O .env arquivo usa um formato padrão em que cada linha representa um par chave-valor:
KEY1=value1
KEY2=value2
Dica
Visite o artigo Trabalhando com ambientes para obter mais informações sobre azd ambientes.
Quando você executa comandos como azd up, azd carrega automaticamente variáveis do arquivo do .env ambiente de seleção.
Essas variáveis influenciam:
-
Provisionamento de infraestrutura: variáveis gostam
AZURE_LOCATIONeAZURE_SUBSCRIPTION_IDdeterminam onde e como os recursos são criados. - Implantação: variáveis como pontos de extremidade de serviço controlam como seu aplicativo se conecta aos serviços do Azure.
- Configuração do aplicativo: as variáveis podem ser passadas para a configuração do aplicativo para controlar seu comportamento.
-
Nomenclatura de recursos: variáveis como
AZURE_RESOURCE_GROUPinfluenciar padrões de nomenclatura de recursos.
O .env arquivo também é atualizado automaticamente azd durante operações como azd init, azd provisione azd deploy, capturando saídas de seus modelos de infraestrutura e armazenando-as para uso futuro.
Definir variáveis de ambiente
Você pode usar métodos diferentes para definir azd variáveis de ambiente, dependendo do cenário.
Usar comandos da CLI
A maneira recomendada de definir uma variável de ambiente é usar o azd env set comando, que inclui verificações para garantir valores válidos:
azd env set <key> <value>
Por exemplo, para definir um valor de configuração para seu aplicativo:
azd env set API_TIMEOUT 5000
O comando adiciona ou atualiza a variável no .env arquivo do ambiente selecionado no momento. Você também pode direcionar um ambiente específico usando o --environment sinalizador:
azd env set API_TIMEOUT 5000 --environment prod
Para verificar se a variável de ambiente foi definida corretamente:
azd env get-value API_TIMEOUT
Saída do Bicep
Um recurso poderoso é a capacidade de azd capturar automaticamente parâmetros de saída de seus modelos de infraestrutura do Bicep como variáveis de ambiente. Por exemplo, quando você define um parâmetro de saída em seu main.bicep arquivo:
output API_ENDPOINT string = apiService.outputs.SERVICE_ENDPOINT_URL
Após a execução azd provision, essa saída é salva automaticamente no arquivo do .env ambiente:
API_ENDPOINT=https://api-dev-123456.azurewebsites.net
Essa abordagem garante que seu aplicativo sempre tenha acesso às informações de recurso mais atuais, como:
- Pontos de extremidade de serviço e URLs
- Nomes e identificadores de recursos
Obter e usar variáveis de ambiente
Depois de definido, você pode acessar variáveis de ambiente em vários contextos.
Comandos da CLI
Para exibir todas as variáveis de ambiente para o ambiente atual:
azd env get-values
Para exibir o valor de uma variável específica:
azd env get-value API_ENDPOINT
Para saída legível pelo computador (útil em scripts):
azd env get-values --output json
Usar variáveis de ambiente em arquivos de infraestrutura
Você pode usar variáveis de ambiente para personalizar seus modelos de infraestrutura. Isso é útil para nomear, marcar ou configurar recursos com base no ambiente atual.
azd também usa marcas para localizar recursos no Azure para implantação e outras tarefas.
Considere o seguinte fluxo comum:
Durante
azd init,azddefine essas variáveis de ambiente com base na resposta do usuário aos prompts:AZURE_ENV_NAME=myapp-dev AZURE_LOCATION=eastus2Faça referência a essas variáveis na
main.parameters.jsoninfrapasta.azdsubstitui os valores durante o provisionamento e passa os parâmetros resolvidos para o Bicep:{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "name": { "value": "${AZURE_ENV_NAME}" }, "location": { "value": "${AZURE_LOCATION}" } } }Defina parâmetros correspondentes em seu modelo Bicep:
@description('Name of the environment used to derive resource names and tags.') param name string @minLength(1) @description('Primary Azure region for all resources.') param location stringazdfornece esses parâmetros Bicep com os valores substituídos emmain.parameters.json.Use os parâmetros para nomenclatura de recursos e marcas para identificar posteriormente a qual ambiente um recurso pertence:
var resourceToken = toLower(uniqueString(resourceGroup().id, name, location)) resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = { name: 'st${resourceToken}' location: location sku: { name: 'Standard_LRS' } kind: 'StorageV2' tags: { Environment: name Project: 'myproject' } }
Esse padrão mantém seus modelos flexíveis, habilita a personalização por ambiente sem alterações de código e melhora a governança de recursos (nomenclatura, marcação e descoberta).
Observação
azd também depende da marcação para localizar recursos do Azure durante o estágio de implantação.
Ganchos
azd as variáveis de ambiente são automaticamente pré-carregadas e disponíveis em ganchos e scripts personalizados definidos em seu azure.yaml arquivo, você pode acessar variáveis de ambiente usando a seguinte sintaxe:
# Use the variables in your script
echo "API endpoint: $API_ENDPOINT"
echo "Deploying to: $AZURE_LOCATION"
Você pode definir ganchos em seu azure.yaml arquivo para executar esses scripts em pontos específicos no azd ciclo de vida:
hooks:
postprovision:
windows:
shell: pwsh
run: ./scripts/load-env-vars.ps1
interactive: false
posix:
shell: sh
run: ./scripts/load-env-vars.sh
interactive: false
Dica
Visite o artigo Personalizar fluxos de trabalho usando ganchos para obter mais informações sobre como usar ganchos.
Remover ou atualizar variáveis
Para remover uma variável do seu ambiente:
azd env unset VARIABLE_NAME
Para atualizar uma variável existente:
azd env set VARIABLE_NAME "new-value"
Para atualizar suas variáveis de ambiente local do estado atual dos recursos do Azure:
azd env refresh
Atualizar seu ambiente é útil quando:
- Você deseja garantir que seu arquivo local
.envreflita as saídas mais recentes de sua infraestrutura (como cadeias de conexão, pontos de extremidade etc.). - Você precisa sincronizar variáveis de ambiente depois que um colega de equipe atualizou o ambiente.
Variáveis de ambiente do AZD vs OS
azd variáveis de ambiente e variáveis de ambiente do sistema operacional atendem a diferentes finalidades e funcionam de maneiras diferentes:
| Conceito | Azure Developer CLI | Sistema Operacional |
|---|---|---|
| Localização | Armazenado em .azure/<env-name>/.env arquivos |
Definir em seu ambiente do sistema operacional |
| Scope | Com escopo para um ambiente nomeado específico em um projeto | Global para sua sessão de usuário ou sistema |
| Management | Gerenciado usando azd env comandos |
Gerenciado usando comandos específicos do sistema operacional (exportetc set.) |
| Access | Carregado automaticamente por azd comandos |
Normalmente carregado explicitamente em scripts ou aplicativos |
| Target | Vinculado a recursos e implantações do Azure | Configuração do sistema de uso geral |
| Ciclo de vida | Persistir entre sessões de terminal | Pode ser temporário ou persistente dependendo de como eles são definidos |
azd não lê ou grava automaticamente variáveis de ambiente do sistema operacional. No entanto, você pode interagir com ambos os tipos de variáveis usando scripts personalizados.
Ler azd variáveis de ambiente e variáveis de ambiente do sistema operacional:
# Access OS environment variable
echo "OS variable: $PATH"
# Access azd environment variable
echo "AZD variable: $(azd env get-value MY_VARIABLE)"
Escreva azd variáveis de ambiente em variáveis de ambiente do sistema operacional ou da estrutura:
# Load all azd environment variables into the current shell session
while IFS='=' read -r key value; do
value=$(echo "$value" | sed 's/^"//' | sed 's/"$//')
export "$key=$value"
done <<EOF
$(azd env get-values)
EOF
Variáveis de ambiente padrão
azd define e usa várias variáveis de ambiente comuns em todos os ambientes:
| Variable | Descrição | Example | Quando definido |
|---|---|---|---|
AZURE_ENV_NAME |
Nome do ambiente atual | dev |
Quando o ambiente é criado |
AZURE_LOCATION |
Região do Azure em que os recursos são implantados | eastus |
Durante o primeiro provisionamento |
AZURE_SUBSCRIPTION_ID |
ID da assinatura do Azure usada | 00000000-0000-0000-0000-000000000000 |
Durante o primeiro provisionamento |
AZURE_RESOURCE_GROUP |
Nome do grupo de recursos | rg-myapp-dev |
Durante o provisionamento |
AZURE_PRINCIPAL_ID |
A ID da entidade de serviço/usuário em execução | 00000000-0000-0000-0000-000000000000 |
Durante o provisionamento |
AZURE_PRINCIPAL_TYPE |
O tipo de uma entidade de segurança no ambiente. | 1a2b3c |
Durante o provisionamento |
AZURE_TENANT_ID |
ID do locatário do Azure usado. | 00000000-0000-0000-0000-000000000000 |
Durante o provisionamento |
Segredos e considerações de dados confidenciais
Embora as variáveis de ambiente sejam convenientes para a configuração, elas exigem tratamento especial para dados confidenciais:
Evite armazenar segredos em arquivos .env
.env os arquivos normalmente são armazenados em texto sem formatação e podem ser facilmente:
- Acidentalmente confirmado no controle do código-fonte
- Compartilhado ou copiado sem proteções adequadas
- Exibido por qualquer pessoa com acesso aos arquivos do projeto
- Incluído em logs ou relatórios de erro
Aviso
Nunca armazene segredos em um arquivo da CLI .env do Desenvolvedor do Azure. Esses arquivos podem ser facilmente compartilhados ou copiados em locais não autorizados ou verificados no controle do código-fonte. Use serviços como o Azure Key Vault ou o RBAC (Controle de Acesso Baseado em Função) do Azure para soluções protegidas ou sem segredo.
Alternativas para lidar com segredos
Para dados confidenciais, considere estas abordagens mais seguras:
Referências do Azure Key Vault: armazenar segredos no Azure Key Vault e referenciá-los em seu
.envarquivo:azd env set-secret <secret-value>Esse comando cria um segredo do Key Vault e armazena uma referência a ele em seu
.envarquivo em vez do valor real.Identidades gerenciadas: configure seus serviços do Azure para usar identidades gerenciadas em vez de cadeias de conexão ou chaves de acesso.
Segurança específica do ambiente: aplique controles de segurança mais rigorosos a ambientes de produção do que os de desenvolvimento.
Segredos just-in-time: gere credenciais de curta duração durante a implantação em vez de armazenar segredos persistentes.