我正在尝试通过AWS lambda中的节点js执行HTTP PUT,但我一直在超时。根据{{3}},“具有VPC访问权限的Lambda函数将无法访问Internet,除非您添加NAT”,但就我而言,我没有使用VPC。
exports.handler = (event, context) => {
const options = {
host: 'xxx',
path: 'xxx',
port: 443,
method: 'PUT'
};
req = http.request(options, (res) => {
console.log(res);
});
};
答案 0 :(得分:0)
问题出在Lambdanode.js。
如果您想使用node.js版本8,则应编写类似example
exports.handler = async (event, context) => {
const options = {
host: 'xxx',
path: 'xxx',
port: 443,
method: 'PUT'
};
const response = await http.request(options);
console.log(response);
};
如果您不想使用node.js版本8,则应添加第三个参数callback
并在函数执行后调用它。
exports.handler = (event, context, callback) => {
const options = {
host: 'xxx',
path: 'xxx',
port: 443,
method: 'PUT'
};
req = http.request(options, (res) => {
console.log(res);
callback();
});
};
答案 1 :(得分:0)
编写代码的方式,它不会返回任何响应。
您可以通过这种方式(在callback
4、6或8中使用node
)...
exports.handler = (event, context, callback) => {
const options = {
host: 'xxx',
path: 'xxx',
port: 443,
method: 'PUT'
};
return http.request(options, (result) => {
console.log(result);
// Calling callback sends "result" to API Gateway.
return callback(null, result);
});
};
或者,如果您想使用node
8对诺言的支持...
// You can use `async` if you use `await` inside the function.
// Otherwise, `async` is not needed. Just return the promise.
exports.handler = (event, context) => {
const options = {
host: 'xxx',
path: 'xxx',
port: 443,
method: 'PUT'
};
return new Promise((resolve, reject) => {
return http.request(options, result => {
return resolve(result)
})
})
};