Partilhar via


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).

Sugestão

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 seu sistema/sistema operacional. azd As 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 de pastas do ambiente.

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

Comandos azd podem 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 seu 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 de shell ou PowerShell com azdhooks para ler ou gravar variáveis de ambiente a nível de sistema.

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

As variáveis de saída definidas no main.bicep arquivo são armazenadas automaticamente no .env arquivo do seu azd modelo. Considere as seguintes variáveis de saída em um arquivo de main.bicep 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

Após um azd up ou azd provision bem-sucedido, azd grava estas duas variáveis no ficheiro .env na diretoria .azure/<environment name> do projeto.

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

Em seguida, pode aceder a essas variáveis do arquivo usando .envazd env get-values.

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

As seguintes variáveis de .env ambiente são definidas no 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 A localização do ambiente atualmente em uso. eastus2 Logo antes de um ambiente ser provisionado pela primeira vez.
AZURE_PRINCIPAL_ID A entidade de usuário/serviço em execução. 925cff12-ffff-4e9f-9580-8c06239dcaa4 Determinado automaticamente durante o provisionamento (efêmero).
AZURE_SUBSCRIPTION_ID A subscrição pretendida. 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 contentor publicada no Registo de Contentores do Azure para serviços de aplicações de contentores. 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:

  • Realize configurações adicionais em scripts de hook.
  • Exponha os .env valores do modelo para a estrutura de código do aplicativo, como Node.js ou .NET.
  • Escreva os valores do sistema nas variáveis de ambiente .env.

Sugestão

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 defino 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 que são necessárias durante a implantação.
  • Substitua ou altere os valores das variáveis 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 faço para 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 seu aplicativo. Use scripts personalizados para recuperar azd variáveis de ambiente e, em seguida, defina-as 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 o seu sistema local ou outros ambientes operacionais. Variáveis de ambiente do sistema com nomes correspondentes podem ser captadas por azd e causar conflitos entre diferentes azd modelos ou diferentes azd ambientes.

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 shell script 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 PowerShell referenciado para Windows recupera as variáveis de azd 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óximos passos