Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure Developer CLI (azd) использует переменные среды для хранения параметров конфигурации и управления ими для сред развертывания. Эти переменные управляют подготовкой, развертыванием и запуском приложения в Azure. В этой статье объясняется, как переменные среды работают в azd средах и предоставляют рекомендации по эффективному управлению ими.
Общие сведения о переменных среды
В контексте интерфейса командной строки разработчика Azure переменные среды — это пары "ключ-значение", привязанные к определенным именованным средам, таким как разработка, тестирование или prod. Каждая azd среда поддерживает собственный набор переменных среды, позволяя настраивать разные параметры для различных целевых объектов развертывания.
Переменные среды хранятся в файлах azd в папках среды в папке.env..azure Они служат входными данными:
- Рабочие процессы развертывания приложений
- Конфигурации для служб и подключений Azure
- Подготовка инфраструктуры через Bicep и Terraform
В отличие от традиционных переменных среды, которые существуют на уровне операционной системы, azd переменные среды относятся к определенным средам в проекте, обеспечивая изоляцию между разными целевыми объектами развертывания.
Переменные среды обеспечивают несколько ключевых преимуществ при работе с azd:
- Изоляция среды: сохраняйте конфигурации для разработки, тестирования и рабочей среды отдельно и отдельно.
- Согласованность конфигурации. Убедитесь, что все члены команды используют одни и те же параметры для определенной среды.
- Инфраструктура как код: определение параметризации инфраструктуры с помощью переменных вместо жестко закодированных значений.
- Автоматизация развертывания. Включение конвейеров CI/CD для развертывания в разных средах с использованием одной базы кода, но различных конфигураций.
- Упрощенное управление: легко обновлять параметры во всех службах в среде из центрального расположения.
Каждая azd среда имеет собственный набор переменных, что позволяет настраивать определенные среды при использовании одного кода приложения и шаблонов инфраструктуры.
Переменные среды и env-файлы
azd Переменные среды хранятся в файлах в .env каталогах конкретной среды проекта. При создании среды с помощью azd env new <name>создается структура каталогов:
.azure/
├── <environment-name>/
│ ├── .env # Environment variables for this environment
В .env файле используется стандартный формат, в котором каждая строка представляет пару "ключ-значение":
KEY1=value1
KEY2=value2
При выполнении таких azd upazd команд автоматически загружает переменные из файла выбранной среды.env.
Эти переменные влияют:
-
Подготовка инфраструктуры: такие переменные, как
AZURE_LOCATIONи определение того, где иAZURE_SUBSCRIPTION_IDкак создаются ресурсы. - Развертывание. Переменные, такие как конечные точки службы, управляют подключением приложения к службам Azure.
- Конфигурация приложения: переменные можно передать в конфигурацию приложения для управления его поведением.
-
Именование ресурсов: такие переменные, как
AZURE_RESOURCE_GROUPвлияние шаблонов именования ресурсов.
Файл .env также обновляется автоматически azd во время таких операций, как azd init, azd provisionи azd deploy, записывая выходные данные из шаблонов инфраструктуры и сохраняя их для дальнейшего использования.
Настройка переменных среды
Для задания azd переменных среды можно использовать различные методы в зависимости от сценария.
Использование команд CLI
Рекомендуемый способ задать переменную среды использует azd env set команду, которая включает проверки, чтобы убедиться, что допустимые значения:
azd env set <key> <value>
Например, чтобы задать значение конфигурации для приложения:
azd env set API_TIMEOUT 5000
Команда добавляет или обновляет переменную в .env файле выбранной среды. Вы также можете настроить конкретную среду с помощью флага --environment :
azd env set API_TIMEOUT 5000 --environment prod
Чтобы убедиться, что переменная среды была задана правильно:
azd env get-value API_TIMEOUT
Выходные данные из Bicep
Мощная функция azd — это возможность автоматического отслеживания выходных параметров из шаблонов инфраструктуры Bicep в качестве переменных среды. Например, при определении выходного параметра в main.bicep файле:
output API_ENDPOINT string = apiService.outputs.SERVICE_ENDPOINT_URL
После выполнения azd provisionвыходные данные автоматически сохраняются в файле среды .env :
API_ENDPOINT=https://api-dev-123456.azurewebsites.net
Такой подход гарантирует, что приложение всегда имеет доступ к наиболее актуальным сведениям о ресурсах, например:
- Конечные точки службы и URL-адреса
- Имена и идентификаторы ресурсов
Получение и использование переменных среды
После установки можно получить доступ к переменным среды в нескольких контекстах.
Команды CLI
Чтобы просмотреть все переменные среды для текущей среды:
azd env get-values
Чтобы просмотреть значение определенной переменной, выполните следующие действия.
azd env get-value API_ENDPOINT
Для выходных данных, доступных для машинного чтения (полезно в сценариях):
azd env get-values --output json
Использование переменных среды в файлах инфраструктуры
Переменные среды можно использовать для настройки шаблонов инфраструктуры. Это полезно для именования, тегов или настройки ресурсов на основе текущей среды.
azd также использует теги для поиска ресурсов в Azure для развертывания и других задач.
Рассмотрим следующий распространенный поток:
azd initВо времяazdзадает эти переменные среды на основе ответа пользователя на запросы:AZURE_ENV_NAME=myapp-dev AZURE_LOCATION=eastus2Ссылка на эти переменные в
main.parameters.jsonпапкеinfra.azdзаменяет значения во время подготовки и передает разрешенные параметры в 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}" } } }Определите соответствующие параметры в шаблоне 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 stringazdпредоставляет эти параметры Bicep с замененными значениями вmain.parameters.json.Используйте параметры для именования ресурсов и тегов, чтобы позже определить, к какой среде принадлежит ресурс:
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' } }
Этот шаблон обеспечивает гибкость шаблонов, позволяет настраивать среду без изменений кода и улучшает управление ресурсами (именование, добавление тегов и обнаружение).
Замечание
azd Также используется тег для поиска ресурсов Azure на этапе развертывания.
Обработчики
azd Переменные среды автоматически загружаются и доступны в перехватчиках и пользовательских скриптах, определенных в azure.yaml файле, можно получить доступ к переменным среды с помощью следующего синтаксиса:
# Use the variables in your script
echo "API endpoint: $API_ENDPOINT"
echo "Deploying to: $AZURE_LOCATION"
Вы можете определить перехватчики в azure.yaml файле для выполнения этих скриптов в определенных точках жизненного azd цикла:
hooks:
postprovision:
windows:
shell: pwsh
run: ./scripts/load-env-vars.ps1
interactive: false
posix:
shell: sh
run: ./scripts/load-env-vars.sh
interactive: false
Подсказка
Дополнительные сведения об использовании перехватчиков см. в статье " Настройка рабочих процессов с помощью перехватчиков ".
Удаление или обновление переменных
Чтобы удалить переменную из среды, выполните приведенные действия.
azd env unset VARIABLE_NAME
Чтобы обновить существующую переменную, выполните приведенные действия.
azd env set VARIABLE_NAME "new-value"
Чтобы обновить переменные локальной среды из текущего состояния ресурсов Azure:
azd env refresh
Обновление среды полезно при следующих случаях:
- Вы хотите убедиться, что локальный
.envфайл отражает последние выходные данные инфраструктуры (например, строки подключения, конечные точки и т. д.). - Необходимо синхронизировать переменные среды после обновления среды товарища по команде.
AZD и переменные среды ОС
azd переменные среды и переменные среды операционной системы служат различным целям и работают разными способами:
| Понятие | Azure Developer CLI (Интерфейс командной строки для разработчиков Azure) | Операционная система |
|---|---|---|
| Местоположение | Хранящиеся в файлах .azure/<env-name>/.env |
Настройка в среде операционной системы |
| Scope | Область действия для конкретной именованной среды в проекте | Глобальный сеанс пользователя или система |
| Управление | Управление с помощью azd env команд |
Управление с помощью команд, относящихся к ОС (export, setи т. д.) |
| Доступ | Автоматически загружается командами azd |
Обычно загружается явно в скрипты или приложения |
| Target | Привязка к ресурсам и развертываниям Azure | Конфигурация системы общего назначения |
| Жизненный цикл | Сохранение между сеансами терминала | Может быть временным или постоянным в зависимости от того, как они настроены |
azd не выполняет автоматическое чтение или запись переменных среды ОС. Однако можно взаимодействовать с обоими типами переменных с помощью пользовательских скриптов.
Чтение azd переменных среды и переменных среды ОС:
# Access OS environment variable
echo "OS variable: $PATH"
# Access azd environment variable
echo "AZD variable: $(azd env get-value MY_VARIABLE)"
Запись azd переменных среды в переменные ос или платформы:
# 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
Стандартные переменные среды
azd задает и использует несколько распространенных переменных среды во всех средах:
| Variable | Описание | Example | Если задано |
|---|---|---|---|
AZURE_ENV_NAME |
Имя текущей среды | dev |
При создании среды |
AZURE_LOCATION |
Регион Azure, в котором развертываются ресурсы | eastus |
Во время первой подготовки |
AZURE_SUBSCRIPTION_ID |
Идентификатор используемой подписки Azure | 00000000-0000-0000-0000-000000000000 |
Во время первой подготовки |
AZURE_RESOURCE_GROUP |
Имя группы ресурсов | rg-myapp-dev |
Во время подготовки |
AZURE_PRINCIPAL_ID |
Идентификатор запускаемого пользователя или субъекта-службы | 00000000-0000-0000-0000-000000000000 |
Во время подготовки |
AZURE_PRINCIPAL_TYPE |
Тип субъекта в среде. | 1a2b3c |
Во время подготовки |
AZURE_TENANT_ID |
Идентификатор используемого клиента Azure. | 00000000-0000-0000-0000-000000000000 |
Во время подготовки |
Рекомендации по секретам и конфиденциальным данным
Хотя переменные среды удобны для конфигурации, им требуется специальная обработка конфиденциальных данных:
Избегайте хранения секретов в ENV-файлах
.env Файлы обычно хранятся в виде обычного текста и могут быть легко:
- Случайно зафиксировано в системе управления версиями
- Общий или скопированный без надлежащей защиты
- Просмотр всех пользователей с доступом к файлам проекта
- Включенные в журналы или отчеты об ошибках
Предупреждение
Никогда не храните секреты в файле КОМАНДНОй строки .env разработчика Azure. Эти файлы можно легко делиться или копировать в неавторизованные расположения или проверять их в системе управления версиями. Используйте такие службы, как Azure Key Vault или управление доступом на основе ролей Azure (RBAC) для защищенных или секретных решений.
Альтернативные варианты обработки секретов
Для конфиденциальных данных рассмотрим следующие более безопасные подходы:
Ссылки на Azure Key Vault: храните секреты в Azure Key Vault и ссылайтесь на них в файле
.env:azd env set-secret <secret-value>Эта команда создает секрет Key Vault и сохраняет ссылку на него в
.envфайле, а не фактическое значение.Управляемые удостоверения: настройте службы Azure для использования управляемых удостоверений вместо строк подключения или ключей доступа.
Безопасность для конкретной среды: применение более строгих элементов управления безопасностью к рабочим средам, чем к средам разработки.
JIT-секреты: создание коротких учетных данных во время развертывания, а не хранение постоянных секретов.