【问题标题】:Printf Statement not working on lambdaPrintf 语句不适用于 lambda
【发布时间】:2017-07-03 21:46:53
【问题描述】:

我尝试使用 node.js 创建一个 lambda 函数。 w 用 C 代码编写代码并使用 node-gyp 将其转换为节点库。 lambda 函数完美运行。但它只打印 node.js console.log 语句。

这是我的 node.js 代码

'use strict';
console.log('Loading function');

exports.handler = (event, context, callback) => {

var addon = require('./build/Release/testLibraryfromCcode');

addon.sayHello();
console.log("Completed");
}

这是我的 C 代码

int sayHello()
{
    printf("Haaaaaaaaaaaaai\n");
    fflush(stdout);
    return 0;   
}

我从 lambda 测试控制台得到这样的输出

   TART RequestId: 3e8cd5ff-2d41-11e6-af8f-ada8f1249113 Version: $LATEST
    2016-06-08T06:21:32.779Z    3e8cd5ff-2d41-11e6-af8f-ada8f1249113    Loading function
   2016-06-08T06:21:32.779Z 3e8cd5ff-2d41-11e6-af8f-ada8f1249113 Completed

Haaaaai 打印丢失。 我需要在我的 C 代码中打印 printf 语句。如果有任何想法?

【问题讨论】:

  • 您在 printf 之后尝试过fflush(stdout) 吗?
  • 试过了。但仍然无法正常工作。问题已更新
  • 你能发布你的导出sayHello函数的C代码吗?

标签: c node.js amazon-web-services lambda node-gyp


【解决方案1】:

此代码正在运行。 fflush(stdout) 足够打印了。

int sayHello()
{
    printf("Haaaaaaaaaaaaai\n");
    fflush(stdout);
    return 0;   
}

但是,aws lamda 无法直接在 Web 控制台上打印库打印。我们需要安装 awslogs 来查看完整的日志。

  1. 安装awslogs

    sudo pip install awslogs

  2. 用于观察日志。

    awslogs 获取 /aws/lambda/lambdaFunctionName --start="3h"

【讨论】:

    猜你喜欢
    • 2011-07-20
    • 2018-07-22
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多