将AWS Lambda调用限制为单个Alexa技能

时间:2017-08-21 00:13:23

标签: amazon-web-services aws-lambda alexa alexa-skills-kit

我正在尝试学习Alexa技能编程,我在亚马逊开发人员门户网站和相应的AWS Lambda函数中设置了技能界面。技能运行良好,但我对Lambda函数的安全性方面有疑问。我选择了Alexa Skill Kit作为Lambda函数的触发器,并且还将请求中的应用程序ID与技能的应用程序ID进行比较,以验证请求是否适用于该函数。 (https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/handling-requests-sent-by-alexa)。

但即便如此,我如何限制Lambda函数被另一个了解Lambda arn的技能调用?这可以不被滥用来浪费计算资源等吗?

3 个答案:

答案 0 :(得分:0)

您已经回答了自己的问题。由于您在lambda函数中检查此特定的Alexa技能ID,因此几乎不可能从其他任何地方调用此技能。 exmple:

exports.handler = function(event, context, callback){
  var alexa = Alexa.handler(event, context, callback);
  // security so this set APP_ID from this specific Alexa skill is the onlly one that can execute this code
  alexa.appId = APP_ID;
  alexa.registerHandlers(handlers);
  alexa.execute();
};

如果你具有执行此功能的特定Alexa技能,则APP_ID是id。

希望这可以帮助你前进。

答案 1 :(得分:0)

lambda函数的AWS仪表板中的新功能是为Alexa设备创建角色时的复选框,该角色允许您仅为特定技能应用程序锁定lambda函数,方法是勾选框并输入技能ARN lambda函数只能由该应用程序调用。  前面提到的包括alexa.appId = APP_ID的方法; lambda函数调用中的变量是第二次安全检查,因此建议使用这两种方法。

答案 2 :(得分:-1)

ARN对您来说是完全私密的,您可以决定是否将其转换为其他触发器。如果您仍想要限制,可以在IAM中创建自定义角色并将该角色分配给lambda。然后只有具有该特定角色的那些触发器才能执行lambda。