AWS Step Function中的负载控制功能

时间:2019-08-02 07:51:00

标签: amazon-s3 architecture aws-lambda aws-step-functions

AWS Step Function状态机的核心是Lambda函数,该函数对S3存储桶进行大量写入。当状态机出现使用高峰时,由于S3阻止了其他请求(com.amazonaws.services.s3.model.AmazonS3Exception: Please reduce your request rate.),该功能开始失败。显然,这会导致整个状态机执行失败,并且整个系统需要几分钟才能完全恢复。

我查看了AWS Lambda Function Scaling Documentation,发现,当我们减少 reserved concurrency 标志时,该函数将立即返回429状态代码无法处理新事件。

因此,我对负载控制功能执行的想法可以总结如下:

  1. 保留的并发性设置为较低的值。
  2. 在步进函数和retrying with a backoff rate中捕获429错误。

我希望收到您的以下方面的反馈意见:

a。我的方法有意义还是我错过了一些明显的更好方法?我首先想到了要研究使用AWS SQS或某些执行范围内的锁定/信号量来管理负载,但实际上并没有发现更多。 b。是否有其他方法可以从S3方面解决问题?

1 个答案:

答案 0 :(得分:0)

这种方法对我来说效果很好:

States:
 MyFunction:
  Type: Task
  End: true
  Resource: "..."
  Retry:
   - ErrorEquals:
      - TooManyRequestsException
     IntervalSeconds: 30
     MaxAttemtps: 5
     BackoffRate: 2