Мы выполняем пакетные задания зажигания с использованием AWS EMR кластеров. Эти задания выполняются периодически, и мы хотели бы организовать их с помощью AWS Step Functions.
По состоянию на ноябрь 2019 г. Step Functions изначально поддерживает EMR. При добавлении шага в кластер мы можем использовать следующую конфигурацию:
"Some Step": {
"Type": "Task",
"Resource": "arn:aws:states:::elasticmapreduce:addStep.sync",
"Parameters": {
"ClusterId.$": "$.cluster.ClusterId",
"Step": {
"Name": "FirstStep",
"ActionOnFailure": "CONTINUE",
"HadoopJarStep": {
"Jar": "command-runner.jar",
"Args": [
"spark-submit",
"--class",
"com.some.package.Class",
"JarUri",
"--startDate",
"$.time",
"--daysToLookBack",
"$.daysToLookBack"
]
}
}
},
"Retry" : [
{
"ErrorEquals": [ "States.ALL" ],
"IntervalSeconds": 1,
"MaxAttempts": 1,
"BackoffRate": 2.0
}
],
"ResultPath": "$.firstStep",
"End": true
}
В списке аргументов HadoopJarStep мы хотели бы установить аргументы динамически. например, если вход выполнения конечного автомата:
{
"time": "2020-01-08",
"daysToLookBack": 2
}
Строки в конфигурации, начинающиеся с "$." должны быть соответственно заменены при выполнении конечного автомата, и шаг в кластере EMR должен запускаться command-runner.jar spark-submit --class com.some.package.Class JarUri --startDate 2020-01-08 --daysToLookBack 2
Но вместо этого он запускает command-runner.jar spark-submit --class com.some.package.Class JarUri --startDate $.time --daysToLookBack $.daysToLookBack
.
Кто-нибудь знает, есть ли способ сделать это?