如何避免在aws步骤函数中同时执行

Hao*_*hen 5 amazon-web-services amazon-cloudwatch aws-lambda aws-step-functions

目前我有一个用例,云监视规则将每 5 分钟触发一个步骤函数。如果步骤函数中已经运行了一个执行,我希望有一个逻辑来跳过启动另一次执行。有办法做到吗?

小智 2

您可以让它触发 Lambda 函数,而不是让 CloudWatch 事件规则直接触发 Step Function。Lambda 函数可以通过ListExecutions API检查是否有任何处于 RUNNING 状态的 Step Function 执行。如果没有,Lambda 函数可以通过StartExecution API启动新的执行。

  • 此并发问题的简单解决方案是将这个特定 lambda 函数的并发设置为 1,因此在给定时间只有一次执行会检查步骤函数状态。 (3认同)
  • 这是不安全的,两个并发的 lambda 调用都可以从 API 获得答案,而无需运行执行,并且都同时启动两个步骤函数。您需要某种类型的锁定(显式锁定或由 AWS 基础设施提供),以防止您的 lambda 或 step 函数同时执行 (2认同)