我试图从Lambda向另一个API发出请求。我发现使用NodeJS http和https模块允许GET请求,但任何其他(例如POST)都不起作用;POST碰巧是我需要为我试图调用的服务工作的唯一方法。
下面是Lambda执行GET并接收200响应的工作示例:
const https = require('https')
function handler(event, context, callback) {
const options = {
hostname: 'encrypted.google.com'
}
https
.get(options, (res) => {
console.log('statusCode:', res.statusCode);
res.on('end', callback.bind(null, null))
})
.on('error', callback);
}
exports.handler = handler
这就证明了这个请求是被允许的。但是,如果脚本试图使用https(或https)lib/模块的.request()
方法发出相同的请求,那么请求永远不会完成,并且Lambda超时。
const https = require('https')
function handler(event, context, callback) {
const options = {
hostname: 'encrypted.google.com',
method: 'GET'
}
https
.request(options, (res) => {
console.log('statusCode:', res.statusCode);
res.on('end', callback.bind(null, null))
})
.on('error', callback);
}
exports.handler = handler
我不知道我做错了什么。调用https.request()
默默地失败了-没有抛出错误-日志中没有任何报告。
3条答案
按热度按时间bvuwiixz1#
问题是我从来没有用
req.end()
完成请求。lqfhib0f2#
如果您的API是HTTPS,请尝试此选项。
如果是HTTP,
请不要忘记添加包require('https')/ require('http')
ahy6op9u3#
POST方法由request方法完成。
下面是Lambda代码: