AWS Stepfunction передает данные в следующую лямбду без лишних дополнений

Я создал конечный автомат с AWD CDK (машинописный текст), и все работает нормально. Это просто выход Lambda 1, который является входом для Lambda 2, имеет какое-то заполнение конечного автомата, которое меня не интересует.

Определение конечного автомата:

{
  "StartAt": "",
  "States": {
    "...applicationPdf": {
      "Next": "...setApplicationProcessed",
      "Type": "Task",
      "Resource": "arn:aws:states:::lambda:invoke",
      "Parameters": {
        "FunctionName": "...applicationPdf",
        "Payload.$": "$"
      }
    },
    "...setApplicationProcessed": {
      "Next": "Done",
      "Type": "Task",
      "Resource": "arn:aws:states:::lambda:invoke",
      "Parameters": {
        "...applicationPdf",
        "Payload.$": "$"
      }
    },
    "Done": {
      "Type": "Succeed"
    }
  }
}

Вывод Lambda1 (applicationPdf):

{
  "ExecutedVersion": "$LATEST",
  "Payload": {
    ...
  },
  "SdkHttpMetadata": {
    "AllHttpHeaders": {
      ...
    },
    "HttpHeaders": {
       ....
    },
    "HttpStatusCode": 200
  },
  "SdkResponseMetadata": {
     ....
  },
  "StatusCode": 200
}

Так что меня интересует только Payload, а не все остальное. Причина, по которой я хочу это сделать, заключается в том, что я хочу запустить вторую лямбду отдельно. Я просто хочу, чтобы событие, входящее в лямбду, было объектом Payload, а не объектом с ExecutedVersion etc.

Кто-нибудь знает как это сделать? Я посмотрю на Parameters вариант определения, возможно, ответ лежит там.


person Mattijs    schedule 06.12.2020    source источник


Ответы (2)



Я нашел одно решение, добавьте outputPath:

return new LambdaInvoke(this, 'lamba', {
      lambdaFunction: Function.fromFunctionArn(this, name, this.createLabmdaArn('applicationPdf')),
      outputPath: '$.Payload',
    });

Кажется, это работает и может быть решением.

person Mattijs    schedule 07.12.2020