【问题标题】:Is it possible to have an AWS Step Function wait until a RDS is deleted to continue?是否可以让 AWS Step Function 等到 RDS 被删除才能继续?
【发布时间】:2022-10-23 22:48:43
【问题描述】:

目前我的端到端目标是创建一个每天通过事件桥运行的阶梯函数。

Step Function 的流程应如下所示:

  1. 使用 waitForTaskToken 通过 Lambda 删除当前 QA RDS。
  2. 如果已部署代码,则返回状态 200,否则返回 400。
  3. 删除 RDS 后,将 taskToken 发送回 Step Function。
  4. Step Function 向前移动并从快照创建新的 QA RDS。

    我的问题是关于流程的第 3 步。删除 RDS 完成后,如何将 taskToken 发送回 Step Function?

【问题讨论】:

  • 您可能需要在 Step Functions 中创建一个循环来检查 RDS 数据库的状态并包含延迟。例如,它可以每分钟检查一次,直到收到所需的响应。

标签: amazon-web-services aws-lambda aws-step-functions


【解决方案1】:

删除 RDS 完成后,如何将 taskToken 发送回 Step Function?

通过任务负载 ("taskToken.$": "$$.Task.Token") 将 task token 发送到 Lambda。一旦您的 Lambda 确认实例删除(例如,使用 DescribeDBInstances),使用令牌调用 SendTaskSuccess 命令。这会通知 Step Functions 服务任务已完成并且可以继续执行。否则,如果 Lambda 无法确认删除,请通过使用令牌调用 SendTaskFailure 让 Step Functions 知道。

是否可以让 AWS Step Function 等到 RDS 被删除才能继续?

是的。实例删除是一个异步任务。您有几个选项可供架构师等待删除完成:

  1. Step Functions Lambda callback pattern:如在OP及以上。轮询删除是 Lambda 的职责。
  2. Step Functions 等待 -> Lambda -> 选择循环:状态机负责轮询。 Build a loop into the State Machine 通过链接常规的请求-响应等待状态、Lambda 任务和选择状态。重复直到删除完成或达到最大迭代计数。请参阅@John_Rotenstein 的评论。
  3. 事件驱动的编排忘记等待。删除实例时的 RDS emits a eventCreate an Eventbridge ruledeletion 事件时触发您的 Recreate-Lambda。换句话说,将 Delete-Lambda 和 Recreate-Lambda 与异步事件模式松散耦合,而不是在状态机中将它们紧密耦合。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 2020-05-02
    • 2019-02-05
    • 2018-06-21
    • 1970-01-01
    • 2021-07-16
    • 2021-01-14
    相关资源
    最近更新 更多