

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 等待工作流程狀態
<a name="state-wait"></a>

**管理狀態和轉換資料**  
了解如何[使用變數在狀態與使用 JSONata 轉換資料之間傳遞資料](workflow-variables.md)。 [ JSONata](transforming-data.md)

`Wait` 狀態 (`"Type": "Wait"`) 會使狀態機器延遲，而無法繼續執行一段指定的時間。您可以選擇相對時間 (以狀態開始後的秒數指定)，或絕對結束時間 (以時間戳記形式指定)。

除了[常見狀態欄位](statemachine-structure.md#amazon-states-language-common-fields)以外，`Wait` 狀態具有下列其中一個欄位。

** `Seconds` **  
開始 `Next` 欄位中指定的狀態之前所要等待的時間 (以秒為單位)。您必須將時間指定為從 0 到 99999999 的整數值。在 JSONata 狀態中，您也可以指定 JSONata 表達式，該表達式必須評估為指定範圍內的整數。

** `Timestamp` **  
開始 `Next` 欄位中指定的狀態之前，所要等待的絕對時間。  
時間戳記必須符合 ISO 8601 的 RFC3339 設定檔，並且有以下的進一步限制：大寫 `T` 必須分隔日期和時間部分，以及大寫 `Z` 必須表示數字時區位移不存在，例如 `2024-08-18T17:33:00Z`。  
在 JSONata 狀態下，您可以指定 JSONata 表達式，該表達式會產生符合先前要求的字串。  
目前，如果您將等待時間指定為時間戳記，Step Functions 會考慮最多 秒的時間值，並截斷毫秒。

** `SecondsPath` （選用，僅限 JSONPath) **  
中的[路徑](concepts-input-output-filtering.md)會將輸入資料狀態為整數值，指定在繼續下一個狀態之前等待的時間，以秒為單位。

** `TimestampPath` （選用，僅限 JSONPath) **  
狀態中的[路徑](concepts-input-output-filtering.md)會將資料輸入至絕對日期和時間 （時間戳記），以便在繼續下一個狀態之前等待。

**注意**  
您必須指定 `Seconds`、`Timestamp`、`SecondsPath` 或 `TimestampPath` 其中一項。此外，您可以為標準工作流程和快速工作流程指定的最長等待時間為一年又五分鐘。

## Wait 狀態範例
<a name="wait-state-example"></a>

以下 `Wait` 狀態導致狀態機器延遲 10 秒。

```
"wait_ten_seconds": {
  "Type": "Wait",
  "Seconds": 10,
  "Next": "NextState"
}
```

在下一個範例中，`Wait`狀態會等到絕對時間：2024 年 3 月 14 日上午 1：59 UTC。

```
"wait_until" : {
  "Type": "Wait",
  "Timestamp": "2024-03-14T01:59:00Z",
  "Next": "NextState"
}
```

您不需對此期間進行硬式編碼。舉例而言，假定是以下輸入資料：

```
{
  "expirydate": "2024-03-14T01:59:00Z"
}
```

使用參考[路徑](concepts-input-output-filtering.md)從輸入資料中選取 "expirydate" 值，即可從輸入中選取該值。

```
"wait_until" : {
    "Type": "Wait",
    "TimestampPath": "$.expirydate",
    "Next": "NextState"
}
```