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
状态代码无法处理新事件。
因此,我对负载控制功能执行的想法可以总结如下:
429
错误。我希望收到您的以下方面的反馈意见:
a。我的方法有意义还是我错过了一些明显的更好方法?我首先想到了要研究使用AWS SQS或某些执行范围内的锁定/信号量来管理负载,但实际上并没有发现更多。 b。是否有其他方法可以从S3方面解决问题?
答案 0 :(得分:0)
这种方法对我来说效果很好:
States:
MyFunction:
Type: Task
End: true
Resource: "..."
Retry:
- ErrorEquals:
- TooManyRequestsException
IntervalSeconds: 30
MaxAttemtps: 5
BackoffRate: 2