簡體   English   中英

使用Alexa技能觸發器將Lambda函數部署到AWS

[英]Deploy Lambda Function to AWS with Alexa Skill Trigger

我正在使用node-aws-lambda直接使用gulp和node.js部署lambda函數。 該功能本身已正確部署。 但是,我嘗試配置的觸發器使用的是Amazon Alexa智能家居技能ARN。 驗證抱怨不允許使用此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中的錯誤,還是我必須手動配置觸發器,還是有另一種方法以編程方式創建觸發器?

任何建議表示贊賞。 謝謝!

約爾格

我沒有做過您嘗試過的事情,但是快速查看您的錯誤消息表明您提供了錯誤的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

我會嘗試用Roll:交換EventSourceArn:或將兩者都作為arn值。 -希望這會有所幫助,但是就像我說的那樣,這是根據所提供的信息推測的。

當我嘗試使用觸發器(作為包)導出函數時,它抱怨當前不支持觸發器。 從中我推斷出由於缺少這種特殊支持,上傳失敗。

不支持觸發器

我真的很想在AWS上看到一些進展,因為將技能開發帶到某種自動化水平是必不可少的。 如果有人四處亂竄可能會很好,但是對於專業開發人員來說,這是一團糟...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM