

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

# 使用流程執行，您就能以非同步方式執行 Amazon Bedrock 流程。
<a name="flows-create-async"></a>

使用流程執行，您就能以非同步方式執行 Amazon Bedrock 流程。這樣就能延長流程執行持續時間，並使流程讓出控制權，如此應用程式就能執行其他任務。

當您使用 Amazon Bedrock 主控台或 [InvokeFlow](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeFlow.html) 操作執行流程時，流程會持續執行直到完成或逾時一小時為止 (以較早發生者為準)。當您執行流程執行時，流程的執行時間可能會延長：個別節點最多可執行五分鐘，而整個流程最多可執行 24 小時。

**注意**  
流程執行為 Amazon Bedrock 預覽版，可能隨時變更。

## 執行流程執行所需的許可
<a name="flows-create-async-permissions"></a>
+ 請確定 Amazon Bedrock 流程服務角色具有所有必要的許可。如需詳細資訊，請參閱[在 Amazon Bedrock 中為 Amazon Bedrock Flows 建立服務角色](flows-permissions.md)。
+ （選用） 使用客戶受管 AWS KMS 金鑰加密流程執行資料。如需詳細資訊，請參閱[Amazon Bedrock Flows 資源的加密](encryption-flows.md)。

## 建立和管理流程執行
<a name="flows-create-async-how-to"></a>

您可以在主控台或使用 [StartFlowExecution](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_StartFlowExecution.html) 操作建立流程執行。

------
#### [ Console ]

1. 遵循 [在 Amazon Bedrock 中建立和設計流程](flows-create.md) 的指示來建立流程。

1. 遵循 [建立在 Amazon Bedrock 中流程的別名](flows-alias-create.md) 中的指示建立流程的別名。

1. 如果您尚未進入**流程建置器**，請執行下列動作：

   1.  AWS 管理主控台 使用具有使用 Amazon Bedrock 主控台之許可的 IAM 身分登入 。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

   1. 從左側導覽窗格中選取 **Amazon Bedrock 流程**，然後選擇流程。

1. 選擇**執行**索引標籤，然後選擇**建立執行**。

1. 在**建立執行**對話方塊中，輸入下列內容

   1. 在**名稱**中，輸入流程執行的名稱。

   1. 針對**選取別名**，選擇您要使用之流程的別名。

   1. 針對**提示輸入**，輸入您要用來啟動流程的提示。

   1. 選擇**建立**，以建立流程執行並開始加以執行。

1. 在流程詳細資訊頁面上，選擇**執行**索引標籤，然後記下**執行狀態**中流程執行的狀態。

1. (選用) 選擇執行以開啟流程，然後查看執行摘要。

   在**執行輸出**中，您會看到來自流程的輸出。

1. (選用) 若要停止流程執行，請選取執行，然後選擇**停止**。

------
#### [ API ]

**啟動流程執行**  
若要執行流程執行，請使用 [Amazon Bedrock 代理人執行時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)傳送 [StartFlowExecution](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_StartFlowExecution.html) 請求。在請求中，指定您要執行之流程的流程 ID 和流程別名 ID。您還可以指定下列項目：
+ **輸入**：陣列，其中包含您希望流程從中開始執行的[輸入](flows-nodes.md#flows-nodes-input)節點。您可以在 `content` 欄位中指定要傳送至提示流程輸入節點的輸入。
+ **名稱**：流程執行的名稱。

```
{
    "inputs": [{
        "nodeName": "FlowInputNode",
        "nodeOutputName": "document",
        "content": {
            "document": "Test"
        }
    }],
    "name": "MyExecution"
}
```

回應是流程執行的 Amazon Resource Name (ARN)。您可以使用 `executionArn` 輪詢流程的目前狀態，例如流程執行完成或條件節點評估其條件時。

```
{
      "executionArn": "arn:aws:bedrock:us-west-2:111122223333:flow/FLOWID/alias/TSTALIASID/execution/MyExecution"
}
```

**追蹤流程執行的進度**  
使用 [GetFlowExecution](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GetFlowExecution.html) 操作，取得您透過執行 ARN 識別之流程的目前狀態。流程狀態為 `Running`、`Succeeded`、`Failed`、`TimedOut` 或 `Aborted`。

```
{
      "endedAt": null,
      "errors": null,
      "executionArn": "arn:aws:bedrock:us-west-2:111122223333:flow/FLOWID/alias/TSTALIASID/execution/MyExecution",
      "flowAliasIdentifier": "TSTALIASID",
      "flowIdentifier": "FLOWID",
      "flowVersion": "DRAFT",
      "startedAt": "2025-03-20T23:32:28.899221162Z",
      "status": "Running"
}
```

如下列範例所示，系統會在 `errors` 陣列中傳回錯誤 (例如逾時的 Lambda 節點)：

```
"errors": [{
    "nodeName": "LambdaNode1",
    "errorType": "ExecutionTimedOut",
    "message": "Call to lambda function timed out"
}],
```

**取得流程執行的結果**  
Amazon Bedrock 會將流程的輸出寫入流程的[輸出](flows-nodes.md#flows-nodes-output)節點。您可以在流程完成或流程執行 (取決於您的使用案例) 時取得輸出。

如果您希望流程先完成，請呼叫 `GetFlowExecution`，並確認回應中的 `status` 欄位值為 `Succeeded`。

若要從流程執行取得輸出事件清單，請呼叫 [ListFlowExecutionEvents](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_ListFlowExecutionEvents.html)。在回應中，檢查 `flowExecutionEvents` 中的 `flowOutputEvent` 物件。例如，您可以在 `content` 欄位中取得流程的輸出：

```
{
      "flowOutputEvent": {
        "content": {
          "document": "The model response."
        },
        "nodeName": "FlowOutputNode"
      }
}
```

您可以將 `eventType` 查詢參數設定為 `Flow`，將來自 `ListFlowExecutions` 的輸出限制為僅輸入和輸出節點。

**檢視事件**  
為了協助偵錯流程執行，您可以使用 [ListFlowExecutionEvents](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_ListFlowExecutionEvents.html) 操作，檢視節點在流程執行時期產生的事件。將 `eventType` 查詢參數設為 `Node`，以查看回應中所有節點 (包括中繼節點) 的輸入和輸出 (與下列範例類似)：

```
{
    "flowExecutionEvents": [{
            "nodeOutputEvent": {
                "fields": [{
                    "content": {
                        "document": "History book"
                    },
                    "name": "document"
                }],
                "nodeName": "FlowInputNode",
                "timestamp": "2025-05-05T18:38:56.637867516Z"
            }
        },
        {
            "nodeInputEvent": {
                "fields": [{
                    "content": {
                        "document": "History book"
                    },
                    "name": "book"
                }],
                "nodeName": "Prompt_1",
                "timestamp": "2025-05-05T18:38:57.434600163Z"
            }
        },
        {
            "nodeOutputEvent": {
                "fields": [{
                    "content": {
                        "document": "Here's a summary of the history book."
                    },
                    "name": "modelCompletion"
                }],
                "nodeName": "Prompt_1",
                "timestamp": "2025-05-05T18:39:06.034157077Z"
            }
        },
        {
            "nodeInputEvent": {
                "fields": [{
                    "content": {
                        "document": "Here's a summary of the history book."
                    },
                    "name": "document"
                }],
                "nodeName": "FlowOutputNode",
                "timestamp": "2025-05-05T18:39:06.453128251Z"
            }
        }
    ]
}
```

**取得流程執行的快照**  
當流程執行開始時，Amazon Bedrock 會自動擷取流程定義和中繼資料的快照。這很有用，因為您可以在流程非同步執行時更新流程。若要擷取此快照，請呼叫 [GetExecutionFlowSnapshot](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GetExecutionFlowSnapshot.html) 操作。回應包含下列流程欄位：
+ **customerEncryptionKeyArn** – 加密流程之 AWS KMS 金鑰的 ARN。
+ **definition**：流程的[定義](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FlowDefinition.html)。
+ **executionRoleArn**：流程執行所使用的 IAM 服務角色 ARN。
+ **flowAliasIdentifier**：流程的別名 ID。
+ **flowIdentifier**：流程的 ID。
+ **flowVersion**：流程的版本。

```
{
      "customerEncryptionKeyArn": null,
      "definition": "{flow-definition}",
      "executionRoleArn": "arn:aws:iam::111122223333:role/name",
      "flowAliasIdentifier": "TSTALIASID",
      "flowIdentifier": "FLOWID",
      "flowVersion": "DRAFT"
}
```

**列出流程執行**  
您可以呼叫 [ListFlowExecutions](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_ListFlowExecutions.html) 操作，以取得流程執行的清單。回應包含`flowExecutionSummaries`陣列，其中包含有關流程或 AWS 區域 流程別名的目前 中每個流程執行的資訊。每個元素都包含執行 ARN、開始時間和流程目前狀態等資訊。

```
{
    "flowExecutionSummaries": [{
        "createdAt": "2025-03-11T23:21:02.875598966Z",
        "endedAt": null,
        "executionArn": "arn:aws:bedrock:us-west-2:111122223333:flow/FLOWID/alias/TSTALIASID/execution/MyExecution",
        "flowAliasIdentifier": "TSTALIASID",
        "flowIdentifier": "FLOWID",
        "flowVersion": "DRAFT",
        "status": "Running"
    }]
}
```

**停止執行中的流程執行**  
如果您需要停止執行中的流程執行，請呼叫 [StopFlowExecution](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_StopFlowExecution.html) 操作，並傳遞要停止之執行的流程 ID、流程別名 ID 和流程執行 ID。

------

## 流程執行狀態
<a name="flows-async-statuses"></a>

流程執行可以有下列其中一種狀態：
+ **執行中**：流程執行正在進行中。
+ **成功**：流程執行已成功完成。
+ **失敗**：由於發生錯誤，流程執行失敗。
+ **逾時**：流程執行超過 24 小時的執行時期上限。
+ **已中止**：已使用 [StopFlowExecution](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_StopFlowExecution.html) 操作手動停止流程執行。

不再執行的流程執行會在 90 天後自動遭到刪除。

## 流程執行的最佳實務
<a name="flows-async-best-practices"></a>

使用流程執行時，請考慮下列事項：
+ 使用 [GetFlowExecution](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GetFlowExecution.html) 定期輪詢流程執行的狀態，直到流程達到結束狀態 (這是 `Running` 以外的任何項目)。
+ 當流程執行達到結束狀態時，請使用 [ListFlowExecutionEvents](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_ListFlowExecutionEvents.html) 來取得流程的結果。例如，您可以使用這些結果在流程周圍建置一些邏輯。
+ 使用 [GetExecutionFlowSnapshot](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GetExecutionFlowSnapshot.html) 取得流程執行的快照，以便在執行發生問題時協助偵錯。