Разверните лямбда-функцию в AWS с помощью Alexa Skill Trigger

Я использую node-aws-lambda для развертывания лямбда-функции напрямую с помощью gulp и node.js. Сама функция развертывается правильно. Однако триггер, который я пытаюсь настроить, - это использование ARN Amazon Alexa Smart Home Skill. Проверка жалуется, что этот ARN не разрешен.

Это моя конфигурация (доступ и политики в порядке):

module.exports = {
  accessKeyId: 'AAAAAAAAAAAAAAAAAAA',  // User: 
  secretAccessKey: 'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB',  // optional
  region: 'eu-west-1',
  handler: 'index.handler',
  role: 'arn:aws:iam::1234567890:role/SmartHomeSkillRole', // KNXSmartHomeSkillRole
  functionName: 'SmartHomeSkill_Remote',
  timeout: 10,
  memorySize: 128,
  publish: true,
  runtime: 'nodejs4.3',
  description: 'A remotely build skill for alexa',
  eventSource: {
    EventSourceArn: 'amzn1.ask.skill.d9d9f7b1-f7d6-4050-a3d1-753e47e7038a', 
    BatchSize: 200,
    StartingPosition: "TRIM_HORIZON"
  }
}

Значение в EventSourceArn является источником сбоя (amzn1.ask.skill недействителен, в то время как установка триггера вручную в консоли работает хорошо):

ValidationException: 1 validation error detected: Value 'amzn1.ask.skill.d9d9f7b1-f7d6-4050-a3d1-753e47e7038a' at 'eventSourceArn' failed to satisfy constraint: Member must satisfy regular  expression pattern: arn:(aws|aws-us-gov):([a-zA-Z0-9\-])+:([a-z]{2}(-gov)?-[a-z]+-\d{1})?:(\d{12})?:(.*)
    at Object.extractError (E:\DropBox\p\jisageek\IoT\AlexaKNX\node_modules\aws-sdk\lib\protocol\json.js:48:27)
    at Request.extractError (E:\DropBox\p\jisageek\IoT\AlexaKNX\node_modules\aws-sdk\lib\protocol\rest_json.js:37:8)
    at Request.callListeners (E:\DropBox\p\jisageek\IoT\AlexaKNX\node_modules\aws-sdk\lib\sequential_executor.js:105:20)
    at Request.emit (E:\DropBox\p\jisageek\IoT\AlexaKNX\node_modules\aws-sdk\lib\sequential_executor.js:77:10)
    at Request.emit (E:\DropBox\p\jisageek\IoT\AlexaKNX\node_modules\aws-sdk\lib\request.js:682:14)
    at Request.transition (E:\DropBox\p\jisageek\IoT\AlexaKNX\node_modules\aws-sdk\lib\request.js:22:10)
    at AcceptorStateMachine.runTo (E:\DropBox\p\jisageek\IoT\AlexaKNX\node_modules\aws-sdk\lib\state_machine.js:14:12)
    at E:\DropBox\p\jisageek\IoT\AlexaKNX\node_modules\aws-sdk\lib\state_machine.js:26:10
    at Request.<anonymous> (E:\DropBox\p\jisageek\IoT\AlexaKNX\node_modules\aws-sdk\lib\request.js:38:9)
    at Request.<anonymous> (E:\DropBox\p\jisageek\IoT\AlexaKNX\node_modules\aws-sdk\lib\request.js:684:12)

Это ошибка в SDK, или мне нужно настроить триггер вручную, или есть другой способ создать триггер программно?

Любой совет приветствуется. Спасибо!

Йорг


person Joerg Krause    schedule 13.06.2017    source источник


Ответы (2)


Я не делал того, что вы пытались раньше, но беглый взгляд на ваше сообщение об ошибке показывает, что вы ввели неправильный ARN.

Value 'amzn1.ask.skill.d9d9f7b1-f7d6-4050-a3d1-753e47e7038a' at 'eventSourceArn' 
failed to satisfy constraint: 
Member must satisfy regular  expression pattern: arn:(aws|aws-us-gov):([a-zA-Z0-9\-])+:([a-z]{2}(-gov)?-[a-z]+-\d{1})?:(\d{12})?:(.*)

В предоставленном регулярном выражении указано, что ваша ссылка должна начинаться с «arn:», как в случае с Amazon Lambda.

Например ваш ARN сверху

arn:aws:iam::1234567890:role/SmartHomeSkillRole

Похоже, вы предоставили свой идентификатор навыков Alexa, предоставленный службой разработчиков Alexa.

amzn1.ask.skill.d9d9f7b1-f7d6-4050-a3d1-753e47e7038a

Я бы попробовал заменить EventSourceArn: на Roll: или попробовать оба значения в качестве значения arn. - Надеюсь, это поможет, но, как я уже сказал, это предположение из предоставленной информации.

person Caleb Gates    schedule 02.08.2017
comment
Спасибо за Ваш ответ. Я безуспешно пробовал эту и несколько других комбинаций. См. Предложенный мной ответ выше. Я обновлюсь, когда Amazon сделает здесь свою домашнюю работу. - person Joerg Krause; 11.08.2017

Когда я пытаюсь экспортировать функцию с триггером (как пакет), он жалуется, что триггер в настоящее время не поддерживается. Из этого я делаю вывод, что загрузка не удалась из-за отсутствия этой конкретной поддержки.

Триггер не поддерживается

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

person Joerg Krause    schedule 11.08.2017