Как использовать CloudFormation для обновления заданий AWS Glue

У нас есть много заданий AWS Glue, и мы обновляем только код задания, который представляет собой сценарии, хранящиеся в S3. Проблема в том, что CloudFormation не может сказать, когда и когда не обновлять наши задания Glue, потому что все параметры шаблона CloudFormation остаются прежними после изменения скрипта, даже расположение скрипта указывает на один и тот же объект S3.

Как это связано с терраформированием?

Marko E 19.11.2022 22:03

Что вы имеете в виду под обновлением работы? Это исходный код?

Marcin 19.11.2022 23:21

Как вы храните рабочие сценарии? Являются ли они файлами py, хранящимися в каком-то каталоге?

Rishabh Sahrawat 20.11.2022 12:29

Скрипты работы есть на GitHub, в разных каталогах.

wz366 20.11.2022 17:56

Привет @Marcin, да, обновляя, я имею в виду исходный код / ​​сценарий задания Glue.

wz366 20.11.2022 17:56
Шаблоны Angular PrimeNg
Шаблоны Angular PrimeNg
Как привнести проверку типов в наши шаблоны Angular, использующие компоненты библиотеки PrimeNg, и настроить их отображение с помощью встроенной...
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Если вы веб-разработчик (или хотите им стать), то вы наверняка гик и вам нравятся "Звездные войны". А как бы вы хотели, чтобы фоном для вашего...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Начала с розового дизайна
Начала с розового дизайна
Pink Design - это система дизайна Appwrite с открытым исходным кодом для создания последовательных и многократно используемых пользовательских...
Шлюз в PHP
Шлюз в PHP
API-шлюз (AG) - это сервер, который действует как единая точка входа для набора микросервисов.
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
0
5
95
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Поскольку это похоже на пакет кода Lambda, вы можете использовать параметр пути сценария Glue, а затем иметь разные версии файла сценария Glue.

Glue CFT имеет параметр «Команда», принимающий значение типа «JobCommand», которое включает атрибут «ScriptLocation», сделайте его параметром CFT и динамическим сценарием.

{
  "Name" : String,
  "PythonVersion" : String,
  "ScriptLocation" : String
}

Вероятно, вы можете настроить конвейер CI/CD с помощью AWS CodePipeline или стороннего инструмента CI/CD, выполнив следующие действия.

  • Извлеките новый код из SCM, например Github, чтобы развернуть S3.
  • Обновите стек CloudFormation, указав новый путь к скрипту S3 (с такими версиями, как v1, v2 и т. д.).

Спасибо, значит ли это, что этот параметр ScriptLocation меняется каждый раз при слиянии нового кода в репозитории скриптов? Что, если в репозитории много скриптов, а одно слияние кода обновляет только одно задание Glue? Может быть, нам нужно вычислить хэш файла, чтобы определить, какие задания требуют обновления ScriptLocation?

wz366 20.11.2022 17:55

Ну, это один из способов, однако в SCM и CI/CD есть опции (CodePipeline или Jenkins или аналогичные инструменты) для прослушивания конкретных изменений файлов в репо.

omuthu 22.11.2022 01:46
Ответ принят как подходящий

Вы можете использовать команду CloudFormation package . Это позволяет вам ссылаться на локальные файлы в вашем репозитории git как на скрипты для Glue Jobs. Каждый раз перед развертыванием в CloudFormation вы просто запускаете команду package.

Другие вопросы по теме

Как установить вызов API «EC2 StopInstances» в качестве цели EventBridge с помощью Cloudformation
Политика S3 для предоставления доступа дочерним учетным записям организации AWS из сервисов AWS (cloudFormation)
Не удалось создать набор изменений: Transform AWS::Serverless-2016-10-31 завершился с ошибкой: недопустимый документ спецификации бессерверного приложения.
Cloudformation «обновите код функции Lambda, чтобы CloudFormation мог прикрепить обновленную версию»
Как получить DNS-имя конечной точки VPC для Route53 в CloudFormation?
Cloudformation жалуется, что «элементы массива не уникальны»
Как сослаться на существующее ведро s3 в моем шаблоне CFN, чтобы моя лямбда могла использовать это ведро?
Событие/правило AWS Cloudwatch запускает шаблон Lambda Cloudformation
Можно ли использовать переменные среды с внутренней функцией?
Развертывание Lambda SAM с ошибкой «EC2DescribePolicy» в «policyArn» не соответствует ограничению: член должен иметь длину больше или равную 20