kev*_*628 23 amazon-web-services node.js aws-lambda
我是Lambdas的新手所以也许还有一些我还没有抓到的东西,但是我已经编写了一个简单的Lambda函数来向外部网站发出HTTP请求.出于某种原因,无论我使用Node http还是https模块,我都会得到一个ECONNREFUSED.
这是我的Lambda:
var http = require('http');
exports.handler = function (event, context) {
http.get('www.google.com', function (result) {
console.log('Success, with: ' + result.statusCode);
context.done(null);
}).on('error', function (err) {
console.log('Error, with: ' + err.message);
context.done("Failed");
});
};
Run Code Online (Sandbox Code Playgroud)
这是日志输出:
START RequestId: request hash
2015-08-04T14:57:56.744Z request hash Error, with: connect ECONNREFUSED
2015-08-04T14:57:56.744Z request hash {"errorMessage":"Failed"}
END RequestId: request hash
Run Code Online (Sandbox Code Playgroud)
是否需要执行HTTP请求的角色权限?Lambda甚至允许普通的旧HTTP请求吗?我需要设置特殊标头吗?
任何指导表示赞赏.
kev*_*628 19
我解决了自己的问题.
显然,如果您决定将URL作为第一个参数提供.get(),则必须包含http://URL的前端,例如http://www.google.com.
var http = require('http');
exports.handler = function (event, context) {
http.get('http://www.google.com', function (result) {
console.log('Success, with: ' + result.statusCode);
context.done(null);
}).on('error', function (err) {
console.log('Error, with: ' + err.message);
context.done("Failed");
});
};
Run Code Online (Sandbox Code Playgroud)
或者,您可以将第一个参数指定为选项的哈希值,其中hostname可以是URL的简单形式.例:
var http = require('http');
exports.handler = function (event, context) {
var getConfig = {
hostname: 'www.google.com'
};
http.get(getConfig, function (result) {
console.log('Success, with: ' + result.statusCode);
context.done(null);
}).on('error', function (err) {
console.log('Error, with: ' + err.message);
context.done("Failed");
});
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22610 次 |
| 最近记录: |