我需要构建一个aws lambda,检查主机上的端口是否打开,然后推送“0”或“1”作为云指标。我是一个完全的node js新手,经过几个小时的谷歌搜索,我能够拼凑出一个js文件,当我在桌面上本地运行它时,它可以工作。当我从本地桌面运行js文件时,它工作了.它检查主机并正确推送度量.当我将我的项目的zip作为lamba上传时它失败了.我确实验证了如果a删除“putmetricdata”部分及其相关的var语句它会成功地检查端口。我真的觉得我不知道我在做什么,任何帮助都很感激!
响应{“errorMessage”:“2021-04- 01 T19:00:39.949Z d2 c3 a983 - 94 e4 -4179-b326- 5 b 921 f8413 e6任务在3.00秒后超时”}
'use strict';
var lambdaHandler = function(event, context, callback) {
const connData = {
port: 5555,
host: '10.10.10.10',
timeout: 75
};
const timeout = typeof connData.timeout !== 'undefined' ?
parseInt(connData.timeout) :
50; // Fallback to 50ms
const net = require('net');
var available = 0;
var message = 'Whoops port ' + connData.port + ' on host ' +
connData.host + ' seems closed! ' + available;
const client = net.connect(connData, function() {
available = 1;
message = 'Port ' + connData.port + ' on ' + connData.host + ' is open!' + available;
callback(null, message);
client.destroy();
});
client.setTimeout(timeout, function() {
client.destroy(new Error(message), null);
});
client.on('error', function(err) {
callback(new Error(message), null);
});
var AWS = require('aws-sdk');
AWS.config.update({region: 'us-gov-west-1'});
var cw = new AWS.CloudWatch({apiVersion: '2010-08-01'});
var params = {
MetricData: [
{
MetricName: 'TCPHealthCheck',
Dimensions: [
{
Name: 'HOST',
Value: '10.141.8.15'
},
{
Name: 'PORT',
Value: '5444'
},
],
Unit: 'None',
Value: available
},
],
Namespace: 'Route53PrivateHealthCheck'
};
cw.putMetricData(params, function(err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Success", JSON.stringify(data));
}
});
};
exports.checkPortOpen = lambdaHandler;
if (require.main === module) {
var lambdaContext = {
context: {
'my-host': process.env.MY_HOST,
'my-port': process.env.MY_PORT,
'my-timeout': process.env.MY_TIMEOUT
}
};
lambdaHandler(lambdaContext, null, function(err, data) {
if (err) {
console.log(err.message);
return null;
}
console.log(data);
});
}
1条答案
按热度按时间deyfvvtc1#
给出的错误表示超时
响应{“errorMessage”:“2021-04- 01 T19:00:39.949Z d2 c3 a983 - 94 e4 -4179-b326- 5 b 921 f8413 e6任务在3.00秒后超时”}
Lambda的默认超时时间为3秒,您可以在Lambda的“常规配置”部分将此配置更改为最多15分钟。