Aws lambda 在STEP函数中捕获错误时向sqs发送消息

Aws lambda 在STEP函数中捕获错误时向sqs发送消息,aws-lambda,amazon-sqs,serverless,aws-step-functions,Aws Lambda,Amazon Sqs,Serverless,Aws Step Functions,我正在使用带有无服务器step函数的无服务器框架插件。我想检查stepfunction工作流中的任何错误,并将此错误发送到sqs队列 当前,我想将所有输入作为消息传递给队列(MessageBody:$)。但如果我从队列中获取数据,则消息是$(美元符号),而不是实际输入。如何将上一步中的错误消息发送到队列 States: state1: Type: Task Resource: Fn::GetAtt: [function1, Arn]

我正在使用带有
无服务器step函数的无服务器框架
插件。我想检查stepfunction工作流中的任何错误,并将此错误发送到sqs队列

当前,我想将所有输入作为消息传递给队列(
MessageBody:$
)。但如果我从队列中获取数据,则消息是
$
(美元符号),而不是实际输入。如何将上一步中的错误消息发送到队列

  States:
    state1:
      Type: Task
      Resource:
        Fn::GetAtt: [function1, Arn]
      Next: state2
      Catch:
        - ErrorEquals: [States.ALL]
          Next: sendErrorToDLQ
          ResultPath: $.error
    state2:
      Type: Task
      Resource:
        Fn::GetAtt: [function2, Arn]
      Next: done
      Catch:
        - ErrorEquals: [ States.ALL ]
          Next: sendErrorToDLQ
          ResultPath: $.error
    sendErrorToDLQ:
      Type: Task
      Resource: arn:aws:states:::sqs:sendMessage
      Parameters:
        QueueUrl:
          Ref: ServiceDeadLetterQueue
        MessageBody: $    # <== how to pass input to sqs message
      Next: fail
    fail:
      Type: Fail
    done:
      Type: Succeed
声明:
状态1:
类型:任务
资源:
Fn::GetAtt:[功能1,Arn]
下一个:state2
捕获:
-ErrorEquals:[状态。全部]
下一步:sendErrorToDLQ
结果路径:$。错误
国家2:
类型:任务
资源:
Fn::GetAtt:[功能2,Arn]
下一步:完成
捕获:
-ErrorEquals:[States.ALL]
下一步:sendErrorToDLQ
结果路径:$。错误
sendErrorToDLQ:
类型:任务
资源:arn:aws:states::sqs:sendMessage
参数:
队列URL:
参考:ServiceDeadLetterQueue

MessageBody:$#我在连接SNS时也得到了同样的结果。根据AWS文件,我们必须按照以下结构发送参数

“MessageBody.$”:“$”


参考资料:

我在连接SNS时也得到了同样的结果。根据AWS文件,我们必须按照以下结构发送参数

“MessageBody.$”:“$”

参考: