使用Alexa Skill触发器将AWS Lambda功能部署到AWS
问题描述:
我正在使用node-aws-lambda直接使用gulp和node.js部署lambda函数。该功能本身正在正确部署。但是,我尝试配置的触发器是使用Amazon Alexa智能家居技能ARN。验证过程中抱怨说这个ARN是不允许的。使用Alexa Skill触发器将AWS Lambda功能部署到AWS
这是我的配置(接入和政策都很好):
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中的错误或做我必须手动配置触发或有另一种方式来编程创建触发器?
任何意见表示赞赏。谢谢!
约尔格
答
我没有做你的努力过,但快速浏览一下你的错误信息会显示你提供了错误的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:与辊:或试图既为阿尔恩值。 - 希望这可以帮助,但就像我说的这是从所提供的信息的猜测。
感谢您的回答。我试过这个和其他几个组合,但没有运气。看到我上面提出的自我回答。一旦亚马逊在这里做作业,我会更新。 –