Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье приведены ответы на часто задаваемые вопросы о работе с переменными среды и интерфейсом командной строки разработчика Azure (azd
).
Каковы различия между azd
переменными среды и системными переменными среды?
azd
Переменные среды хранятся в файле в .env
.azure/<environment name>
каталоге проекта и отличаются от переменных среды системы или ОС. azd
Переменные среды настраивают задачи подготовки и развертывания шаблонов и доступны с помощью таких команд, как azd env
или azd env get-values
.
Системные переменные среды не доступны напрямую с помощью azd
команд и должны управляться с помощью пользовательских скриптов оболочки или PowerShell, как правило, с помощью azd
перехватчиков.
Могут ли azd
команды напрямую считывать и записывать системные переменные среды?
Нет, azd
команды не могут считывать или записывать системные переменные среды. Такие команды, как azd env set
или azd env get-values
работают со значениями, хранящимися в файле шаблона .env
для определенной azd
среды. azd
среды управляются с помощью вложенных папок в .azure/<environment name>
каталоге шаблона проекта, что позволяет шаблону иметь несколько сред. Вложенные папки среды содержат файлы конфигурации, такие как .env
описание среды.
Используйте пользовательские оболочки или скрипты PowerShell с перехватчиками для azd
чтения или записи переменных среды на уровне системы.
Что такое связь между выходными переменными, заданными в main.bicep
переменных файла и azd
среды?
Выходные переменные, заданные main.bicep
в файле файла, автоматически хранятся в .env
файле azd
шаблона. Рассмотрим следующие выходные переменные в main.bicep
файле инфраструктуры шаблона:
output API_BASE_URL string = api.outputs.SERVICE_API_URI
output REACT_APP_WEB_BASE_URL string = web.outputs.SERVICE_WEB_URI
После успешного azd up
выполнения или azd
azd provision
записи этих двух переменных .env
в файл в .azure/<environment name>
каталоге проекта:
API_BASE_URL="<example-api-url>"
output REACT_APP_WEB_BASE_URL="<example-app-url>"
Затем вы можете получить доступ к этим переменным из .env
файла с помощью azd env get-values
.
Какие переменные среды задаются в .env
файле по умолчанию?
Следующие переменные среды задаются в .env
файле по умолчанию:
Имя | Описание | Пример значений | Когда доступно |
---|---|---|---|
AZURE_ENV_NAME |
Имя используемой среды. | todo-app-dev |
При создании среды (после запуска azd init или azd env new, например). |
AZURE_LOCATION |
Расположение используемой среды. | eastus2 |
Перед первой подготовкой среды. |
AZURE_PRINCIPAL_ID |
Запущенный пользователь или субъект-служба. | 925cff12-ffff-4e9f-9580-8c06239dcaa4 |
Определяется автоматически во время подготовки (эфемерный). |
AZURE_SUBSCRIPTION_ID |
Целевая подписка. | 925cff12-ffff-4e9f-9580-8c06239dcaa4 |
Перед первой подготовкой среды. |
SERVICE_<service>_IMAGE_NAME |
Полное имя образа контейнера, опубликованного в Реестр контейнеров Azure для служб приложений контейнеров. | todoapp/web-dev:azdev-deploy-1664988805 |
После успешной публикации containerapp образа |
Что рекомендуется использовать для получения azd
переменных среды из .env
файла? Зачем мне это делать?
Получение azd
переменных среды с помощью azd env get-values
команды.
azd env get-values
Ниже приведены распространенные причины доступа к azd
переменным среды:
- Выполните дополнительную настройку в скриптах перехватчика.
.env
Предоставление значений из шаблона в платформу кода приложения, например Node.js или .NET.- Запись значений
.env
в системные переменные среды.
Совет
Используйте осторожность при настройке системных переменных среды, так как они могут привести к конфликтам с другими шаблонами, которые используют те же имена переменных среды.
Разделы справки вручную задать новую azd
переменную среды?
Задайте дополнительные azd
переменные среды с помощью azd env set
команды, указав ключ и значение для переменной.
Ниже приведены распространенные причины установки azd
переменных среды:
- Доступ к сведениям о ресурсах Azure, созданным во время подготовки, необходимой во время развертывания.
- Переопределите или измените значения переменных среды по умолчанию
azd
. - Укажите дополнительные пользовательские значения конфигурации для использования в подготовке, развертывании или пользовательских скриптах.
azd env set MY_KEY MyValue
Разделы справки копировать или записывать azd
переменные среды в виде системных переменных среды?
В некоторых сценариях может потребоваться скопировать azd
переменные среды в другой файл среды или в системную среду для использования языковыми платформами. Например, можно использовать URL-адреса конечных точек из подготовленных служб Azure для подключения к этим службам в коде приложения. Используйте пользовательские скрипты для получения azd
переменных среды, а затем задайте их в качестве системных переменных среды. Обычно эти скрипты выполняются как перехватчики во время жизненного azd
цикла, как показано в следующем примере:
Примечание.
Используйте осторожность при копировании azd
переменных среды в локальную систему или другие операционные среды. Системные переменные среды с соответствующими именами могут быть выбраны и вызваны конфликтами azd
между различными шаблонами или разными azd
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
Приведенный в ссылке скрипт оболочки для Linux извлекает azd
переменные среды и экспортирует их в виде системных переменных среды:
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
Указанный сценарий PowerShell для Windows извлекает azd
переменные среды и экспортирует их в виде системных переменных среды:
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)
}
}