Wait State

使用Wait State可以在流程中进行时间控制,加入延时处理、定时处理等功能


创建Step Functions

进入Step Functions服务,创建新的State machine

image-20220408170228823

workflow的JSON更新成如下:

{
  "StartAt": "Wait 3 Seconds",
  "States": {
    "Wait 3 Seconds": {
      "Type": "Wait",
      "Seconds": 3,
      "Next": "Dynamic Wait"
    },
  
    "Dynamic Wait": {
      "Type": "Wait",
      "TimestampPath": "$.waitUntilTimestamp",
      "Next": "Wait Until Hard Coded"
    },
    "Wait Until Hard Coded": {
      "Type": "Wait",
      "Timestamp": "2050-01-01T00:00:01Z", 
      "End": true
    }
  }
}

此workflow的流程如下:

  • Wait 3 Seconds阶段,先等待3秒

  • Dynamic Wait阶段,等待到传入的时间值(例如2022-01-01T00:00:01Z)后再执行下一阶段

  • 再wait到设置的时间值(2050-01-01T00:00:01Z)。

渲染效果如下:

image-20220408204620516

进入下一步,将state machine命名为wait-test,其他选项保持默认,点击创建:

image-20220408204635734


测试

创建完成后,新建一个Execution:

image-20220408205835232

测试的Input如下, waitUntilTimestamp建议设置为当前时间点往后加两分钟(注意是0时区的时间):

{
	"waitUntilTimestamp": "2022-02-02T02:02:02Z"
}

image-20220408205308354

执行后,先等待3秒,再进行Dynamic Wait阶段:

image-20220408205333607

最后进入Wait Until Hard Coded阶段:

image-20220408205420374