Фон
В AWS EC2 имеется множество сложных механизмов для настройки отдельных экземпляров или их кластера как такового.Одной из функций, используемых нами для работы с различными конфигурациями, являются пользовательские данные.Это может быть использовано для передачи команд, установки переменных или запуска сценариев.
Мы ищем аналогичные варианты при создании кластера EMR.
EMR Cluster
У нас уже есть кластер кустов, запущенный в prod.
Нам нужно повторно использовать сценарии для того же самого с минимальными изменениями.Для той же цели хотите настроить эти сценарии.Но мы не нашли правильный подход для параметризации сценариев.
Попытка:
--steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://script-runner.jar,Args=["s3 location / bootstrap.sh"]
Этот сценарий настраивает такие данные, как таблицы кустов, но послехосты подготовлены.
Попытка другого параметра:
--bootstrap-actions Path=s3://setEnvVariables.sh,Name=SettingEnvVaribles,Args=[RUNNING_ENV=qa]
Это используется для установки некоторых переменных среды, которые впоследствии могут использоваться скриптами начальной загрузки для запускасоответствующие сценарии.
Но мы не могли видеть, что переменная окружения устанавливается при запуске хоста.Это также ограничивает сценарии, которые смотрят на эту переменную.
Так какой же должен быть правильный подход?