【问题标题】:AWS Lambda (Node.js) Monitor if website is onlineAWS Lambda (Node.js) 监控网站是否在线
【发布时间】:2020-08-22 23:07:45
【问题描述】:

我有一个 lambda 函数来检查网站是否响应。

如果它离线/无响应,我将重新启动服务器。

问题是我正在使用的这个函数返回一个错误,因为我没有安装 SSL 证书(它是一个没有域名的 vpn 服务器,只是 IP)

得到错误:证书链中的自签名证书

我想要实现的目标:如果服务器响应,则忽略 SSL 错误并声明它成功。

但是我刚刚开始使用 node.js,所以我会很感激任何能指出我正确方向的人。

没有可用的 http:80 端口。唯一的选择是 https。

function checkWebsite(url, callback) {
  http.get(url, function(res) {
      console.log(url, res.statusCode);
      return callback(res.statusCode === 200);
    })
    .on("error", function(e) {
      return callback(false);
    });
}

exports.handler = function(event, context, callback) {
  checkWebsite(url, (check) => {

    if (!check) {...

【问题讨论】:

    标签: node.js amazon-web-services aws-lambda


    【解决方案1】:

    您似乎可以通过添加以下参数来明确阻止 SSL 验证检查:

    • rejectUnauthorized: false。如果不是 false,则根据提供的 CA 列表验证服务器证书。如果验证失败,则发出“错误”事件; err.code 包含 OpenSSL 错误代码。默认值:真

    在您的代码中,这将变为:

    function checkWebsite(url, callback) {
      options = {
          rejectUnauthorized: false
      };
    
      http.get(url, options, function(res) {
          console.log(url, res.statusCode);
          return callback(res.statusCode === 200);
        })
        .on("error", function(e) {
          return callback(false);
        });
    }
    

    确保将其限制为仅需要此功能的域。或者,您可以尝试执行 TCP 连接验证(您可以通过 TCP 连接到端口 443)。

    【讨论】:

    • 非常感谢您的回答。如果我将此代码粘贴到 lambda 中,它会在第 2 行引发错误:未定义选项。我应该写“var options”吗?对node.js不是很熟悉
    • 啊,是的,抱歉:)
    • 我现在就试一试:)
    • 它似乎正在执行 302(这是一个重定向)。它是否可能会转到您指定的路径之外的另一条路径?
    猜你喜欢
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    • 2019-08-09
    相关资源
    最近更新 更多