Я пытаюсь сохранить вывод Lambda, который вызывает Lex в DynamoDB с помощью пошаговых функций.
intentName
в ответе Lex иногда null (неизвестно). Проблема в том, что в состоянии (задаче), которое сохраняет ответ в DynamoDB, из-за этой пустой строки я получаю сообщение об ошибке DynamoDB. Функция Step, чтобы вставить null или, может быть, не вставить, указав свойство c в DynamoDB?
Вот JSON для конечного автомата:
{
"StartAt": "ProcessLex",
"States": {
"ProcessLex": {
"Type": "Task",
"Resource": "arn:aws:lambda:<Region>:<Account Id>:function:getIntent",
"ResultPath": "$.lexResult",
"Next": "ChoiceIfIntent"
},
"SaveToDynamo": {
"Type": "Task",
"Resource": "arn:aws:states:::dynamodb:putItem",
"Parameters": {
"TableName": "MyTable",
"Item": {
"dateTime": {
"S.$": "$.dateTime"
},
"intentName": {
"S.$": "$.lexResult.intentName"
},
"analysis": {
"M.$": "$.lexResult.sentimentResponse"
}
}
},
"End": true
},
"Comprehend": {
"Comment": "To be implemented later",
"Type": "Pass",
"End": true
},
"ChoiceIfIntent": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.lexResult.intentName",
"StringGreaterThanEquals": "",
"Next": "SaveToDynamo"
}
],
"Default": "Comprehend"
}
}
}