Step FunctionsをAgentCoreでAIのツールに、操作と料金・権限
悠 Yu NiiboriAIエンジニアプロフィール
出典 8件

要点
対象:AIエージェントに業務の手順を任せたい担当者
- 実行の開始先は1つのステートマシンに固定
- ステータスの確認と停止はStandardだけ
- タスクに結果を返す3つの操作はIAMで絞れない
Step Functionsのワークフローを、AIエージェント(自分で判断してツールを使うAI)のツールとして呼べるようになりました。AWSが10月29日に発表しました。以下「AI」と書きます。1
この記事の目次(7節)
- Step FunctionsとAgentCore Gatewayでできること
- チュートリアルの例:AIが送るものと返ってくるもの
- どんな仕事に向くか
- 権限の絞り方と、IAMで絞れない3つの操作
- 料金と、使えるリージョン
- 試す前に確かめること
- 承認の要る仕事をAIに任せられるか確かめる
AIとStep Functionsの間には、AgentCore Gatewayが入ります。いつ実行を開始し、何を入力に渡すかはAIが決めます。
ステップをどの順に進めるかはStep Functionsが決めるので、AIはステップを飛ばしたり入れ替えたりできません。2 返金してよいかの確認・上長の承認・返金の実行のように、順番を変えてはいけない仕事に向いています。1
ただし、待機中のタスクにAIが結果を返す3つの操作(SendTaskSuccess など)は、IAMで対象を絞れません。2
Step FunctionsとAgentCore Gatewayでできること
Step Functionsは、仕事のステップを並べて、決めた順に自動で進めるAWSのサービスです。ステップの並び全体を、AWSではステートマシンと呼びます。2
AgentCore Gatewayには、Step Functions用の組み込みのコネクタが加わりました。AIはGatewayからツールの一覧を受け取り、その中のツールを呼び出します。2
Lambda関数もMCPサーバーも、自分で書く必要はありません。ツールの定義も、Gatewayが作ります。2
ツールとして公開できる操作は10個です。このうち4つは、対象のステートマシンを1つ固定します。2
固定するのは、StartExecution・StartSyncExecution・ListExecutions・DescribeStateMachine です。
固定は、ターゲット(Gatewayにつなぐ先の設定)を作るときに必ず設定します。設定しないと、そのツールは毎回失敗します。2
AIが受け取るツールの説明には、固定したステートマシンを指定する欄がありません。AIが別のステートマシンを指定して送っても、Gatewayはエラーを返して拒否します。2
| AIがすること | API名 | 対象 |
|---|
| 実行を開始する | StartExecution・StartSyncExecution | 固定したステートマシン1つ |
| 実行の一覧を見る | ListExecutions | 固定したステートマシン1つ |
| ステートマシンの中身を読む | DescribeStateMachine | 固定したステートマシン1つ |
| 1回の実行のステータスと実行履歴を見る | DescribeExecution・GetExecutionHistory | AIが渡す実行ARN(実行を指す識別子)。サービスロールのIAMポリシーで絞れる |
| 実行を止める | StopExecution | AIが渡す実行ARN。サービスロールのIAMポリシーで絞れる |
| 待機中のタスクに完了か失敗を返す/作業中であることを知らせる | SendTaskSuccess・SendTaskFailure・SendTaskHeartbeat | タスクトークン。IAMポリシーでは絞れない |
6月に出たマネージドハーネスとの統合とは向きが逆
6月3日には、Step FunctionsとAgentCoreのマネージドハーネス(使うAIとツールを設定で決めて動かす仕組み。当時はプレビュー中)との統合が加わっています。こちらは、ステートマシンの中のステップでAIを動かす機能です。4
| 6月3日に出たハーネスとの統合 | 10月29日に出たStep Functionsコネクタ |
|---|
| 向き | ステートマシンがAIを呼ぶ | AIがステートマシンを呼ぶ |
| 東京リージョン | 6月の発表では、対象の4つのリージョンに入っていなかった | 使える(AgentCore Gatewayのあるリージョンすべて) |
チュートリアルの例:AIが送るものと返ってくるもの
Step Functionsのデベロッパーガイドに、ステップが1つだけのステートマシン「AgentHelloWorld」をGatewayにつなぐチュートリアルがあります。3
ステートマシン、Gateway用のサービスロール、Gatewayとターゲットの順に作ります。チュートリアルでは、10個の操作のうち6つをツールとして設定しています。3
| AIが送るもの | 返ってくるもの |
|---|
| ツール一覧の取得(tools/list) | 設定した6つのツール。実行を開始するツールで渡せるのは input だけ |
hello___StartExecution に {"who": "agent"} | 実行ARNと、開始の時刻 |
hello___DescribeExecution に実行ARNと includedData の ALL_DATA | ステータスが SUCCEEDED、出力が Hello from Step Functions |
includedData を付けないと、出力は返らず、ステータスなどの情報だけが返ります。CloudTrailには、呼び出し元としてGatewayのサービスロールが記録されます。3
どんな仕事に向くか
AWSの発表にある返金の例を、図にしました。1
返金の例。AIが実行を開始したあとは、ステートマシンが決めた順にステップを進めます
Standard(標準)タイプのステートマシンは、最長1年実行できます。AIのセッションが終わっても、仕事を続けられます。進んだステップは、すべて実行履歴に残ります。2
Expressタイプは、StartSyncExecution で実行を開始し、同じ呼び出しで結果を受け取れます。ただし、実行のステータスの確認・停止と、途中で止めて結果を待つ設定(コールバック)は使えません。2
| したいこと | Standard | Express |
|---|
| 実行を開始し、同じ呼び出しで結果を受け取る | できない | できる |
| 実行のステータスの確認と、実行の一覧 | できる | できない |
| 実行を止める | できる | できない |
| コールバックを待って、結果を受けて進む | できる | できない |
8月29日にQiitaに載った記事では、Slackへ投稿する処理をGatewayのツールにして試しています。今回の発表より2か月前で、Step FunctionsではなくLambdaをツールにしています。8
試した範囲では、利用者の発言に投稿を促す言葉が無いと、システムプロンプトで投稿を指示してもツールは呼ばれませんでした。書いた人は、毎回必ず実行したい処理はAIに呼ばせず、決めた流れの中に組み込むのがよさそうだとしています。8
権限の絞り方と、IAMで絞れない3つの操作
実行を一時停止して、AIが作業した結果を待たせたいときは、.waitForTaskToken でコールバックを待ちます。一時停止するときに、Step Functionsがタスクトークンという文字列を作ります。2
この文字列を、AIを動かすアプリケーションに届ける処理(SQSのキューや、Step Functionsのアクティビティ機能など)は、自分で組みます。AIは作業を終えたら SendTaskSuccess で結果を返し、ステートマシンが先へ進みます。2
終えられないときは SendTaskFailure で失敗を返します。長い作業の途中では、SendTaskHeartbeat で作業中であることを知らせます。コールバックを待つ設定は、Standardタイプだけで使えます。2
この3つの操作は、特定の実行だけに対象を絞れず、IAMでリソースを「*」(すべて)にして許可するしかありません。正しい文字列を持っていれば、どのAIでもそのタスクを終えられます。2
この文字列は秘密として扱い、そのタスクを担当するAIにだけ送るよう、AWSは勧めています。2 上長の承認のように人が決めるステップなら、タスクトークンを人の承認の画面にだけ届け、AIには渡さないこともできると考えます。
1つのGatewayにつないだターゲットは、どれも同じサービスロールを使います。ステートマシンごとにIAMの権限の範囲を変えたいなら、Gatewayを分けます。3
AIに渡すものを、承認した分だけに絞る別の例は、Bitwarden Agent Accessの記事にまとめました。
当サイトのAI秘書でも、振込データの作成は引き受け、振込そのものは依頼したお客様が承認する形にしています(AI秘書の請求・経理)。
料金と、使えるリージョン
Step FunctionsとAgentCore Gatewayの通常の料金がかかります。1
| 項目 | 料金(Step Functionsは米国東部(バージニア北部)の例) |
|---|
| Standardの状態遷移(ステップを1つ実行するごとに1回。再試行も数える) | 1回0.000025ドル。無料利用枠は月4,000回 |
| Expressの実行 | リクエスト数と、実行時間・メモリの量 |
| GatewayのAPI呼び出し(ツール一覧の取得・ツールの実行など) | 1,000回で0.005ドル |
無料利用枠の月4,000回は、アカウントの全ステートマシンの状態遷移を合わせた数から引かれます。返金の申し出が月1,000件あり、ほかにステートマシンが無い場合を計算すると、次のとおりです。
| 前提 | 回数 | 料金 |
|---|
| 1件あたり状態遷移が5回 | 月5,000回(無料利用枠を引いて1,000回) | 0.025ドル |
| 1件あたりGatewayの呼び出しが2回(実行の開始・ステータスの確認) | 月2,000回 | 0.01ドル |
ツール一覧の取得も、Gatewayの呼び出しに数えます。AIを動かす生成AIの利用料は、この表とは別にかかります。56
AgentCore Gatewayは、東京リージョンでも使えます。Gatewayが呼べるのは同じリージョンのStep Functionsだけなので、ステートマシンとGatewayは同じリージョンに作ります。37
社内のデータについての質問に答えるAIを、AgentCoreで作った会社の例は、Bayerの事例の記事にあります。
試す前に確かめること
開発を頼む会社や、社内のAWSの管理者と、次のことを確かめておきましょう。
| 確かめること | 理由 |
|---|
| 毎回必ず実行したい処理を、AIの判断に任せていないか | AIが呼ばない限り、実行は開始されません |
| StandardとExpressのどちらのタイプにしたか | ステータスの確認・停止・コールバックを待つ設定は、Standardだけです |
| 実行ARNを受け取る操作(ステータスの確認・実行履歴・停止)を、公開するステートマシンの実行だけに絞ったか | この3つは、サービスロールのIAMポリシーで絞ります |
| タスクトークンを誰に届けるか決めたか | 持っていれば、どのAIでもタスクを終えられます |
AIがツールを呼ぶときの流れと、呼ぶ前の承認の設定は、AIがほかのツールを使う仕組みの記事にまとめました。
承認の要る仕事をAIに任せられるか確かめる
どのステップをAIに任せ、どこで人が承認するかは、無料AI業務診断(30分・オンライン)で一緒に整理できます。
返金や支払いのように順番を変えてはいけない仕事を1つ選び、いまの流れと承認する人を、相談のページからお知らせください。