Как вставить пустую строку в DynamoDB, используя вывод лямбда-выражения в пошаговых функциях? - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь сохранить вывод 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"
    }
  }
}

1 Ответ

0 голосов
/ 07 мая 2020

Проблема не в значении null , проблема в том, что в DynamoDB с PutItem Api вы не можете вставлять пустые строки.

Я знаю, что это расстраивает но самое быстрое решение - заменить "" на NULL .

Я предпочитаю установить для convertEmptyValue значение true в настройках клиента DynamoDb.

const dynamodb = new AWS.DynamoDB.DocumentClient({ convertEmptyValues: true })

UPDATE

Со вчерашнего дня DynamoDB поддерживает пустые значения для строки! Посмотрите здесь .

...