gpt4 book ai didi

amazon-web-services - AWS 步骤函数 SendSQSMessage : Dynamic MessageGroupId

转载 作者:行者123 更新时间:2023-12-03 07:23:30 25 4
gpt4 key购买 nike

我正在使用 AWS CDK 创建一个状态机,该状态机将消息发送到 fifo 队列并等待 lambda 工作线程的回调以继续执行。

我希望发送到 fifo 队列的消息能够分配一个动态 MessageGroupId,这样我就可以控制处理消息的 lambda 工作线程的数量。我能想到的拥有动态 MessageGroupId 的唯一方法是使用 JsonPath 引用步骤函数输入上的某些参数,但是我还没有遇到任何有关它的文档。我使用 JsonPath 动态传递 MessageGroupId 的初始测试失败了,只需传递字符串“$.MessageGroupId”即可有效地为每条消息提供相同的消息组 ID,从而提供一个 lambda 工作线程。

  1. 当从步骤函数发送时,是否可以动态地将消息组 ID 分配给 sqs 消息?
  2. 如果是这样,怎么做?

最佳答案

在 AWS Support 的帮助下,我设法通过使用 Context Object 来完成此操作。或从初始输入传递 ID 并使用 $ 引用它。

这是一个例子:

{
"Comment": "Generate unique MessageGroupId",
"StartAt": "Start",
"States": {
"Start": {
"Type": "Task",
"TimeoutSeconds": 60,
"Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken",
"Parameters": {
"QueueUrl": "<YOUR_QUEUE_URL>",
"MessageBody": {
"Input.$": "$",
"TaskToken.$": "$$.Task.Token"
},
"MessageGroupId.$": "$$.Execution.Id"
},
"ResultPath": "$",
"End": true
}
}
}

我的问题是我试图像这样MessageGroupId:

“MessageGroupId”:“$$.Execution.Id”

我应该做的地方:

“MessageGroupId.$”:“$$.Execution.Id”

附加 .$ 将解析表达式 "$$.Execution.Id",而不是直接输入字符串 "$$.Execution.Id".

关于amazon-web-services - AWS 步骤函数 SendSQSMessage : Dynamic MessageGroupId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67475459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com