Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从Alexa Lambda函数调用web服务_Javascript_Amazon Web Services_Aws Lambda_Alexa - Fatal编程技术网

Javascript 如何从Alexa Lambda函数调用web服务

Javascript 如何从Alexa Lambda函数调用web服务,javascript,amazon-web-services,aws-lambda,alexa,Javascript,Amazon Web Services,Aws Lambda,Alexa,我想使用Amazon Profile API向网站发出GET请求。我正在尝试做本文最后一段代码中描述的事情:(文章的最后一段)但这并没有发生。我的回调函数似乎从未被调用过 我已经添加了所需的context.success(),实际上是它的最新版本,但仍然没有得到结果。我知道url很好,因为我可以将它复制/粘贴到浏览器中,它会返回预期结果 下面是关于在回调中使用适当的上下文函数调用的答案,我已经尝试过了 我没有使用专有网络 我做错了什么?我觉得自己像个白痴,因为我已经研究这个问题并尝试解决方案两天

我想使用Amazon Profile API向网站发出GET请求。我正在尝试做本文最后一段代码中描述的事情:(文章的最后一段)但这并没有发生。我的回调函数似乎从未被调用过

我已经添加了所需的context.success(),实际上是它的最新版本,但仍然没有得到结果。我知道url很好,因为我可以将它复制/粘贴到浏览器中,它会返回预期结果

下面是关于在回调中使用适当的上下文函数调用的答案,我已经尝试过了

我没有使用专有网络

我做错了什么?我觉得自己像个白痴,因为我已经研究这个问题并尝试解决方案两天了。我记录完整的URL,当我从日志文件中复制/粘贴该URL并将其放入浏览器窗口时,我确实得到了一个有效的结果。谢谢你的帮助

代码如下:

function getUserProfileInfo(token, context) {

console.log("IN getUserProfileInfo");

var request = require('request');

var amznProfileURL = 'https://api.amazon.com/user/profile?access_token=';

amznProfileURL += token;

console.log("calling it");

console.log(amznProfileURL);

console.log("called it");


request(amznProfileURL, function(error, response, body) {

if (!error && response.statusCode == 200) {

var profile = JSON.parse(body);

console.log("IN getUserProfileInfo success");

console.log(profile);

context.callbackWaitsForEmptyEventLoop = false; 
callback(null, 'Success message');

} else {

console.log("in getUserProfileInfo fail");

console.log(error);

context.callbackWaitsForEmptyEventLoop = false; 
callback('Fail object', 'Failed result'); 
}
});

console.log("OUT getUserProfileInfo");

}
这是我在CloudWatch中获得的日志输出:

2017-03-08T22:20:53.671Z 7e393297-044d-11e7-9422-39f5f7f812f6在getUserProfileInfo中
2017-03-08T22:20:53.728Z 7e393297-044d-11e7-9422-39f5f7f812f6 OUT getUserProfileInfo问题可能是您使用的是
var request=require('request')这是一个外部依赖项,需要您进行打包的lambda部署才能正常工作。有关信息,请参见此答案

另一种方法是,您可以使用NodeJS模块,例如
varhttp=require('http')这是发出请求的内置模块。这样,您就可以进行简单的lambda脚本部署

参考文献


也许你应该发布日志输出,忽略任何秘密。我已经添加了相关的日志输出。