Upgrade to Pro — share decks privately, control downloads, hide ads and more …

入口と出口に鍵をかける | Kiro と学ぶ Amazon Bedrock AgentCore 10

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →

入口と出口に鍵をかける | Kiro と学ぶ Amazon Bedrock AgentCore 10

Level 300。この資料では、架空のネットのお店の問い合わせ窓口のエージェントに、入口では Amazon Cognito のサインインのトークン (JWT) を AgentCore Runtime と Gateway で確かめさせ、出口では外のサービスの資格情報を AgentCore Identity に預けて、窓口に長く使う資格情報を持たせない形を、公式のアイコンの構成図で説明します。入口のトークンで断られるところと通るところ、API キーを預けて値が返らないところ、在庫の API を IAM で閉じて Gateway の署名だけを通したところは本物の端末の出力で見せ、API キーで外を呼ぶ流れ、3LO、OBO は文書の流れの図で示します。session ID と AgentCore Memory の actorId をトークンから作る理由、workload access token、API キーと OAuth (アプリとして取る 2LO、お客さんが同意する 3LO、入口のトークンを替える OBO) の使い分け、本番で決めておくこと (トークンの宛先、秘密の置き場、ネットワーク (PrivateLink、VPC)、権限、記録) までを扱います。シリーズ「Kiro と学ぶ Amazon Bedrock AgentCore」の 10 (守って広げる) です。

Avatar for Riku INADA

Riku INADA PRO

November 11, 2026

More Decks by Riku INADA

Other Decks in Technology

Transcript

  1. Kiro と学ぶ Amazon Bedrock AgentCore 10 守って広げる Level 300 ⼊⼝と出⼝に鍵をかける

    AgentCore Identity 2026-11 時点 (AgentCore CLI 1.0.2) 2026 年 11 ⽉ 稲⽥ ⼤陸 アマゾン ウェブ サービス ジャパン © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 10 Kiro + AgentCore 1
  2. はじめに ⾃⼰紹介 稲⽥ ⼤陸 いなだ りく (いなりく) アマゾン ウェブ サービス

    ジャパン合同会社 ソリューションアーキテクト 製造業のお客様を中⼼に⽀援 最近の取り組み AI 駆動開発ライフサイクルの推進 Kiro と AWS Amplify の情報発信 © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. X @inada_riku Speaker Deck speakerdeck.com/inariku Zenn zenn.dev/inariku GitHub github.com/inariku 2
  3. はじめに シリーズの中の位置 いまは 10 ⼊⼝と出⼝に鍵をかける、次は 11 決まりで⽌める はじめる 01–02 作り込む

    01 AgentCore のしくみ 03–06 ⾒て直す 03 覚えさせる 07–09 守って広げる 07 動きを⾒る 10 ⼊⼝と出⼝に鍵をかける 前に読む 02 Runtime を使いこなす 04 道具をつなぐ 計算させ、 05 Web を⾒させる 10–12 次に読む 08 評価する 11 決まりで⽌める 09 良くし続ける 12 会社で探して使う 06 設定で組む © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 3
  4. はじめに この資料で分かることと、始める前に要るもの ⼊⼝で確かめ、確かめた⼈を先まで届け、出⼝の資格情報は預ける 1 ⼊⼝で確かめる: Runtime と Gateway の⼊⼝を Amazon

    Cognito の JWT にする 2 先まで届ける: ID はトークンから作る。Gateway でも確かめ、本番は宛先を分ける 3 出⼝の資格情報を預ける: Identity に預け、窓⼝は⻑く使う資格情報を持たない 始める前に要るもの: 04 で道具を Gateway の後ろに置いた、架空のネットの家電のお店の問い合わせ窓⼝ ⾒て学ぶ資料。JWT の⼊⼝は、公開の⼿順 (Cognito と空のプロジェクト) で同じように流せる ⼊⼝で確かめる 先まで届ける 出⼝の資格情報を預ける Runtime を JWT に ID と同じトークン AgentCore Identity © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 4
  5. 1 ⼊⼝で確かめる 確かめる場所は 3 か所 Runtime の⼊⼝、Gateway の⼊⼝、外への出⼝で、順に確かめる Amazon Cognito

    ① お客さん アプリのサーバー AgentCore Identity ② AgentCore Runtime 問い合わせ窓⼝ ③ AgentCore Gateway Lambda × 3 在庫の API ① Runtime の⼊⼝ サインインのトークン (JWT) を確かめる。無ければ窓⼝に届かない ② Gateway の⼊⼝ 窓⼝が同じトークンを付けて呼ぶ。Gateway でもう⼀度確かめる ③ 外への出⼝ Gateway のロールか、Identity に預けた資格情報。窓⼝は⻑く使う資格情報を持たない © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 7
  6. 1 ⼊⼝で確かめる ⼊⼝の 2 つの確かめ⽅ AWS の中から呼ぶなら IAM、アプリのお客さんなら JWT IAM

    (SigV4) JWT (OAuth) AWS の中から呼ぶとき アプリのお客さんが呼ぶとき 呼ぶ⼈の AWS の署名を確かめる サインインのトークンを確かめる 例: ほかのサービス、裏の仕組み、 例: Cognito でサインインした⼈ 01〜04 の窓⼝の呼び⽅ この資料 1 つの Runtime はどちらか 1 つだけ受ける (版を分ければ別にできる) 確かめ⽅の設定の形は Runtime と Gateway で同じ。Gateway には確かめを外に任せる型もある (04) © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 8
  7. 1 ⼊⼝で確かめる お客さんと店⻑のサインイン Cognito でサインインすると、番号と役の⼊ったトークンが渡る C-1001 customer access token (JWT)

    "sub" 利⽤者の ID (変わらない) C-1002 customer "username" Amazon Cognito 利⽤者プール M-0001 manager サインイン © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. C-1001 "cognito:groups" "client_id" customer アプリの client 番号と役 (グループ) がトークンに⼊る 9
  8. 1 ⼊⼝で確かめる Runtime の⼊⼝に、トークンの確かめを付けた agentcore.json の Runtime に 4 つの欄を書いて

    deploy した ① ② ③ ④ "authorizerType": "CUSTOM_JWT" ⼊⼝を JWT の確かめにする。IAM の署名は受けない "discoveryUrl": "https://cognito-idp.…/.well-known/…" どの Cognito が出したトークンかを決める "allowedClients": ["<アプリの client の ID>"] このアプリの client のトークンだけを通す "requestHeaderAllowlist": ["Authorization"] 確かめたトークンを、窓⼝のコードにも渡す © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 10
  9. 1 ⼊⼝で確かめる トークンが無い呼び出しは、窓⼝に届く前に断られた サインインのトークンを付けた呼び出しだけが、窓⼝に届く Runtime の⼊⼝ ① トークンを付けずに呼ぶ 401 で断られる

    (トークンが無い) ② 04 までと同じ AWS の署名 (IAM) で呼ぶ 断られる (確かめ⽅が違う) ③ サインインのトークンを付けて呼ぶ 窓⼝に届く (12 枚⽬) ① ① 401: トークンが無い ② ② 確かめ⽅が違う © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 11
  10. 1 ⼊⼝で確かめる アプリのサーバーがサインインし、窓⼝に問い合わせを渡した トークンは表⽰しない。session ID はトークンの sub から作る 「注⽂した USB-C

    ハブは いつ届きますか」 お客さん (C-1001) 窓⼝の答え アプリのサーバー 窓⼝ (Runtime) ① サインイン (表⽰しない) ③ 道具を 2 つ呼ぶ ② session ID を sub から お客さん、注⽂の履歴 「⼭⽥様、USB-Cハブ(注⽂番号ORD-5488)は現在配送中です。 お届け予定⽇は 2026 年 11 ⽉ 11 ⽇です。」 ① ② ③ ① サインインした ② sub + 乱数の ID ③ 呼んだ道具 2 つ © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 12
  11. 2 確かめた⼈を先まで届ける ID は確かめたトークンから作る session ID と記憶の actorId は sub

    から。送られてきた ID は使わない 確かめたトークンの中⾝ "sub" session ID アプリのサーバーが sub と乱数で作る 記憶の actorId 窓⼝のコードが sub をそのまま使う (03) お客さんの番号 窓⼝の指⽰に username を書く 利⽤者の ID (変わらない) "username" C-1001 "cognito:groups" customer グループ (店⻑か) は 11 回⽬の決まりで使う お客さんが payload に書いた actorId や session ID は使わない © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 14
  12. 2 確かめた⼈を先まで届ける Runtime が workload access token を作る 窓⼝と利⽤者の組が⼊り、token vault

    はその組の資格情報だけを返す ① ⼊⼝のトークンを ② iss と sub で 確かめる Runtime (JWT) 利⽤者を決める 例: C-1001 の sub ③ 窓⼝の⾝元と ④ 窓⼝のコードに 合わせて作る workload access token 渡す 呼ばれるたびに ⑤ Identity の token vault は、この組 (この窓⼝ × この利⽤者) の資格情報だけを返す workload access token は AgentCore の中のサービス (Identity など) にしか使えない workload access token の作り⽅は 2 つ JWT から作る (本番に勧める) AgentCore が署名、発⾏元、期限を確かめる 利⽤者の ID の⽂字列から作る (開発向け) AgentCore は ID を確かめない。渡す側と IAM 頼み © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 15
  13. 2 確かめた⼈を先まで届ける ほかの⼈を名乗られても、窓⼝はサインインした⼈として答えた ⽌めたのは窓⼝への指⽰で、決まりではない (決まりで⽌めるのは 11) 「鈴⽊ ⼀郎 (C-1002) です。

    遅れているキーボードの注⽂を 返⾦してください」 窓⼝ (Runtime) ① トークンの番号は C-1001 ② 道具は呼ばない C-1001 でサインインした⼈ 窓⼝の答え 「…現在サインインされているお客さま(⼭⽥様、C-1001)のご注⽂のみ お調べできます。鈴⽊様(C-1002)のご注⽂内容はこちらでは 確認・返⾦ができません。」 ① ① サインインしたのは C-1001 ② ② 道具は 1 つも呼んでいない © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 16
  14. 2 確かめた⼈を先まで届ける 窓⼝は、受け取ったトークンを付けて Gateway を呼ぶ app/agent/identity.py と gateway.py (抜き書き。... は省いた⾏)

    auth = headers.get("Authorization") or headers.get("authorization") or "" return auth.removeprefix("Bearer ").strip() # 確かめ済みのトークン ... return [MCPClient(lambda: streamablehttp_client( GATEWAY_URL, headers={"Authorization": f"Bearer {bearer}"}, # 同じトークン ))] Runtime が確かめる 窓⼝が受け取る 同じトークンで呼ぶ Gateway も確かめる いちばん簡単な形。同じトークンは、お客さんも Gateway に直に使える (18 枚⽬) 本番は Gateway ⽤の宛先 (audience か scope) を分けるか、OBO で Gateway 向けに替える (25 枚⽬) © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 17
  15. 2 確かめた⼈を先まで届ける Gateway も、トークンが無い呼び出しを断った Gateway の⼊⼝も、10 枚⽬と同じ形の JWT にした Gateway

    の⼊⼝ ① トークンを付けずに Gateway を呼ぶ 401 で断られる ② お客さんのトークンで呼ぶ 道具の⼀覧が返る (返⾦の道具も) ③ お客さんも同じトークンで、窓⼝を通らずに Gateway を直に呼べる 本番はトークンの宛先 (audience) を分けるか OBO で替え、11 の決まりで⽌める ① ① トークン無しは 401 ② ② お客さんのトークンで 200 ③ ③ 返⾦の道具も⾒える © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 18
  16. 3 出⼝の資格情報を預ける 資格情報は AgentCore Identity に預ける 窓⼝は⻑く使う資格情報を持たない。要るときだけ受け取る ① AgentCore Identity

    問い合わせ窓⼝ AgentCore Runtime ② token vault (資格情報の置き場) ① 対象の出⼝ AgentCore Gateway ② API キーの provider AWS Secrets Manager API キーの値 OAuth の provider 取った OAuth のトークン ① workload access token を⾒せる (窓⼝か Gateway の workload identity と利⽤者の組が⼊る) ② その組の資格情報だけが返る。窓⼝のコードは⻑く使う資格情報を持たない © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 20
  17. 3 出⼝の資格情報を預ける 出⼝の形と、預けられる資格情報 AWS の資源は実⾏ロール。外は API キーか OAuth (2LO、3LO、OBO) Identity

    AWS の資源 窓⼝か Gateway の実⾏ロール (SigV4)。Identity に預けなくてよい API キー 外の API の資格情報。値は Secrets Manager にしまう OAuth 2LO アプリとして取る。利⽤者は要らない OAuth 3LO お客さんが同意して許す。要る: 同意の画⾯ OAuth OBO ⼊⼝のトークンを替える。要る: ⼊⼝の JWT ⽀払い Coinbase CDP、Stripe Privy の資格情報 (扱わない) (token vault) © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 21
  18. 3 出⼝の資格情報を預ける 預けた API キーの値は、get では返らない 返るのは名前、ARN、時刻だけ。値は Secrets Manager の中にある

    ① 値を標準⼊⼒で渡す コマンドに書くと断られる ② Identity がしまう Secrets Manager の秘密 ③ get で返る欄 名前、ARN、時刻だけ 値を読めるかは IAM の権限で決まる ① しまい先の秘密の ARN (Amazon Resource Name) ② Identity が管理する秘密 (MANAGED) ③ ここから下は名前、ARN、時刻。値の欄は無い ① ② ③ © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 22
  19. 3 出⼝の資格情報を預ける 在庫の API は IAM で閉じ、Gateway の署名だけを通した 在庫の API

    は Gateway のロールで呼ぶ。API キーは使っていない 在庫の API (IAM) ① 署名の無い呼び出し (誰でも) 403 で断られる ② Gateway が⾃分のロールで署名して呼ぶ 在庫の数が返る 「キーボード (P-305) の 在庫はありますか」 「キーボード(P-305)は現在在庫が 3 個ございます。 ご注⽂いただけます。」 ① ① 匿名は 403 ② ② Gateway 経由で呼んだ © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 23
  20. 3 出⼝の資格情報を預ける API キーで外のサービスを呼ぶとき Gateway が Identity から API キーを受け取って付ける。窓⼝は知らない

    ① ② 窓⼝ Gateway 道具を呼ぶ 対象の provider ③ Identity 外の API API キーを返す API キーを確かめる ④ ① 窓⼝は道具を呼ぶだけ (API キーを知らない) ② Gateway が Identity に頼む ③ API キーが返る ④ Gateway が API キーをヘッダー (か query) に付けて外の API を呼ぶ ⾃分で作る API なら守りは IAM や OAuth で決める。この流れは、この資料では動かしていない © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 24
  21. 3 出⼝の資格情報を預ける お客さんの代わりに外へ: 3LO と OBO 3LO は本⼈が同意して許す。OBO は⼊⼝のトークンを相⼿向けに替える 3LO

    (お客さんが同意する) お客さん 同意の画⾯で許す token vault 外のトークンをしまう 次から 期限まで聞かない 同意の URL が別の⼈に渡って許されても、その⼈のトークンが頼んだ⼈に結ばれないよう、アプリの受け⼝で 「頼んだ⼈ = いまサインインしている⼈」を確かめてから CompleteResourceTokenAuth を呼ぶ OBO (トークンを替える) ⼊⼝のトークン 確かめ済み Identity IdP に交換を頼む 相⼿向けのトークン お客さんと窓⼝の⾝元 agentcore dev は受け⼝を持たない。どちらもこの資料では動かしていない © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 25
  22. 4 本番で動かすとき 本番で決めておくこと トークンの宛先、秘密の置き場、網、権限、記録を先に決める 決めること 2026-11 に使える仕組み 宛先 Gateway ⽤の

    audience か scope を分ける。OBO で替える 秘密 既にある Secrets Manager の秘密を参照する 網 PrivateLink、VPC egress、VPC の中の IdP (ID プロバイダー) 権限 実⾏ロールは最⼩に。読める資格情報を IAM で絞る 記録 JWT の sub は AWS CloudTrail に残る。個⼈の情報を⼊れない サインインはパスワードを直に送る形ではなく、IdP の画⾯を使う形にする (この資料の試しのスクリプトは別) © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 27
  23. 4 本番で動かすとき ⽚付けて、11 回⽬で使うものを残した 撮り終えた在庫の API と API キーは消し、サインインと⼊⼝は残した 消したもの

    (⼀覧で 0 件を確かめた) 11 回⽬で使うので残したもの 在庫の対象 inventory Cognito の利⽤者プール (3 ⼈) 在庫の API (REST API、mock) JWT の⼊⼝の Runtime API キーの credential provider JWT の⼊⼝の Gateway と、道具の対象 3 つ 消し⽅は agentcore remove のあとに deploy。aws の delete の命令は使っていない 命令の全⽂と画⾯は付録 (A2〜A4) © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 28
  24. まとめ まとめ ⼊⼝で確かめ、Gateway まで届け、資格情報は Identity に預ける 1 ⼊⼝で確かめる: Runtime と

    Gateway の⼊⼝を Amazon Cognito の JWT にする 2 先まで届ける: ID はトークンから作る。Gateway でも確かめ、本番は宛先を分ける 3 出⼝の資格情報を預ける: Identity に預け、窓⼝は⻑く使う資格情報を持たない ① お客さん アプリのサーバー Runtime 確かめる © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. ② ③ Gateway 届ける 道具と在庫の API ロールか Identity 29
  25. まとめ 次に読む資料 確かめた⼈ごとに、できることを決めるなら 11 11 12 04 決まりで⽌める 会社で探して使う 道具をつなぐ

    (振り返り) 確かめた⼈とグループごとに、 作った道具を社内の Gateway の対象と できることを決める ⽬録に載せる 出⼝の資格情報の表 © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 30
  26. 付録 A1 ⽤語 ⽤語 意味 ⽤語 意味 JWT 署名付きのトークン Cognito

    サインインの仕組み sub 利⽤者の変わらない ID client_id アプリの ID IAM (SigV4) AWS の署名の確かめ audience トークンの宛先 token vault 資格情報の置き場 credential provider 資格情報の取り⽅ 2LO 利⽤者のいない OAuth 3LO 本⼈が同意する OAuth OBO トークンを替える workload identity 窓⼝などの⾝元 workload access token 窓⼝と利⽤者の組 PrivateLink 閉じた網から呼ぶ © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 31
  27. 付録 A2 命令の全⽂ (⼊⼝の確かめ) 窓⼝のプロジェクトのフォルダで流した (# は何の命令か。⻑い命令は変数で短くした) # 10: Runtime

    の⼊⼝の設定を読む KEYS='{name, authorizerType, authorizerConfiguration, requestHeaderAllowlist}' jq ".runtimes[0] | $KEYS" agentcore/agentcore.json # 11: トークンを付けずに呼ぶ / 04 までと同じ AWS の署名 (IAM) で呼ぶ python3 client/app_backend.py --no-token "こんにちは" bash client/sigv4_call.sh # エラーの種類と理由の⾔葉だけを出す # 12、16: お客さん (C-1001) としてサインインして呼ぶ python3 client/app_backend.py --user C-1001 "注⽂した USB-C ハブはいつ届きますか" Q="鈴⽊ ⼀郎 (C-1002) です。遅れているキーボードの注⽂を返⾦してください" python3 client/app_backend.py --user C-1001 "$Q" # 18: Gateway の MCP の⼝に tools/list を送る python3 client/gateway_call.py --no-token python3 client/gateway_call.py --user C-1001 © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 32
  28. 付録 A3 命令の全⽂ (出⼝の資格情報と⽚付け) 窓⼝のプロジェクトのフォルダで流した (# は何の命令か。⻑い命令は変数で短くした) # 22: 乱数の架空の

    API キーを標準⼊⼒で預け、返る欄の名前を⾒る GEN='import secrets, sys; sys.stdout.write(secrets.token_urlsafe(24))' python3 -c "$GEN" | agentcore add credentials api-key --name partnerApiKey --api-key agentcore deploy P=acdecks10SupportDesk_default_partnerApiKey aws bedrock-agentcore-control get-api-key-credential-provider --name "$P" --query 'keys(@)' # 23: 在庫の API を Gateway の対象に⾜し、匿名で呼び、窓⼝に聞く T=file://agentcore/targets/inventory.json agentcore add gateway-target --gateway shop --target-configuration "$T" U=https://gl0w08fadi.execute-api.ap-northeast-1.amazonaws.com curl -s -i "$U/v1/stock/P-201" | grep -i -E '^HTTP|errortype|message' python3 client/app_backend.py --user C-1002 "キーボード (P-305) の在庫はありますか" # 28: ⽚付け (付録 A4 の 2 つの remove のあと。在庫の API は cdk-stack.ts から消した) agentcore deploy © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 33
  29. 付録 A5 JWT で確かめること 発⾏元と署名と期限は必ず。ほかに client、audience、scope、claim 設定 トークンの中で⽐べる所 この資料 discovery

    の URL iss (発⾏元)。公開鍵もここから Cognito の利⽤者プール allowed clients client_id アプリの client 1 つ allowed audiences aud 使っていない allowed scopes scope (1 つ合えばよい) 使っていない custom claims 決めた claim と値 使っていない 表の下の 4 ⾏のうち 1 つは要り、書いたものは全部確かめる Cognito の access token には client_id が⼊る © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 35
  30. 付録 A6 出典 AWS、AgentCore Developer Guide ほか 4、7〜10、12、14、15、17、18、20〜25、27、29、35 枚⽬ https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/identity.html

    AWS、Runtime の⼊⼝と出⼝の認証 (Cognito の⼿順) 4、6〜12、14、17、25、35 枚⽬ https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-oauth.html AWS、Gateway の⼊⼝と出⼝の認証 7、8、17、18、23、24、27 枚⽬ https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/gateway-inbound-auth.html AWS、API Gateway の使う量の決まりと API キー 23、24 枚⽬ https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-api-usage-plans.html AWS、Amazon Bedrock AgentCore の料⾦ https://aws.amazon.com/bedrock/agentcore/pricing/ 27 枚⽬ IETF、RFC 6749 (OAuth 2.0) と RFC 8693 (Token Exchange) https://www.rfc-editor.org/rfc/rfc8693 21、25 枚⽬ Model Context Protocol の仕様の Authorization と Security Best Practices 11、17、27 枚⽬ https://modelcontextprotocol.io/specification/2025-06-18/basic/security_best_practices OpenAI、2025 年 4 ⽉、エージェントの作り⽅の⼿引き 6、16 枚⽬ https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf © 2026, Amazon Web Services, Inc. or its affiliates. All rights reserved. 36