gpt4 book ai didi

amazon-web-services - AWS step 函数可以执行超过 25000 次吗?

转载 作者:行者123 更新时间:2023-12-02 11:18:53 26 4
gpt4 key购买 nike

我目前正在评估可以处理单个文档的 AWS 状态机。状态机需要 5-10 分钟来处理单个文档。

{
"Comment":"Process document",
"StartAt": "InitialState",
"States": {
//the document goes through multiple states here
}
}

C# 代码通过为每个文档传递一些 json 来调用状态机。就像是
      // max 100 documents
public Task Process(IEnumerable<Document> documents)
{
var amazonStepFunctionsConfig = new AmazonStepFunctionsConfig { RegionEndpoint = RegionEndpoint.USWest2 };
using (var amazonStepFunctionsClient = new AmazonStepFunctionsClient(awsAccessKeyId, awsSecretAccessKey, amazonStepFunctionsConfig))
{
foreach(var document in documents)
{
var jsonData1 = JsonConvert.SerializeObject(document);
var startExecutionRequest = new StartExecutionRequest
{
Input = jsonData1,
Name = document.Id,
StateMachineArn = "arn:aws:states:us-west-2:<SomeNumber>:stateMachine:ProcessDocument"
};
var taskStartExecutionResponse = await amazonStepFunctionsClient.StartExecutionAsync(startExecutionRequest);
}
}
}

我们批量处理文件 100 .所以在上面的循环中,最大文档数将为 100 .然而,我们每周处理数以千计的文件(25000+)。

根据 AWS documentation Maximum execution history size is 25,000 events. If the execution history reaches this limit the execution will fail .

这是否意味着我们不能执行单个状态机超过 25000 次?
为什么状态机的执行应该取决于它的历史,为什么 AWS 不能只清除历史?

我知道有一种方法可以到 continue as new execution但我只是想了解历史限制及其与状态机执行的关系,我的理解是否正确?

更新 1
我不认为这是重复的问题。我试图找出我对历史极限的理解是否正确?为什么历史与状态机可以执行的次数有关?当状态机执行时,它会创建历史记录,如果历史记录超过 25000+,则清除它们或归档它们。为什么 AWS 会停止执行状态机。那没有意义。

所以问题是,单状态机(唯一的 arn)可以在循环中执行超过 25000 次吗?
如果我必须创建新的状态机(在 25000 次执行之后),那个状态机不会有不同的 arn 吗?

如果我必须关注 linked SO post我在哪里可以获得当前的执行次数?他也在 step 函数中循环,而我在循环中调用 step 函数

更新 2
所以只是为了测试我创建了以下状态机
{
"StartAt": "HelloWorld",
"States": {
"HelloWorld": {
"Type": "Pass",
"Result": "Hello World!",
"End": true
}
}
}

并执行了 26000 次,没有失败
    public static async Task Main(string[] args)
{
AmazonStepFunctionsClient client = new AmazonStepFunctionsClient("my key", "my secret key", Amazon.RegionEndpoint.USWest2);
for (int i = 1; i <= 26000; i++)
{
var startExecutionRequest = new StartExecutionRequest
{
Input = JsonConvert.SerializeObject(new { }),
Name = i.ToString(),
StateMachineArn = "arn:aws:states:us-west-2:xxxxx:stateMachine:MySimpleStateMachine"
};

var response = await client.StartExecutionAsync(startExecutionRequest);
}

Console.WriteLine("Press any key to continue");
Console.ReadKey();
}

在 AWS 控制台上,我能够提取所有 26000 次执行的历史记录
enter image description here

所以我不确定 Maximum execution history size is 25,000 events 到底是什么意思

最佳答案

我不认为你做对了。 25,000 限制用于状态机执行历史记录。您已经测试了 26,000 次状态机执行。状态机执行限制为 1,000,000 次打开执行。

状态机最多可以运行 1 年,在此期间其执行历史不应超过 25,000。

希望能帮助到你。

关于amazon-web-services - AWS step 函数可以执行超过 25000 次吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54259775/

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