首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调用AWS lambda中的嵌套函数

调用AWS lambda中的嵌套函数
EN

Stack Overflow用户
提问于 2020-08-22 19:48:12
回答 1查看 448关注 0票数 2

我有一个AWS Lambda函数,可以检查站点是否在线

代码语言:javascript
运行
复制
var http = require('https');
var url = 'https://www.google.com';

exports.handler = function(event, context) {
  http.get(url, function(res) {
    console.log("Got response: " + res.statusCode);
    context.succeed();
  }).on('error', function(e) {
   console.log("Got error: " + e.message);
   context.done(null, 'FAILURE');
  });
}

如果网站离线,我想重启EC2实例。这是用于重新启动EC2的Lambda函数:

代码语言:javascript
运行
复制
var AWS = require('aws-sdk');
exports.handler = function(event, context) {
 var ec2 = new AWS.EC2({region: 'us-east-1'});
 ec2.rebootInstances({InstanceIds : ['i-xxxxxxxxxxxxxxx'] },function (err, data) {
 if (err) console.log(err, err.stack);
 else console.log(data);
 context.done(err,data);
 });
};

这两个函数都有效。现在,我尝试在https请求失败时调用ec2重启函数。

我使用node.js和亚马逊网络服务的经验非常有限,所以我尝试了许多不同的方法,但都没有效果。

谁能给我指个方向?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-22 19:51:57

您可以使用invoke函数调用lambda。

代码语言:javascript
运行
复制
function checkWebsite(url, callback) {
  https
    .get(url, function(res) {
      console.log(url, res.statusCode);
      return callback(res.statusCode === 200);
    })
    .on("error", function(e) {
      return callback(false);
    });
}


var http = require('https');


exports.handler = function(event, context, callback) {
  var url = 'https://www.google.com';
  
  checkWebsite(url, (check) => {

    if (!check) {
      const lambda = new AWS.Lambda();

      const params = {
       FunctionName: "my-function", 
       Payload: '{"instanceId":"instance-1233x5"}'
      };
 
      lambda.invoke(params, function(err, data) {
        if (err) console.log(err, err.stack); // an error occurred
        else console.log(data);           // successful response

        // handle error/ success

        // if you return the error, the lambda will be retried, hence returning a successful response
        callback(null, 'successfully rebooted the instance')

      });

      
    } else {

      
      callback(null, 'successfully completed')
    }
  })
}

参考:Nodejs function to check if a website working

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63535834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档