Aws lambda 如何使用请求ID调用lambda函数并更新运行状态?

Aws lambda 如何使用请求ID调用lambda函数并更新运行状态?,aws-lambda,Aws Lambda,我有一个lambda函数,它返回lambda执行的请求ID。在lambda函数中,我还使用setTimeout函数添加了一个倒计时。如果倒计时结束,它将启动一个新功能。我需要在这里实现两件事: 在倒计时开始之前(无任何延迟)获取请求ID响应。目前,它仅在lambda函数执行完成后(倒计时完成后)才返回请求ID 我需要使用请求ID调用相同的lambda函数(如果倒计时未结束),并为倒计时添加时间,或者终止整个lambda函数并停止启动新函数 上述要求是否适用于lambda功能? 下面添加了我当前的

我有一个lambda函数,它返回lambda执行的
请求ID
。在lambda函数中,我还使用
setTimeout
函数添加了一个倒计时。如果倒计时结束,它将启动一个新功能。我需要在这里实现两件事:

  • 在倒计时开始之前(无任何延迟)获取请求ID响应。目前,它仅在lambda函数执行完成后(倒计时完成后)才返回
    请求ID
  • 我需要使用
    请求ID
    调用相同的lambda函数(如果倒计时未结束),并为倒计时添加时间,或者终止整个lambda函数并停止启动新函数
  • 上述要求是否适用于lambda功能?

    下面添加了我当前的lambda功能代码:

    exports.handler = async (event, context, callback) => {
        var duration = event.time;
        var emergencyType = event.type;
        var emergencyStatus = event.status;
        var requestId = event.requestid;
        if (requestId != 0) 
        {
          //how to get access to the running lambda function
        }
        else
        {
          var apiRequestId = context.awsRequestId;
          var output = "Request ID: " + apiRequestId;
          callback(null, output);
        }
        //how to return the Request ID before starting countdown
        setTimeout(TriggerAlert, duration, emergencyType);
    };
    
    function TriggerAlert(arg) {
      console.log(`arg was => ${arg}`);
      //doing some importent actions here
    }
    
    {
        "requestid": "0",   //0 means new execution, otherwise a running execution
        "time": "3000",
        "type": "watchme",
        "status": "add"    //add or kill will be the possible statuses
    }
    
    "Request ID: 087b1124-ea8e-4d3c-8f50-9ccc44e9aea2"
    
    样本输入:

    exports.handler = async (event, context, callback) => {
        var duration = event.time;
        var emergencyType = event.type;
        var emergencyStatus = event.status;
        var requestId = event.requestid;
        if (requestId != 0) 
        {
          //how to get access to the running lambda function
        }
        else
        {
          var apiRequestId = context.awsRequestId;
          var output = "Request ID: " + apiRequestId;
          callback(null, output);
        }
        //how to return the Request ID before starting countdown
        setTimeout(TriggerAlert, duration, emergencyType);
    };
    
    function TriggerAlert(arg) {
      console.log(`arg was => ${arg}`);
      //doing some importent actions here
    }
    
    {
        "requestid": "0",   //0 means new execution, otherwise a running execution
        "time": "3000",
        "type": "watchme",
        "status": "add"    //add or kill will be the possible statuses
    }
    
    "Request ID: 087b1124-ea8e-4d3c-8f50-9ccc44e9aea2"
    
    电流输出:

    exports.handler = async (event, context, callback) => {
        var duration = event.time;
        var emergencyType = event.type;
        var emergencyStatus = event.status;
        var requestId = event.requestid;
        if (requestId != 0) 
        {
          //how to get access to the running lambda function
        }
        else
        {
          var apiRequestId = context.awsRequestId;
          var output = "Request ID: " + apiRequestId;
          callback(null, output);
        }
        //how to return the Request ID before starting countdown
        setTimeout(TriggerAlert, duration, emergencyType);
    };
    
    function TriggerAlert(arg) {
      console.log(`arg was => ${arg}`);
      //doing some importent actions here
    }
    
    {
        "requestid": "0",   //0 means new execution, otherwise a running execution
        "time": "3000",
        "type": "watchme",
        "status": "add"    //add or kill will be the possible statuses
    }
    
    "Request ID: 087b1124-ea8e-4d3c-8f50-9ccc44e9aea2"
    

    我很想知道你为什么这么做。我无法想象任何需要这样一个机制的事情。如果您需要“编排”多个lambda,您可能需要看一看。@Jens我正在尝试实现监视我的功能(安全功能)。假设一个用户用5分钟启动一个watch me;然后,我将调用lambda函数并在那里开始倒计时并返回request-id。如果倒计时结束,lambda函数将触发发送紧急警报的函数。如果用户安全,他们将取消“监视我”;在这种情况下,我将取消当前正在运行的lambda函数,并停止紧急函数的执行。这是否可以使用lambda函数?我对这个很陌生,光是一个Lambda是不行的。即使如此,它更像是一个黑客。还要记住:一辆Lambda不能跑超过15分钟。所以你的“监视我”功能支持的时间不会比这长。正如我之前所说的,使用阶跃函数可能会更幸运。它们就像工作流一样,有一个完整的流程。您的工作流程可能需要更改。第一个将回调给您的用户(WebSocket?),然后为第二个Lambda设置“wait”。@Jens所以我需要创建一个包含2个Lambda函数的step函数。在第一个lambda上,我需要读取用户的输入并设置等待第二个lambda的时间。在第二个lambda中,我需要添加紧急函数执行。那么,是否可以在等待执行之前返回step函数的实例id,是否可以使用该请求id调用同一step函数并更新或终止当前执行?