首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Alexa技能触发器将Lambda函数部署到AWS

使用Alexa技能触发器将Lambda函数部署到AWS
EN

Stack Overflow用户
提问于 2017-06-13 19:43:23
回答 2查看 306关注 0票数 0

我使用node-aws-lambda直接使用gulp和node.js部署lambda函数。该功能本身正在正确部署。然而,我试图配置的触发器是使用Amazon智能家居技术ARN。验证抱怨这个ARN是不允许的。

这是我的配置(访问和策略都很好):

代码语言:javascript
复制
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无效,而在控制台中手动放置触发器运行良好):

代码语言:javascript
复制
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中的错误,还是必须手动配置触发器,还是有其他方式以编程方式创建触发器?

如有任何建议,敬请见谅。谢谢!

约格

EN

回答 2

Stack Overflow用户

发布于 2017-08-02 21:57:24

我以前没有做过您的尝试,但是快速查看一下您的错误消息,就会发现您提供了错误的ARN。

代码语言:javascript
复制
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提供的一样。

例如,上面的ARN

代码语言:javascript
复制
arn:aws:iam::1234567890:role/SmartHomeSkillRole

看来您已经提供了Alexa开发人员服务提供的Alexa技能标识符。

代码语言:javascript
复制
amzn1.ask.skill.d9d9f7b1-f7d6-4050-a3d1-753e47e7038a

我会尝试将EventSourceArn:与Roll:交换,或者将两者作为arn值来尝试。-希望这会有所帮助,但就像我说的,这是从提供的信息中推测出来的。

票数 0
EN

Stack Overflow用户

发布于 2017-08-11 09:09:22

当我试图导出带有触发器(作为包)的函数时,它会抱怨当前不支持触发器。由此,我推断上传失败是因为缺乏这种特别的支持。

我非常希望看到AWS在这里取得一些进展,因为将技能开发提升到某种程度的自动化是至关重要的。如果有人在附近修修补补可能会很好,但对职业发展来说这是一团糟.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44530216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档