В этой статье приведены ответы на часто задаваемые вопросы о интерфейсе командной строки разработчика Azure.
Общее
Как удалить Интерфейс командной строки разработчика Azure?
Существуют различные варианты удаления azd
в зависимости от того, как вы изначально установили его. Дополнительные сведения см. на странице установки
Какова разница между интерфейсом командной строки разработчика Azure и Azure CLI?
cli разработчика Azure (azd
) и Azure CLI (az
) являются средствами командной строки, но они помогают выполнять различные задачи.
azd
фокусируется на рабочем процессе разработчика высокого уровня. Помимо подготовки и управления ресурсами Azure, azd
помогает создавать облачные компоненты, конфигурацию локальной разработки и автоматизацию конвейеров вместе в полное решение.
Azure CLI — это средство уровня управления для создания и администрирования инфраструктуры Azure, таких как виртуальные машины, виртуальные сети и хранилище. Azure CLI предназначен для детализированных команд для конкретных административных задач.
Что такое имя среды?
Azure Developer CLI использует имя среды для задания переменной среды AZURE_ENV_NAME
, используемой шаблонами CLI разработчика Azure. AZURE_ENV_NAME также используется для префикса имени группы ресурсов Azure. Так как каждая среда имеет собственный набор конфигураций, интерфейс командной строки разработчика Azure хранит все файлы конфигурации в каталогах среды.
├── .Azure [This directory displays after you run add init or azd up]
│ ├── <your environment1> [A directory to store all environment-related configurations]
│ │ ├── .env [Contains environment variables]
│ │ └── main.parameters.json [A parameter file]
│ └── <your environment2> [A directory to store all environment-related configurations]
│ │ ├── .env [Contains environment variables]
│ │ └── main.parameters.json [A parameter file]
│ └──config.json
Можно ли настроить несколько сред?
Да. Можно настроить различные среды (например, разработку, тестирование, рабочую среду). Вы можете использовать azd env
для управления этими средами.
Где хранится файл конфигурации среды (ENV)?
Путь к файлу .env — <your-project-directory-name>\.azure\<your-environment-name>\.env
.
Как используется env-файл?
В Интерфейсе командной строки разработчика Azure azd
команды ссылаются на env-файл для настройки среды. Такие команды, как azd deploy
также обновляют env-файл, например строку подключения базы данных и конечную точку Azure Key Vault.
Я запускаю "azd up" в Codespaces. Можно ли продолжить работу в локальной среде разработки?
Да. Вы можете продолжить разработку локально.
- Запустите
azd init -t <template repo>
, чтобы клонировать проект шаблона на локальный компьютер. - Чтобы извлечь существующий env, созданный с помощью codespaces, выполните
azd env refresh
. Убедитесь, что вы указали то же имя среды, подписку и расположение, что и раньше.
Как используется файл azure.yaml?
Файл azure.yaml описывает приложения и типы ресурсов Azure, включенных в шаблон.
Что такое поведение функции secretOrRandomPassword?
Функция secretOrRandomPassword
извлекает секрет из Azure Key Vault, если указаны параметры имени и секрета хранилища ключей. Если эти параметры не указаны или не удается извлечь секрет, функция возвращает вместо этого созданный случайным образом пароль.
В следующем примере показан распространенный вариант использования secretOrRandomPassword
в файле main.parameters.json
. Переменные ${AZURE_KEY_VAULT_NAME}
и sqlAdminPassword
передаются в качестве параметров для имен Key Vault и секрета. Если значение не удается извлечь, создается случайный пароль.
"sqlAdminPassword": {
"value": "$(secretOrRandomPassword ${AZURE_KEY_VAULT_NAME} sqlAdminPassword)"
}
Выходные данные secretOrRandomPassword
также должны быть сохранены в Key Vault с помощью Bicep для будущих запусков. Получение и повторное использованием одинаковых секретов во время развертывания может предотвратить ошибки или непреднамеренное поведение, которое может возникать при повторном создании новых значений. Чтобы создать Key Vault и сохранить в нем созданный секрет, используйте приведенный ниже код Bicep. Полный пример кода для этих модулей можно просмотреть в репозитории GitHub для разработчиков Azure
module keyVault './core/security/keyvault.bicep' = {
name: 'keyvault'
scope: resourceGroup
params: {
name: '${take(prefix, 17)}-vault'
location: location
tags: tags
principalId: principalId
}
}
module keyVaultSecrets './core/security/keyvault-secret.bicep' = {
name: 'keyvault-secret-sqlAdminPassword'
scope: resourceGroup
params: {
keyVaultName: keyVault.outputs.name
name: 'sqlAdminPassword'
secretValue: sqlAdminPassword
}
}]
Эта настройка Bicep включает следующий рабочий процесс для управления секретами:
- Если указанный секрет существует, он извлекается из Key Vault с помощью функции
secretOrRandomPassword
. - Если секрет не существует, создается Key Vault, а случайным образом созданный секрет хранится внутри него.
- В будущих развертываниях метод
secretOrRandomPassword
извлекает сохраненный секрет теперь, когда он существует в Key Vault. Хранилище ключей не будет повторно создано, если оно уже существует, но то же значение секрета будет сохранено еще раз для следующего запуска.
Можно ли использовать бесплатную подписку Azure?
Да, но каждое расположение Azure может иметь только одно развертывание. Если вы уже использовали выбранное расположение Azure, вы увидите ошибку развертывания:
InvalidTemplateDeployment: The template deployment '<env_name>' isn't valid according to the validation procedure. The tracking ID is '<tracking_id>'. See inner errors for details.
Чтобы устранить проблему, можно выбрать другое расположение Azure.
Мое приложение, размещенное в Службе приложений Azure, активирует предупреждение "Обманчивый сайт вперед". Как исправить его?
Это может произойти из-за нашего метода именования ресурсов.
Шаблоны, созданные в Azure Dev, позволяют настраивать имя ресурса. Для этого можно добавить запись в main.parameters.json
в папку infra
. Например:
"webServiceName": {
"value": "my-unique-name"
}
Эта запись создает новый ресурс с именем my-unique-name вместо случайного значения, например app-web-aj84u2adj при следующей подготовке приложения. Можно вручную удалить старую группу ресурсов с помощью портала Azure или запустить azd down
, чтобы удалить все предыдущие развертывания. После удаления ресурсов запустите azd provision
, чтобы создать их снова с новым именем.
Это имя должно быть глобально уникальным, в противном случае вы получите ошибку ARM во время azd provision
при попытке создать ресурс.
Команда: azd provision
Как команда знает, какие ресурсы необходимо подготовить?
Команда использует шаблоны Bicep, которые находятся в разделе <your-project-directory-name>/infra
для подготовки ресурсов Azure.
Где можно найти ресурсы, подготовленные в Azure?
Перейдите к https://portal.azure.com, а затем найдите группу ресурсов, которая rg-<your-environment-name>
.
Как найти дополнительные сведения об ошибках Azure?
Для подготовки ресурсов Azure используются шаблоны Bicep, которые находятся в <your-project-directory-name>/infra
. Если возникли проблемы, мы добавим сообщение об ошибке в выходные данные ИНТЕРФЕЙСА командной строки.
Вы также можете перейти к https://portal.azure.com, а затем найти группу ресурсов, которая rg-<your-environment-name>
. Если одно из развертываний завершается сбоем, выберите ссылку об ошибке, чтобы получить дополнительные сведения.
Сведения о других ресурсах см. в статье Устранение распространенных ошибок развертывания Azure —Azure Resource Manager.
Существует ли файл журнала для azd provision?
Скоро. Эта функция планируется в будущем выпуске.
Команда: azd deploy
Можно ли повторно выполнить эту команду?
Да.
Как azd находит ресурс Azure для развертывания кода в?
Во время развертывания azd
сначала обнаруживает все группы ресурсов, составляющие приложение, путем поиска групп, помеченных azd-env-name
и значением, соответствующим имени среды. Затем он перечисляет все ресурсы в каждой из этих групп ресурсов, ищете ресурс, помеченный azd-service-name
со значением, соответствующим имени службы из azure.yaml
.
Хотя мы рекомендуем использовать теги для ресурсов, можно также использовать свойство resourceName
в azure.yaml
для предоставления явного имени ресурса. В этом случае приведенная выше логика не выполняется.
Как развернуть определенные службы в проекте при пропуске других?
При развертывании проекта можно выбрать развертывание определенных служб, указав имя службы в команде (т. е. azd deploy api
) или перейдя к вложенной папке, содержащей только службы, которые нужно развернуть. При этом все остальные службы будут перечислены как - Skipped
.
Если вы не хотите пропускать службы, обязательно запустите команду из корневой папки или добавьте флаг --all
в команду.
Команда: azd up
Можно ли повторно запустить "azd up"?
Да. Мы используемрежима добавочного развертывания
Как найти файл журнала для azd up?
Скоро. Эта функция планируется в будущем выпуске.
Команда: azd pipeline
Что такое субъект-служба Azure?
Субъект-служба Azure — это удостоверение, созданное для использования с приложениями, размещенными службами и автоматизированными средствами для доступа к ресурсам Azure. Этот доступ ограничен ролями, назначенными субъекту-службе, что позволяет контролировать доступ к ресурсам и на каком уровне. Дополнительные сведения о проверке подлинности из Azure в GitHub см. в статье Connect GitHub и Azure | Документация Майкрософт.
Нужно ли создать субъект-службу Azure перед запуском azd pipeline config?
Нет. Команда azd pipeline config
заботится о создании субъекта-службы Azure и выполнении необходимых действий для хранения секретов в репозитории GitHub.
Каковы все секреты, хранящиеся в GitHub?
Команда хранит четыре секрета в GitHub: AZURE_CREDENTIALS, AZURE_ENV_NAME, AZURE_LOCATION и AZURE_SUBSCRIPTION_ID. Вы можете переопределить значение каждого секрета, перейдя к https://github.com/<your-GH-account>/<your-repo>/secrets/actions
.
Что такое OpenID Connect (OIDC) и поддерживается ли он?
С помощью OpenID Connectрабочие процессы могут обмениваться короткими маркерами непосредственно из Azure.
Хотя OIDC поддерживается в качестве значения по умолчанию для GitHub Actions и Azure Pipeline (задано как федеративных), он не поддерживается для Azure DevOps или Terraform.
- Для Azure DevOps явным образом вызывает
--auth-type
, так какfederated
приведет к ошибке. - Для Terraform:
- Если
--auth-type
не определен, он вернется кclientcredentials
и приведет к предупреждению. - Если
--auth-type
явно заданоfederated
, это приведет к ошибке.
- Если
Как сбросить субъект-службу Azure, хранящийся в GitHub Actions?
Перейдите к https://github.com/<your-GH-account>/<your-repo>settings/secrets/actions
, а затем обновите AZURE_CREDENTIALS
путем копирования и вставки всего объекта JSON для нового субъекта-службы. Например:
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}
Где хранится файл GitHub Actions?
Путь к файлу GitHub Actions — <your-project-directory-name>\.github\workflows\azure-dev.yml
.
В файле azure-dev.yml можно развернуть только код на шаге сборки?
Да. Замените run: azd up --no-prompt
run: azd deploy --no-prompt
.
Где можно найти журнал для задания GitHub Actions, которое я активировал при запуске azd pipeline config?
Перейдите к https://github.com/<your-GH-account>/<your-repo>/actions
, а затем перейдите к файлу журнала в выполнении рабочего процесса.
Локальное создание приложения-контейнера
Почему я не могу локально запустить приложение контейнера, которое я создаю?
При локальном создании приложений контейнеров необходимо запустить azd auth login
в контейнере, чтобы приложение работало с AzureDeveloperCliCredential
. Кроме того, вы можете настроить приложение для использования субъекта-службы вместо AzureDeveloperCliCredential
.