

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 利用流执行异步运行 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)操作运行流程时，该流程会一直运行到完成或在一小时后超时（以先到者为准）。当您运行流执行时，您的流可以运行更长时间：单个节点可以运行最多 5 分钟，整个流可以运行最多 24 小时。

**注意**  
流执行在 Amazon Bedrock 中为预览版，可能会有变化。

## 运行流执行所需的权限
<a name="flows-create-async-permissions"></a>
+ 确保 Amazon Bedrock 服务角色具有所有必要的权限。有关更多信息，请参阅 [在 Amazon Bedrock 中为 Amazon Bedrock 流创建服务角色](flows-permissions.md)。
+ （可选）使用客户托管 AWS KMS 密钥加密您的流程执行数据。有关更多信息，请参阅 [Amazon Bedrock 流资源加密](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. 使用有权使用 Amazon Bedrock 控制台的 IAM 身份登录。 AWS 管理控制台 然后，在 [https://console.aws.amazon.com/](https://console.aws.amazon.com/bedrock)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。您也可以指定：
+ **inputs** – 一个数组，其中包含您希望流从中开始运行的[输入](flows-nodes.md#flows-nodes-input)节点。您可以在 `content` 字段中指定要发送到提示流输入节点的输入。
+ **name** – 流执行的名称。

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

响应是流执行的 Amazon 资源名称（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"
}
```

错误（如 Lambda 节点超时）会在 `errors` 数组中返回，如下例所示：

```
"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>

流执行可能具有以下状态之一：
+ **正在运行** - 流执行正在进行中。
+ **成功** - 流执行已成功完成。
+ **失败** – 流执行因错误而失败。
+ **TimedOut**— 流程执行超过了 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)，以便在执行过程中出现问题时进行调试。