#azure #automation #azure-pipelines #azure-cosmosdb #arm-template
Вопрос:
Я создал шаблон ARM, который проходит через конвейер azure devops, чтобы создать новый экземпляр cosmos и поместить в него две коллекции. Я хотел бы поместить некоторые данные в коллекции (фиксированные значения, одинаковые каждый раз). Все создается стандартным способом, например, коллекции используются
"type": "Microsoft.DocumentDb/databaseAccounts/apis/databases/containers"
Я думаю, что это соответствующие документы.
Я не нашел упоминаний об автоматическом добавлении данных, но это такая явно полезная вещь, я уверен, что она будет добавлена. Если мне нужно добавить еще один шаг в свой конвейер для добавления данных, это тоже вариант.
Комментарии:
1. Насколько мне известно, добавление данных при развертывании невозможно. И я думаю, что лучше позволить приложению/службе решать, какие данные должны быть записаны. IMO развертывание инфраструктуры никогда не должно быть владельцем или создателем данных. Так что, может быть, в вашем случае подумайте о проверке и создании ваших данных во время запуска?
2. Спасибо, Мартин. В этом случае в одной из коллекций хранятся данные, которые будут меняться примерно каждые шесть-девять месяцев, поэтому мы можем безопасно заполнять их одновременно с ресурсом. Возможно, мы могли бы хранить данные по-другому, но на данный момент это уже не вариант.
3. Развертывание ARM должно быть идемпотентным. Если бы данные Cosmos были изменены при развертывании, это было бы очень рискованно. Я думаю, вам нужно будет создать отдельный процесс для заполнения этих данных, например, в сценарии PowerShell или другом коде.
Ответ №1:
Шаблоны ARM не могут вставлять данные в Cosmos DB или любую службу с плоскостью данных по многим причинам, перечисленным в комментариях, и многим другим.
Если вам необходимо как предоставить ресурс Cosmos, так и затем вставить в него данные, вы можете рассмотреть возможность создания другого шаблона ARM для развертывания ресурса фабрики данных Azure, а затем вызвать конвейер с помощью PowerShell для копирования данных из хранилища больших двоичных объектов в коллекцию Cosmos DB. Основываясь на документе ARM, на который вы ссылались выше, это звучит так, как будто вы создаете ресурс коллекции MongoDB. ADF поддерживает MongoDB, так что это должно работать очень хорошо.
Вы можете найти документы шаблона ADF ARM здесь, а документы ADF PowerShell можно найти здесь. Если вы новичок в использовании ARM для создания ресурсов ADF, я рекомендую сначала создать его с помощью портала Azure, затем экспортировать и изучить свойства, которые вам понадобятся для управления с параметрами или переменными во время развертывания.
PS: Я не уверен, почему, но этот путь к контейнерным ресурсам (ниже), на который вы указали в своем вопросе, не следует использовать, поскольку он нарушает несколько вещей в ARM, а именно, вы не можете заблокировать его или использовать политику Azure. Пожалуйста, используйте последнюю версию api, которая на момент написания этой статьи составляет 2021-04-15.
"type": "Microsoft.DocumentDb/databaseAccounts/apis/databases/containers"