[アップデート] Amazon Bedrock Flows が非同期実行をパブリックプレビューでサポートしました
こんにちは!クラウド事業本部コンサルティング部のたかくに(@takakuni_)です。
Amazon Bedrock Flows が非同期実行をパブリックプレビューでサポートしました。
(Preview) Run Amazon Bedrock flows for longer durations with flow executions.
アップデート内容
今回のアップデートまで Amazon Bedrock Flow は同期実行のみサポートされ、同期実行で利用される InvokeFlow API の最大フロー実行時間は 1 時間までとなっていました。
今回のアップデートで、非同期実行の StartFlowExecution API がサポートされました。
また、StartFlowExecution API を利用することで、最大フロー実行時間を 24 時間まで引き延ばすことができるようになりました。ただし、各ノードの最大実行時間は 5 分間のようです。
When you run a flow by using the Amazon Bedrock console or with the InvokeFlow operation, the flow runs until it finishes or times out at one hour (whichever is first). When you run a flow execution, your flow can run much longer: Individual nodes can run up to five minutes, and your entire flow can run for up to 24 hours.
アプリケーション側で同期/非同期の選択ができるようになった、最大実行時間が 24 時間まで延長できるようになったと、非常に良いアップデートですね。
API の違いをまとめると以下になります。
項目 | 同期実行(InvokeFlow) | 非同期実行(StartFlowExecution) |
---|---|---|
最大実行時間 | 1時間 | 24時間 |
ノードの最大実行時間 | なし | 5分 |
実行方式 | 同期的 | 非同期的 |
やってみる
実際に非同期実行をしてみましょう。bedrock-flow-asynchronously
という名前のフローを用意しました。
(中身はシンプルに LLM との Q&A を行うフローになります。)
すでに何度か実行していますが、非同期の実行 - Preview
が増えていますね。実行を作成
で非同期実行ができるようになっています。
実行を作成で名前、エイリアス、プロンプトを入力し作成をクリックします。
伝わりづらいですが、実行フローが非同期で実行されています。
内容はあまり関係ないですが、以下が出力されていました。
API で実行
StartFlowExecution を実行してみましょう。
import boto3
import uuid
import time
# Bedrock Agentランタイムクライアントの作成
session = boto3.Session(profile_name='hoge')
client = session.client('bedrock-agent-runtime', region_name='ap-northeast-1')
# randomなUUIDを生成
uuid_value = str(uuid.uuid4())
# フロー実行の開始
response = client.start_flow_execution(
flowIdentifier='DX8YKMNT10',
flowAliasIdentifier='ZYCEKBO7NL',
inputs=[{
'nodeName': 'FlowInputNode',
'nodeOutputName': 'document',
'content': {
'document': 'こんにちは、これは非同期実行のテストです。'
}
}],
flowExecutionName=f'AsyncTest-{uuid_value[:8]}',
)
print(response)
reponse は非同期で実行 ARN が返ってきていますね。
flow-sample % poetry run python app.py
{'ResponseMetadata': {'RequestId': 'a78038ec-77d7-40fa-bb19-3a966175d633', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Fri, 20 Jun 2025 10:44:02 GMT', 'content-type': 'application/json', 'content-length': '124', 'connection': 'keep-alive', 'x-amzn-requestid': 'a78038ec-77d7-40fa-bb19-3a966175d633'}, 'RetryAttempts': 0}, 'executionArn': 'arn:aws:bedrock:ap-northeast-1:123456789012:flow/DX8YKMNT10/alias/ZYCEKBO7NL/execution/AsyncTest-a28ce47f'}
実行 ID に対して Get 処理を行ってみます。
import boto3
# Bedrock Agentランタイムクライアントの作成
session = boto3.Session(profile_name='hoge')
client = session.client('bedrock-agent-runtime', region_name='ap-northeast-1')
events_response = client.list_flow_execution_events(
flowIdentifier='DX8YKMNT10',
flowAliasIdentifier='ZYCEKBO7NL',
executionIdentifier='AsyncTest-a28ce47f',
eventType='Flow'
)
print(events_response)
flowOutputEvent から結果が返ってきていますね。
{'ResponseMetadata': {'RequestId': 'd5687426-a331-4f35-92f3-2d28e30dad74', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Fri, 20 Jun 2025 10:50:45 GMT', 'content-type': 'application/json', 'content-length': '657', 'connection': 'keep-alive', 'x-amzn-requestid': 'd5687426-a331-4f35-92f3-2d28e30dad74'}, 'RetryAttempts': 0}, 'flowExecutionEvents': [{'flowInputEvent': {'fields': [{'content': {'document': 'こんにちは、これは非同期実行のテストです。'}, 'name': 'document'}], 'nodeName': 'FlowInputNode', 'timestamp': datetime.datetime(2025, 6, 20, 10, 44, 2, 587651, tzinfo=tzutc())}}, {'flowOutputEvent': {'fields': [{'content': {'document': 'こんにちは!これは非同期実行のテストですね。テストが成功しているようです。何か特定の機能や情報についてテストされていますか?お手伝いできることがあれば、お気軽にお知らせください。'}, 'name': 'document'}], 'nodeName': 'FlowOutputNode', 'timestamp': datetime.datetime(2025, 6, 20, 10, 44, 6, 360120, tzinfo=tzutc())}}]}
タイムアウトを起こしてみる
以下のように Lambda を挟んだフローを作成してみます。
Lambda は次のように Sleep 処理を挟んだ状態としています。実行時間を 5 分以上の 310 秒まで伸ばしてみます。
import json
import time
def lambda_handler(event, context):
# Sleep for 310 seconds
time.sleep(310)
# Return response with status code 200
return 'Success'
非同期処理のため、ARN がすぐに返ってきています
flow-sample % poetry run python app.py
{'ResponseMetadata': {'RequestId': 'd08b92ad-5466-43f6-af67-624d44d81764', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Fri, 20 Jun 2025 11:16:29 GMT', 'content-type': 'application/json', 'content-length': '124', 'connection': 'keep-alive', 'x-amzn-requestid': 'd08b92ad-5466-43f6-af67-624d44d81764'}, 'RetryAttempts': 0}, 'executionArn': 'arn:aws:bedrock:ap-northeast-1:123456789012:flow/DX8YKMNT10/alias/ZYCEKBO7NL/execution/AsyncTest-6125590c'}
コンソールを見ると非同期で実行されていました。Progress が表示されていました。
Error が発生していますね。
InvokeFlow に 5 分のタイムリミットはあるのか
フローをテストから InvokeFlow を実行しましたが、問題なく動いていました。
トレースも問題なく確認できています。
まとめ
以上、「Amazon Bedrock Flows が非同期実行をパブリックプレビューでサポートしました。」でした。
同期/非同期で使い分けがはっきりしそうで良いアップデートだと思いました。
このブログが参考になれば幸いです。クラウド事業本部コンサルティング部のたかくに(@takakuni_)でした!