#aws-lambda #aws-step-functions
#aws-lambda #aws-step-функции
Вопрос:
Я создал конечный автомат с AWD CDK (typescript), и все это работает нормально. Это просто вывод лямбды 1, который является входом для лямбды 2, имеет какое-то заполнение конечного автомата, которое меня не интересует.
Определение конечного автомата:
{
"StartAt": "",
"States": {
"...applicationPdf": {
"Next": "...setApplicationProcessed",
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName": "...applicationPdf",
"Payload.$": "$"
}
},
"...setApplicationProcessed": {
"Next": "Done",
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"...applicationPdf",
"Payload.$": "$"
}
},
"Done": {
"Type": "Succeed"
}
}
}
Вывод Lambda1 (applicationPdf):
{
"ExecutedVersion": "$LATEST",
"Payload": {
...
},
"SdkHttpMetadata": {
"AllHttpHeaders": {
...
},
"HttpHeaders": {
....
},
"HttpStatusCode": 200
},
"SdkResponseMetadata": {
....
},
"StatusCode": 200
}
Поэтому меня интересуют только Payload
, а не все остальное.
Причина, по которой я хочу это сделать, заключается в том, что я хочу запустить 2-ю лямбду отдельно, я просто хочу, чтобы событие, входящее в лямбду, было объектом полезной нагрузки, а не объектом с. ExecutedVersion etc
Кто-нибудь знает, как это сделать? Я посмотрю на Parameters
вариант определения, возможно, ответ лежит там.
Ответ №1:
Спасибо за ваш вопрос и за ваш интерес к шаговым функциям.
Поля resultSelector и OutputPath можно использовать для управления выводом состояния, что может быть особенно полезно, когда состояние выводит значения, к которым вам не нужен доступ в последующих состояниях. Разница между ними заключается в том, что resultSelector применяется до применения ResultPath состояния, а OutputPath применяется после него.
Как вы заметили, вы можете использовать OutputPath для фильтрации любых нежелательных метаданных перед передачей в следующее состояние.
Комментарии:
1. Спасибо за ваш отзыв!
Ответ №2:
Я нашел одно решение, добавьте outputPath
:
return new LambdaInvoke(this, 'lamba', {
lambdaFunction: Function.fromFunctionArn(this, name, this.createLabmdaArn('applicationPdf')),
outputPath: '$.Payload',
});
Похоже, это работает и может быть решением.