Lambda Invoke не запускает вторую лямбду - PullRequest
0 голосов
/ 01 апреля 2020

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

'use strict'
/* eslint max-statements: ['error', 100, { 'ignoreTopLevelFunctions': true }] */
const RespHelper = require('../../lib/response')
const { uuid } = require('uuidv4')
const AWS = require('aws-sdk')
const DB = require('./dynamo')
const respHelper = new RespHelper()
const Dynamo = new DB()
const lambda = new AWS.Lambda({
  region: 'us-west-2'
})

const secondLambda = async (lambdaData) => {
  var params = {
    LogType: 'Tail',
    FunctionName: 'second_lambda_name',
    InvocationType: 'RequestResponse',
    Payload: JSON.stringify(lambdaData)
  }
  lambda.invoke(params, function (err, data) {
    if (err) {
      console.log(err)
    } else {
      console.log(`Success: ${data.Payload}`)
    }
  })
}

exports.handler = async event => {
  const id = uuid()
  let bodyData = {
    uuid: id,
    user: 'owner@email.com',
    processingStatus: 'IN_PROGRESS'
  }
  let payloadData = {
    uuid: id,
    user: 'owner@email.com',
    processingStatus: 'COMPLETE'
  }
  try {
    await Dynamo.writeRecordToDB(bodyData)
    await secondLambda(payloadData)
    return respHelper.sendResponse(200, { message: bodyData })
  } catch (err) {
    console.log(`Failure: ${err}`)
    return respHelper.sendResponse(400, { message: 'ERROR' })
  }
}

Я дважды проверил роль лямбды, и у нее есть разрешения Invoke Lambda и Invoke Asynchronous Invoke на все ресурсы. Консольные выходы не дают мне никаких указаний на то, почему это не работает. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 11 апреля 2020

Вы ожидаете callback, когда вам нужно ждать promise

const secondLambda = async lambdaData =>
    lambda
        .invoke({
            LogType: 'Tail',
            FunctionName: 'second_lambda_name',
            InvocationType: 'RequestResponse',
            Payload: JSON.stringify(lambdaData),
        })
        .promise()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...