Aws lambda 可以使用Alexa托管技能调用http GET吗?

Aws lambda 可以使用Alexa托管技能调用http GET吗?,aws-lambda,alexa,alexa-skills-kit,alexa-skill,alexa-voice-service,Aws Lambda,Alexa,Alexa Skills Kit,Alexa Skill,Alexa Voice Service,我一直在尝试在Node.js端点中使用http模块来执行简单的http get,但没有成功 我已经按照各种教程在我的意图内执行了get,但是在cloudwatch日志中使用getaddrinfo ENOTFOUND时它一直失败 看起来我准备的url是正确的,如果我只是将url输出剪切并通过浏览器,我会得到预期的响应,这只是一个普通的http端口80 我怀疑Alexa托管的lambda可能没有对非amazon web服务进行远程调用所需的权限,但我不确定这一点 有人能解释一下吗?仅供参考这是我的l

我一直在尝试在Node.js端点中使用http模块来执行简单的http get,但没有成功

我已经按照各种教程在我的意图内执行了get,但是在cloudwatch日志中使用getaddrinfo ENOTFOUND时它一直失败

看起来我准备的url是正确的,如果我只是将url输出剪切并通过浏览器,我会得到预期的响应,这只是一个普通的http端口80

我怀疑Alexa托管的lambda可能没有对非amazon web服务进行远程调用所需的权限,但我不确定这一点

有人能解释一下吗?仅供参考这是我的lambda中的代码:

var http = require('http');

function httpGet(address, zip, zillowid) {
const pathval = 'www.zillow.com/webservice/GetSearchResults.htm' + `?zws-id=${zillowid}` + `&address=${encodeURIComponent(address)}&citystatezip=${zip}`;
console.log ("pathval =" + pathval);
return new Promise(((resolve, reject) => {
   var options = {
    host: pathval,
    port: 80,
    method: 'GET',
};

const request = http.request(options, (response) => {
  response.setEncoding('utf8');
  console.log("options are" + options);
  let returnData = '';

  response.on('data', (chunk) => {
    returnData += chunk;
  });

  response.on('end', () => {
    resolve(JSON.parse(returnData));
  });

  response.on('error', (error) => {
      console.log("I see there was an error, which is " + error);
    reject(error);
  });
});
request.end();
}));
}

host:pathval
是Node.js的不正确用法。您需要提供主机名和路径+查询字符串作为两个不同的选项

正确用法的示例:

host: 'example.com',
path: '/webservice/GetSearchResults.htm?zws-id=...',
(当然,这些可以是变量,为了清晰起见,它们不需要是文本。)

发生此错误是因为您将整个URL视为主机名,因此它不存在

我怀疑Alexa托管的lambda可能没有对非amazon web服务进行远程调用所需的权限


在Lambda功能中,您可以从联系的服务没有任何限制(除了防止将垃圾邮件直接发送到随机邮件服务器的过滤器)。主机:pathval是Node.js的不正确用法。您需要提供主机名和路径+查询字符串作为两个不同的选项

正确用法的示例:

host: 'example.com',
path: '/webservice/GetSearchResults.htm?zws-id=...',
(当然,这些可以是变量,为了清晰起见,它们不需要是文本。)

发生此错误是因为您将整个URL视为主机名,因此它不存在

我怀疑Alexa托管的lambda可能没有对非amazon web服务进行远程调用所需的权限

在Lambda功能中,您可以从联系的服务没有任何限制(除了防止将垃圾邮件直接发送到随机邮件服务器的过滤器)