使用流程执行异步运行 Amazon Bedrock 流程 - Amazon Bedrock

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

使用流程执行异步运行 Amazon Bedrock 流程

通过流程执行,您可以异步运行 Amazon Bedrock 流程。这使您的流程可以运行更长的持续时间,还可以控制产量,以便您的应用程序可以执行其他任务。

当您使用 Amazon Bedrock 控制台或通过InvokeFlow操作运行流程时,该流程会一直运行到完成或在一小时后超时(以先到者为准)。当您运行流程执行时,您的流程可以运行更长的时间:单个节点最多可以运行五分钟,整个流程可以运行长达 24 小时。

注意

Flow 执行在 Amazon Bedrock 的预览版中,可能会发生变化。

运行流程执行所需的权限

创建和管理流程执行

您可以在控制台中或使用StartFlowExecution操作来创建流程执行。

Console
  1. 按照中的说明创建流程在 Amazon Bedrock 中创建和设计流程

  2. 按照中的说明为流程创建别名在 Amazon Bedrock 中创建流程的别名

  3. 如果您尚未使用 Flow 构建器,请执行以下操作:

    1. 使用有权使用 Amazon Bedrock 控制台的 IAM 身份登录。 AWS Management Console 然后,在 “入门” 中打开 Amazon Bedrock 控制台。 AWS Management Console

    2. 从左侧导航窗格中选择 Amazon Bedrock Flows,然后选择您的流程。

  4. 选择 “执行” 选项卡,然后选择 “创建执行”。

  5. 在 “创建执行” 对话框中,输入以下内容

    1. 名称中,输入流程执行的名称。

    2. 在 “选择别名” 中,选择要使用的流程的别名。

    3. 在 “提示输入” 中,输入要用来启动流程的提示。

    4. 选择 “建” 以创建流程执行并开始运行它。

  6. 在流程详细信息页面上,选择 “执行” 选项卡,并在 “执行状态” 中记下流程执行的状态

  7. (可选)选择执行以打开流程并查看执行摘要。

    执行输出中,您可以看到流程的输出。

  8. (可选)要停止流程执行,请选择该执行并选择停止

API
开始流程执行

要运行流程执行,请使用适用于 Amazon Bedrock 的代理运行时终端节点发送StartFlowExecution请求。在请求中,指定要运行的流程的流程 ID 和流程别名 ID。您也可以指定:

  • in puts — 一个数组,其中包含您希望流程从中开始运行的输入节点。您可以在content字段中指定要发送到提示流输入节点的输入。

  • nam e — 流程执行的名称。

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

响应是流程执行的亚马逊资源名称 (ARN)。您可以使用轮询流程的当前状态,例如流程执行完成或条件节点评估其条件的时间。executionArn

{ "executionArn": "arn:aws:bedrock:us-west-2:111122223333:flow/FLOWID/alias/TSTALIASID/execution/MyExecution" }
跟踪流程执行的进度

使用GetFlowExecution操作获取您通过执行 ARN 标识的流程的当前状态。流程状态为RunningSucceededFailedTimedOut、或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 将流程的输出写入流程的输出节点。您可以在流程完成后或流程运行时获得输出(取决于您的用例)。

如果您希望流程先完成,请致电GetFlowExecution并确保响应中该status字段的值为Succeeded

要从流程执行中获取输出事件的列表,请调用ListFlowExecutionEvents。在响应中,检查中是否有flowOutputEvent对象flowExecutionEvents。例如,您可以在content字段中获取流程的输出:

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

通过将eventType查询参数设置为,可以将输出限制ListFlowExecutions为仅限输入和输出节点Flow

查看事件

为了帮助调试流程执行,您可以使用ListFlowExecutionEvents操作来查看节点在流程运行时生成的事件。将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操作。响应包括以下流程字段:

  • customerEncryptionKeyArn — 加密流的密钥 AWS KMS 的 ARN。

  • 定义-流程的定义

  • 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操作来获取流程执行列表。响应包含一个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操作并传递要停止的执行的流程 ID、流程别名 ID 和流程执行 ID。

流程执行状态

流程执行可以具有以下状态之一:

  • 正在运行-流程执行正在进行中。

  • 成功-流程执行成功完成。

  • 失败 — 由于错误,流程执行失败。

  • TimedOut— 流程执行超过了 24 小时的最大运行时间。

  • 已中止-已使用该StopFlowExecution操作手动停止流程执行。

不再运行的 Flow 执行将在 90 天后自动删除。

流程执行的最佳实践

使用流程执行时,请考虑以下几点:

  • 定期轮询您的流程执行状态,GetFlowExecution直到您的流程达到终止状态(除此之外的任何其他状态Running)。

  • 当您的流程执行达到终止状态时,使用ListFlowExecutionEvents来获取流程的结果。例如,您可以使用这些结果来围绕流程构建一些逻辑。

  • 使用获取流程执行的快照 GetExecutionFlowSnapshot,以便在执行过程中出现问题时进行调试。