Вы можете отправить некоторый скрипт как step
, а не как загрузчик. Например, я создал скрипт обновления SSL-сертификата, и он шаг за шагом применяется к EMR. Это часть моей лямбда-функции на языке Python. Но вы можете добавить этот шаг вручную на консоли или на других языках.
Steps=[{
'Name': 'PrestoCertificate',
'ActionOnFailure': 'CONTINUE',
'HadoopJarStep': {
'Jar': 's3://ap-northeast-2.elasticmapreduce/libs/script-runner/script-runner.jar',
'Args': ['s3://myS3/PrestoSteps_InstallCertificate.sh']
}
}]
Ключевым моментом является script-runner.jar
, предварительно созданный amazon, и вы можете использовать его для каждого региона, изменивпрефикс региона. Он получает файл .sh и запускает его.
Одна вещь, которую вы должны знать, это то, что скрипт будет запускаться на всех узлах, и если вы хотите сделать это только на главном экземпляре, вам придется использовать if-elseзаявление.
#!/bin/bash
BOOL=`cat /emr/instance-controller/lib/info/instance.json | jq .isMaster`
if [ $BOOL == "true" ]
then
<your code>
fi