Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье приведены ответы на часто задаваемые вопросы о работе с переменными среды и интерфейсом командной строки разработчика Azure (azd).
Подсказка
Полное руководство по созданию сред и управлению ими в Azure Developer CLI см. в статье " Работа с средами в Azure Developer CLI".
Каковы различия между 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 выполнения или azdazd 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 между различными шаблонами или разными azdazd средами.
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)
}
}