我正在尝试学习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的技能调用?这可以不被滥用来浪费计算资源等吗?
答案 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。