AWS CDK - StepFunction - измените ввод перед переходом к следующему шагу

У меня есть трехступенчатый конечный автомат для пошаговой функции.

InputStep -> ExecuteSparkJob -> OutputLambda

ExecuteSparkJob - это связующая задача. Поскольку он не может передать свой вывод в пошаговую функцию, он записывает его в корзину S3. OutputLambda считывает его оттуда и передает в пошаговую функцию.

Идея InputStep состоит в том, чтобы просто определить общий URI S3, который можно использовать в следующих шагах.

Ниже приведен код, который у меня есть для шага ввода.


        const op1 = Data.stringAt("$.op1");
        const op2 = Data.stringAt("$.op2");

        const inputTask = new Pass(this, "Input Step", {
            result: Result.fromString(this.getURI(op1, op2)),
            resultPath: "$.s3path"
        });

    getURI(op1: string, op2: string): string {
        return op1.concat("/").concat(op2).concat("/").concat("response");
    }


Однако манипуляции со строками, которые я выполняю в getURI, не работают. Значения в inputTask.result не заменяются значением в Path.

Это вход и выход для Input Step

{
  "op1": "test1",
  "op2": "test2"
}

Output
{
  "op1": "test1",
  "op2": "test2"
  "responsePath": "$.op1/$.op2/response"
}

Можно ли выполнить некоторые манипуляции со строками, используя параметры в определении Path в функции Step? Если да, то что мне не хватает?

Спасибо за вашу помощь.


person maddie    schedule 19.05.2020    source источник


Ответы (2)


Вы можете использовать одну или несколько EvaluateExpression Задач - это все равно немного неудобно.

Вы можете найти примеры здесь.

Документ API здесь .

person Jon Blauvelt    schedule 28.05.2020

Используйте лямбда-функцию вместо состояния Pass для построения строки.

Step Functions в настоящее время не поддерживает конкатенацию строк с ссылочными путями. Поле Result состояния Pass также не разрешает ссылочные пути. Это должно быть статическое значение.

person adamwong    schedule 22.05.2020
comment
Кажется немного чрезмерным, чтобы построить лямбду только для конкатенации строки. - person Dennis; 22.05.2020
comment
Другого пути найти не мог. Я забыл обновить вопрос, но в конечном итоге для этого я реализовал лямбду. Я скоро обновлю свою точную реализацию. - person maddie; 23.05.2020