Бессерверный локальный вызов с фиктивным событием SNS

У меня проблемы с локальным вызовом с помощью _1 _.

Использование среды выполнения Python3.6

Функция в serverless.yml:

functions:
  myFunction:
  events:
    - sns: arn:aws:sns:us-east-1:123456789:myTopic

Моя команда

sls invoke local -f myFunction -s dev -r us-east-1 -p events/myMockedSnsMessage.json

Бессерверному не нравится синтаксис myMockedSnsMessage.json

Когда я регистрирую событие в своей лямбда-функции, я получаю что-то вроде:

{
  'Records': [
    {
      'Sns': {
        'Message': '{"version":"0","id":"a965ce94-fcb2-ad15-319d-04adab1072d0","detail-type":"AWS API Call via CloudTrail",...}'
      }
    }
  ]
}

То есть сообщение SNS представляет собой строку с допустимым JSON внутри

Как мне сохранить фиктивное событие для сообщения SNS и по-прежнему иметь действующий JSON, чтобы бессерверный не кричал на меня из-за неправильного синтаксиса JSON?


person maafk    schedule 25.10.2017    source источник
comment
Какой код в myMockedSnsMessage.json? Бьюсь об заклад, что это недействительно. Пожалуйста, укажите это в своем вопросе.   -  person Noel Llevares    schedule 09.11.2017
comment
JSON поступает непосредственно из источника событий sns Получено Лямбдой. Атрибут Message - это строка JSON.   -  person maafk    schedule 09.11.2017
comment
Включите это в свой вопрос, пожалуйста. Похож ли это на JSON в ответе Трента ниже?   -  person Noel Llevares    schedule 09.11.2017


Ответы (1)


Возможно, используйте двойные кавычки и сделайте json. например

{
  "Records": [
    {
      "Sns": {
        "Message": "{\"version\":\"0\",\"id\":\"a965ce94-fcb2-ad15-319d-04adab1072d0\",\"detail-type\":\"AWS API Call via CloudTrail\",...}"
      }
    }
  ]
}

Если вам нужно больше примеров, в документации AWS есть примеры событий., которые вы можете изменить, и когда вы используете консоль AWS для тестирования лямбда-выражения, вы можете выбрать множество различных шаблонов событий из раскрывающегося списка.

person Trent Bartlem    schedule 25.10.2017