Можно ли обновить только часть задания склеивания с помощью AWS CLI? - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь включить в разработку CI / CD обновление script_location и только этот параметр.AWS просит меня указать обязательные параметры, такие как RoleArn.Как я могу обновить только ту часть конфигурации задания, которую я хочу изменить?

Это то, что я пытаюсь использовать

aws glue update-job --job-name <job_name> --job-update Command="{ScriptLocation=s3://<s3_path_to_script>}

Вот что происходит:

An error occurred (InvalidInputException) when calling the UpdateJob operation: Command name should not be null or empty.

Если добавить имя команды по умолчанию glueetl, это произойдет:

An error occurred (InvalidInputException) when calling the UpdateJob operation: Role should not be null or empty.

1 Ответ

0 голосов
/ 18 апреля 2019

Исходя из того, что я обнаружил, невозможно обновить только часть работы с помощью API-интерфейса update-job.

Я столкнулся с той же проблемой и предоставил роль, чтобы обойти эту ошибку. Команда сработала, но API задания обновления фактически сбрасывает другие параметры к значениям по умолчанию, таким как тип приложения, язык задания, класс, время ожидания, максимальная емкость и т. Д.

Таким образом, если ваше ранее существующее задание было приложением Spark в scala, оно не будет работать, так как AWS по умолчанию использует Python Shell и python в качестве языка задания как часть API-интерфейса задания на обновление. И этот API не дает возможности установить тип языка задания в scala и установить основной класс (требуется в случае scala). Он предоставляет способ установки типа приложения Spark application.

Если вы не хотите указывать Роль в API задания обновления. Один из подходов состоит в том, чтобы скопировать новый сценарий с тем же именем и тем же местоположением, которое используется в вашем ранее существующем задании ETL, а затем запустить ETL, используя API начального задания, как часть процесса CI.

Второй подход состоит в том, чтобы напрямую запустить ETL и заставить его использовать последний скрипт в вызове API start-job:

aws glue start-job-run --job-name <job-name> --arguments=scriptLocation="<path to your latest script>"

Единственное предостережение со вторым подходом - когда вы смотрите в консоли, задание ETL будет по-прежнему ссылаться на старый сценарий Location. Приведенная выше команда просто заставляет этот запуск задания использовать последний скрипт, который вы можете подтвердить, посмотрев на вкладку «Журнал» в консоли Glue ETL.

...