在 stepfunctions 中捕获错误时向 sqs 发送消息
Send message to sqs while catch error in stepfunctions
我正在使用带有 serverless-step-functions
插件的无服务器框架。我想检查我的 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
我在连接SNS的时候也是一样的。根据 AWS 文档,我们必须遵循以下结构来发送参数
"MessageBody.$": "$"
参考:https://docs.aws.amazon.com/step-functions/latest/dg/connect-sqs.html
我正在使用带有 serverless-step-functions
插件的无服务器框架。我想检查我的 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
我在连接SNS的时候也是一样的。根据 AWS 文档,我们必须遵循以下结构来发送参数
"MessageBody.$": "$"
参考:https://docs.aws.amazon.com/step-functions/latest/dg/connect-sqs.html