[アップデート] Amazon Bedrock Flows が非同期実行をパブリックプレビューでサポートしました

[アップデート] Amazon Bedrock Flows が非同期実行をパブリックプレビューでサポートしました

Clock Icon2025.06.20

こんにちは!クラウド事業本部コンサルティング部のたかくに(@takakuni_)です。

Amazon Bedrock Flows が非同期実行をパブリックプレビューでサポートしました。

(Preview) Run Amazon Bedrock flows for longer durations with flow executions.

https://docs.aws.amazon.com/bedrock/latest/userguide/doc-history.html

アップデート内容

今回のアップデートまで 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.

https://docs.aws.amazon.com/bedrock/latest/userguide/flows-create-async.html

アプリケーション側で同期/非同期の選択ができるようになった、最大実行時間が 24 時間まで延長できるようになったと、非常に良いアップデートですね。

API の違いをまとめると以下になります。

項目 同期実行(InvokeFlow) 非同期実行(StartFlowExecution)
最大実行時間 1時間 24時間
ノードの最大実行時間 なし 5分
実行方式 同期的 非同期的

やってみる

実際に非同期実行をしてみましょう。bedrock-flow-asynchronously という名前のフローを用意しました。

(中身はシンプルに LLM との Q&A を行うフローになります。)

すでに何度か実行していますが、非同期の実行 - Preview が増えていますね。実行を作成 で非同期実行ができるようになっています。

2025-06-20 at 19.07.24-Amazon Bedrock  ap-northeast-1.png

実行を作成で名前、エイリアス、プロンプトを入力し作成をクリックします。

2025-06-20 at 19.11.37-Amazon Bedrock  ap-northeast-1.png

伝わりづらいですが、実行フローが非同期で実行されています。

2025-06-20 at 19.09.34-Amazon Bedrock  ap-northeast-1.png

内容はあまり関係ないですが、以下が出力されていました。

2025-06-20 at 19.09.45-Amazon Bedrock  ap-northeast-1.png

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 を挟んだフローを作成してみます。

2025-06-20 at 20.12.53-Amazon Bedrock  ap-northeast-1.png

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 が表示されていました。

2025-06-20 at 20.16.53-Amazon Bedrock  ap-northeast-1.png

Error が発生していますね。

2025-06-20 at 20.38.10-Amazon Bedrock  ap-northeast-1.png

InvokeFlow に 5 分のタイムリミットはあるのか

フローをテストから InvokeFlow を実行しましたが、問題なく動いていました。

2025-06-20 at 20.45.14-Amazon Bedrock  ap-northeast-1.png

トレースも問題なく確認できています。

2025-06-20 at 20.45.20-Amazon Bedrock  ap-northeast-1.png

まとめ

以上、「Amazon Bedrock Flows が非同期実行をパブリックプレビューでサポートしました。」でした。

同期/非同期で使い分けがはっきりしそうで良いアップデートだと思いました。

このブログが参考になれば幸いです。クラウド事業本部コンサルティング部のたかくに(@takakuni_)でした!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.