首页 > 解决方案 > AWS Lambda 链接函数不会打印我的日志记录

问题描述

我正在尝试使用 AWS lambda 进行超级简单的测试,用于链接函数及其任何缺点。

我想更复杂地使用它们(为 S3 上的巨大存储桶尽可能快地优化图像)

所以我对自己说,在我发疯之前,让我们先尝试将第一个函数的参数传递给第二个函数,依此类推。

此外,我还看到人们建议使用 Step Functions,所以除非真的有必要,否则尽量避免这种情况。

所以正如标题所说我无法获得第二个函数,即被调用以打印出东西的函数,我希望它用于调试目的并想知道是否有办法让它工作?

这是我的代码:

    'use strict';
    var aws = require('aws-sdk')

    module.exports.hello = (event, context, callback) => {
      var lambda = new aws.Lambda()
      var testPayload = ['blue', 'green', 'red']
      var opts = {
        FunctionName: 'lambda-chaining-dev-ciao',
        Payload: JSON.stringify(testPayload)
      }

      lambda.invoke(opts, function (err, data) {
        if (err) {
          console.log('Error : ', err)
          callback(err, null)
        } else if (data) {
          console.log('data', data)
          console.log('\n')
          const response = {
            statusCode: 200,
            body: JSON.parse(data.Payload)
          }
          callback(null, response)
        }
      })
    }

    module.exports.ciao = (event, context, callback) => {
      console.log("I will never be logged when invoked")
      callback(null,{ message: 'this is a test'})
    }

无服务器.yml

    service: lambda-chaining
    provider:
      name: aws
      runtime: nodejs6.10
      iamRoleStatements:
        - Effect: Allow
          Action:
            - lambda:InvokeFunction
            - lambda:InvokeAsync
            - logs:CreateLogGroup
            - logs:CreateLogStream
            - logs:PutLogEvents
          Resource: "*"
    functions:
      hello:
        handler: handler.hello
      ciao:
        handler: handler.ciao
    plugins:
      - serverless-offline

标签: node.jsamazon-s3aws-lambda

解决方案


LogType: 'Tail'如果您想查看调用的日志,您需要添加到您的 Lambda 参数。对于您想要的东西,这不是一个很好的解决方案,因为它只会是最后 4kb 的日志。

如果您试图查看来自 Lambda 2 实际进程的日志,而不是 Lambda 1 进程中的日志并且它们不存在,我会质疑 Lambda 1 是否正在执行。您可以尝试fs.writeFileSync()验证。或者,如果您不在本地运行它,只需查看该函数的 Cloudwatch 调用指标。

此外,您将在 Lambda 2 运行的整个过程中运行 Lambda 1。如果 Lambda 2 调用另一个 Lambda,则 Lambda 1 将不得不无限等待。最终,您将开始计时功能或向亚马逊支付更多的钱。

如果您想保持理智,这是 Step Functions 的情况。


推荐阅读