У нас есть много заданий AWS Glue, и мы обновляем только код задания, который представляет собой сценарии, хранящиеся в S3. Проблема в том, что CloudFormation не может сказать, когда и когда не обновлять наши задания Glue, потому что все параметры шаблона CloudFormation остаются прежними после изменения скрипта, даже расположение скрипта указывает на один и тот же объект S3.
Что вы имеете в виду под обновлением работы? Это исходный код?
Как вы храните рабочие сценарии? Являются ли они файлами py, хранящимися в каком-то каталоге?
Скрипты работы есть на GitHub, в разных каталогах.
Привет @Marcin, да, обновляя, я имею в виду исходный код / сценарий задания Glue.
Поскольку это похоже на пакет кода Lambda, вы можете использовать параметр пути сценария Glue, а затем иметь разные версии файла сценария Glue.
Glue CFT имеет параметр «Команда», принимающий значение типа «JobCommand», которое включает атрибут «ScriptLocation», сделайте его параметром CFT и динамическим сценарием.
{
"Name" : String,
"PythonVersion" : String,
"ScriptLocation" : String
}
Вероятно, вы можете настроить конвейер CI/CD с помощью AWS CodePipeline или стороннего инструмента CI/CD, выполнив следующие действия.
Спасибо, значит ли это, что этот параметр ScriptLocation меняется каждый раз при слиянии нового кода в репозитории скриптов? Что, если в репозитории много скриптов, а одно слияние кода обновляет только одно задание Glue? Может быть, нам нужно вычислить хэш файла, чтобы определить, какие задания требуют обновления ScriptLocation?
Ну, это один из способов, однако в SCM и CI/CD есть опции (CodePipeline или Jenkins или аналогичные инструменты) для прослушивания конкретных изменений файлов в репо.
Вы можете использовать команду CloudFormation package
. Это позволяет вам ссылаться на локальные файлы в вашем репозитории git как на скрипты для Glue Jobs. Каждый раз перед развертыванием в CloudFormation вы просто запускаете команду package.
Как это связано с терраформированием?