【问题标题】:AWS Lambda get context messageAWS Lambda 获取上下文消息
【发布时间】:2015-03-09 17:24:04
【问题描述】:

我正在使用 AWS 控制台的测试功能:

console.log('Loading event');

exports.handler = function(event, context) {
    console.log('value1 = ' + event.key1);
    console.log('value2 = ' + event.key2);
    console.log('value3 = ' + event.key3);
    context.done(null, 'Hello World');  // SUCCESS with message
};

并在nodejs中调用如下:

var params = {
  FunctionName: 'MY_FUNCTION_NAME', /* required */
  InvokeArgs: JSON.stringify({
    "key1": "value1",
    "key2": "value2",
    "key3": "value3"
  })
};

lambda.invokeAsync(params, function(err, data) {
  if (err) {
    // an error occurred
    console.log(err, err.stack);
    return cb(err);
  }
  // successful response
  console.log(data);
});

一切正常:

//Console Output
{ Status: 202 }

但我也期待收到来自 context.done(null, 'Message') 的消息...

知道如何获取消息吗?

【问题讨论】:

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


    【解决方案1】:

    正如 Eric 提到的,目前 Lambda 不提供 REST 端点来运行函数并返回其结果,但将来可能会。

    现在,您最好的选择是使用像 lambdaws 这样的库,它为您包装了函数部署和执行,并通过 SQS 队列处理返回结果。如果您想通过推出自己的解决方案来获得更多控制权,那么过程很简单:

    1. 创建 SQS 队列
    2. 让您的 Lambda 函数将其结果写入此队列
    3. 在您的客户端中,轮询队列以获取结果

    【讨论】:

      【解决方案2】:

      您正在调用 invokeAsync,因此您的 Lambda 函数是异步运行的。这意味着您获得了成功意味着回到您的函数成功启动的那一点,而不是在它完成之后。

      在撰写本文时,AWS Lambda 尚未提供同步调用函数的方法,将函数中的信息直接返回给调用者。然而,这似乎是一个常见的要求,亚马逊已公开表示他们正在考虑该功能。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-25
        • 2019-07-02
        • 1970-01-01
        • 1970-01-01
        • 2021-05-05
        • 2018-03-25
        相关资源
        最近更新 更多