Как обойти ограничения параметров шаблона ARM Azure Data Factory?
Я создал фабрику данных в Azure с 10-15 конвейерами, и все они работают нормально, и я могу без проблем отлаживать и запускать их на фабрике тестовых данных, которую я настроил. Я также настроил интеграцию Azure DevOps с фабрикой данных с помощью конвейера CI/CD.
Первоначально этот конвейер также работал нормально, и я смог использовать сгенерированный шаблон ARM для воссоздания конвейеров / триггеров / и т. Д. В производственном экземпляре фабрики данных.
Теперь я добавил еще несколько вещей в фабрику данных, и теперь, когда он генерирует шаблон ARM, он создает шаблон с 293 параметрами, который при запуске через конвейер CI/CD дает сбой, поскольку с ARM разрешено только 256 параметров. шаблон.
Многие элементы, которые он помещает в файл параметров, не нуждаются в параметризации, например, имена файлов и пути к файлам. Все, что я действительно хочу параметризовать, это различная информация о соединении.
Я попытался создать второй файл параметров шаблона ARM и удалить параметры, которые мне не нужны, потому что я прочитал некоторую документацию о возможности сделать это, чтобы добавить некоторые дополнительные параметры, но это не работает, потому что он не удаляет параметры из самого шаблона ARM.
Итак, мой вопрос, есть ли способ справиться с этим? Я могу думать о том, чтобы создать несколько фабрик данных и иметь только несколько конвейеров в каждом. Мне не очень нравится эта идея, потому что со временем она станет очень большой и громоздкой. Я мог бы вручную удалить шаблоны из файла параметров, а также из самого шаблона, но мне действительно не нравится это решение, поскольку оно является ручным и действительно подвержено ошибкам.
В идеале я хотел бы иметь возможность определить, какие элементы я хочу параметризовать в конвейере, как я упомянул 90% вещей, которые он параметризовал, мне не нужно параметризовать, но я не могу найти любой способ сделать это (если не делать это вручную).
2 ответа
2 способа:
- очевидно - удалить ненужные параметры
- Менее очевидно - используйте объекты вместо строк.
позвольте мне объяснить, представьте, что у вас есть 5 входных параметров с именем param1,2,3,4,5. Вы можете "сжать" их в один параметр, например так:
"param": {
"type": object,
"defaultValue": {
"param1": "something",
xxx
"param5": "otherthing"
}
}
видя, что у вас есть 290 параметров, я бы, вероятно, пошел по маршруту объекта, потому что таким образом вы можете логически сгруппировать их.
что касается не параметризации - вы можете определить для них переменную значений по умолчанию (но если вы определяете значения по умолчанию, они все равно учитываются для параметров), так что переменные позволяют вам это делать.
Используйте шаблон настраиваемого параметра, как описано в документации MS: использование настраиваемых параметров с шаблоном диспетчера ресурсов.