Функции цепочки AWS Lambda не будут печатать мою запись - PullRequest
0 голосов
/ 19 мая 2018

Я пробую супер простой тест с лямбда-AWS для функций цепочки и любых недостатков к нему.

Я хочу использовать их более сложно (оптимизацияизображения как можно быстрее для гигантской корзины на S3)

Итак, я сказал себе: давайте сначала попробуем получить аргументы из первой функции во вторую и так далее, прежде чем я сойду с ума.

Также я видел, как люди рекомендуют использовать пошаговые функции, поэтому просто стараемся избегать этого, если это действительно не нужно.

Так, как говорится в заголовке , Я не могу получить вторую функцию, которая вызывается для распечатки материала , я бы хотел, чтобы она использовалась для отладки и задавалась вопросом, есть ли способ заставить ее работать?

Вот мой код:

    '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'})
    }

serverless.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

1 Ответ

0 голосов
/ 20 июня 2018

Вам нужно добавить LogType: 'Tail' к вашим параметрам Lambda, если вы хотите видеть журналы из вызова.Это не лучшее решение для того, что вы хотите, так как это будут только последние 4 КБ журналов.

Если вы пытаетесь просмотреть журналы реального процесса Lambda 2, а не процесса Lambda 1, а их там нет, я бы спросил, выполняется ли Lambda 1 вообще.Вы можете попробовать fs.writeFileSync(), чтобы проверить.Или, если вы не запускаете его локально, просто посмотрите на метрики вызовов Cloudwatch для этой функции.

Кроме того, Lambda 1 будет работать все время, пока Lambda 2 работает.Если лямбда 2 вызывает другую лямбду, то лямбда 1 будет ждать этого до бесконечности.В конце концов, вы начнете синхронизировать функции или заплатите Amazon гораздо больше денег.

Это ситуация для пошаговых функций, если вы хотите сохранить здравомыслие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...