【问题标题】:Alexa SDK - Alexa Invoke a AWS lambda function which invokes another lambda functionAlexa SDK - Alexa 调用一个 AWS lambda 函数,该函数调用另一个 lambda 函数
【发布时间】:2016-09-29 23:44:20
【问题描述】:
我是 Alexa 和 Nodejs 的新手。
我正在编写一个基于示例 nodejs 颜色 alexa 技能集的新 AWS lambda 函数,假设 MySchedule 将由 Alexa 调用。
我正在尝试从 MySchedule lambda 函数调用另一个 AWS lambda 函数 MyTravelPlans。
谁能告诉我这怎么可能 -
1. 我需要多个处理程序吗?如果是,我该如何拨打电话。
2. 我可以在不编写处理程序的情况下调用 MyTravelPlans lambda 函数吗?如果是,任何示例来确保调用方法不会异步完成
【问题讨论】:
标签:
node.js
alexa
alexa-skills-kit
alexa-skill
【解决方案1】:
假设两个 lambda 具有相同的角色,您可以使用 aws-sdk 从另一个 lambda 调用。
var aws = require('aws-sdk');
aws.config.region = 'us-east-1'; //or whatever your region
var lambda = new aws.Lambda();
var params = {
FunctionName: 'MyTravelPlans' //name of lambda
InvocationType: 'RequestResponse', //Event | RequestResponse | DryRun
Payload: '{ "data" : "hello" }'
};
lambda.invoke(params, function(err, data) {
if (err) {
context.fail(err);
} else {
context.succeed('response from My Travel Plans '+ data.Payload);
}
})
您需要确保您的角色(在 IAM 管理控制台中)附加了所有适当的策略。
最后,作为旁注,我知道您专门要求同步操作,但 lambda 到 lambda 通信的一种流行替代方法是使用 sns