Perguntas frequentes sobre variáveis de ambiente

Este artigo responde a perguntas frequentes sobre como trabalhar com variáveis de ambiente e a CLI do Desenvolvedor do Azure (azd).

Dica

Para obter um guia abrangente sobre como criar e gerenciar ambientes na CLI do Desenvolvedor do Azure, consulte Trabalhar com ambientes na CLI do Desenvolvedor do Azure.

Quais são as diferenças entre azd variáveis de ambiente e variáveis de ambiente do sistema?

azd as variáveis de ambiente são armazenadas no .env arquivo no .azure/<environment name> diretório do seu projeto e são separadas das variáveis de ambiente do sistema/sistema operacional. azd variáveis de ambiente configuram tarefas de provisionamento e implantação de modelo e são acessíveis usando comandos como azd env ou azd env get-values.

Uma captura de tela da estrutura da pasta do ambiente.

As variáveis de ambiente do sistema não são diretamente acessíveis por meio azd de comandos e devem ser gerenciadas com scripts personalizados do Shell ou do PowerShell, geralmente usando azdganchos.

Os comandos podem azd ler e gravar diretamente variáveis de ambiente do sistema?

Não, azd os comandos não podem ler ou gravar variáveis de ambiente do sistema. Comandos como azd env set ou azd env get-values operam em valores armazenados no arquivo de modelo .env para um ambiente específico azd . azd os ambientes são gerenciados usando subpastas no diretório do modelo de projeto, o .azure/<environment name> que permite que seu modelo tenha vários ambientes. As subpastas de ambiente contêm arquivos de configuração, como .env os que descrevem o ambiente.

Use scripts personalizados do Shell ou do PowerShell com azdganchos para ler ou gravar variáveis de ambiente no nível do sistema.

Qual é a relação entre variáveis de saída definidas nas variáveis de main.bicep arquivo e azd ambiente?

As variáveis de saída definidas no main.bicep arquivo são armazenadas automaticamente no .env arquivo do modelo azd . Considere as seguintes variáveis de saída em um main.bicep arquivo de infraestrutura de modelo:

output API_BASE_URL string = api.outputs.SERVICE_API_URI
output REACT_APP_WEB_BASE_URL string = web.outputs.SERVICE_WEB_URI

Depois de um bem-sucedido azd up ou azd provision, azd grava essas duas variáveis no .env arquivo no .azure/<environment name> diretório do seu projeto:

API_BASE_URL="<example-api-url>"
output REACT_APP_WEB_BASE_URL="<example-app-url>"

Em seguida, você pode acessar essas variáveis do .env arquivo usando azd env get-values.

Quais variáveis de ambiente são definidas no .env arquivo por padrão?

As seguintes variáveis de ambiente são definidas no .env arquivo por padrão:

Nome Descrição Valores de exemplo Quando disponível
AZURE_ENV_NAME O nome do ambiente em uso. todo-app-dev Quando um ambiente é criado (depois de executar azd init ou azd env new, por exemplo).
AZURE_LOCATION O local do ambiente em uso. eastus2 Logo antes de um ambiente ser provisionado pela primeira vez.
AZURE_PRINCIPAL_ID A entidade de serviço/usuário em execução. 925cff12-ffff-4e9f-9580-8c06239dcaa4 Determinado automaticamente durante o provisionamento (efêmero).
AZURE_SUBSCRIPTION_ID A assinatura de destino. 925cff12-ffff-4e9f-9580-8c06239dcaa4 Logo antes de um ambiente ser provisionado pela primeira vez.
SERVICE_<service>_IMAGE_NAME O nome completo da imagem de contêiner publicada no Registro de Contêiner do Azure para serviços de aplicativo de contêiner. todoapp/web-dev:azdev-deploy-1664988805 Após uma publicação bem-sucedida de uma containerapp imagem

Recupere azd variáveis de ambiente usando o azd env get-values comando.

azd env get-values

Os motivos comuns para acessar azd variáveis de ambiente incluem o seguinte:

  • Execute configuração adicional em scripts de gancho.
  • Exponha os .env valores do modelo à estrutura de código do aplicativo, como Node.js ou .NET.
  • Escreva os valores em .env variáveis de ambiente do sistema.

Dica

Tenha cuidado ao definir variáveis de ambiente do sistema, pois elas podem causar conflitos com outros modelos que compartilham os mesmos nomes de variáveis de ambiente.

Como definir manualmente uma nova azd variável de ambiente?

Defina variáveis de ambiente adicionais azd usando o azd env set comando, fornecendo a chave e o valor para sua variável.

Os motivos comuns para definir azd variáveis de ambiente incluem o seguinte:

  • Acesse as informações de recursos do Azure criadas durante o provisionamento necessário durante a implantação.
  • Substitua ou altere valores de variável de ambiente padrão azd .
  • Forneça valores de configuração personalizados adicionais para uso em provisionamento, implantação ou scripts personalizados.
azd env set MY_KEY MyValue

Como copiar ou gravar azd variáveis de ambiente como variáveis de ambiente do sistema?

Em alguns cenários, talvez você queira copiar azd variáveis de ambiente para outro arquivo de ambiente ou para o ambiente do sistema para uso por estruturas de linguagem. Por exemplo, talvez você queira usar URLs de ponto de extremidade de serviços provisionados do Azure para se conectar a esses serviços no código do aplicativo. Use scripts personalizados para recuperar azd variáveis de ambiente e defini-las como variáveis de ambiente do sistema. É comum executar esses scripts como ganchos durante o azd ciclo de vida, como visto no exemplo a seguir:

Observação

Tenha cuidado ao copiar variáveis de azd ambiente para seu sistema local ou outros ambientes operacionais. Variáveis de ambiente do sistema com nomes correspondentes podem ser escolhidas azd e causar conflitos entre modelos diferentes azd ou ambientes diferentes azd .

postprovision:
    windows:
        shell: pwsh
        run: ./scripts/map-env-vars.ps1
        interactive: false
        continueOnError: false
    posix:
        shell: sh
        run: ./scripts/map-env-vars.sh
        interactive: false
        continueOnError: false

O script de shell referenciado para Linux recupera as azd variáveis de ambiente e as exporta como variáveis de ambiente do sistema:

echo "Loading azd .env file from current environment..."

while IFS='=' read -r key value; do
    value=$(echo "$value" | sed 's/^"//' | sed 's/"$//')
    export "$key=$value"
done <<EOF
$(azd env get-values)
EOF

O script referenciado do PowerShell para Windows recupera as azd variáveis de ambiente e as exporta como variáveis de ambiente do sistema:

Write-Host "Loading azd .env file from current environment"
foreach ($line in (& azd env get-values)) {
    if ($line -match "([^=]+)=(.*)") {
        $key = $matches[1]
        $value = $matches[2] -replace '^"|"$'
        [Environment]::SetEnvironmentVariable($key, $value)
    }
}

Próximas etapas