← 기사 목록
日本語https://qiita.com/tags/ai/feed

agentcore createで生成されるファイルの正体を理解する【Bedrock AgentCore】

추출된 키워드

32
agentcore create·5Bedrock AgentCore·5Amazon Bedrock·4agentcore.json·4Claude Code·3AIコーディングアシスタント·3AGENTS.md·3aws-targets.json·3global.anthropic.claude-sonnet-4-5-20250929-v1:0·3Google Gemini·3OpenAI·3Anthropic·3Strands Agents SDK·3Python·3CDK·3MCP·3pyproject.toml·2venv·2Agent Inspector·2S3·2CloudFormation·2AG-UI·2A2A·2Container·2Direct Code Deploy·2OpenAI Agents·2BedrockAgentCoreApp·2BedrockModel·2TypeScript·2LangChain·2LangGraph·2Google ADK·2

원문

9,053
agentcore createで生成されるファイルの正体を理解する【Bedrock AgentCore】

はじめに

みなさんは

agentcore create
を実行したことはあるだろうか。

以前の記事で、AgentCoreのCLIにはpip版(Legacy)とnpm版(現行)の2種類があることを書いた。
(以前の記事はこちら)
https://qiita.com/toshi-arch/items/5a791548dc4ccadc9ab0

npm install -g @aws/agentcore

これが現在の正しいインストール方法。

で、インストールしたあと

agentcore create
を実行すると...いくつかの質問に答えただけで、見たことないファイルたちがわーっと生成される。

「動いてるからまあいいか」って思いながらも、内心は「このファイル、何??」だった...。

この記事では、その生成されたテンプレートファイルが何者なのかを一つずつ整理する。

agentcore create
を実行すると何が聞かれるか

対話モードで実行するとウィザード形式で質問が来る。

agentcore create

まず「プロジェクト名」を聞かれ、次に「今すぐエージェントを追加するか?」と聞かれる。Yes を選ぶと以下の順に質問が続く。

ステップ選択肢
エージェント名英数字・最大36文字
エージェントのタイプCreate new agent / Bring my own code / Import from Bedrock Agents
言語Python(TypeScript は coming soon)
ビルド方式Direct Code Deploy / Container
プロトコルHTTP(デフォルト)/ MCP / A2A / AG-UI
フレームワークStrands Agents SDK / LangChain + LangGraph / Google ADK / OpenAI Agents
モデルプロバイダーAmazon Bedrock / Anthropic / OpenAI / Google Gemini
メモリNone / Short-term memory / Long-term and short-term

全部答えると確認画面が出て、Enterで生成が始まる。

全部デフォルト(Python / Strands / Bedrock / メモリなし / Direct Code Deploy / HTTP)でよければ

--defaults
フラグでウィザードをスキップできる。
agentcore create --name MyAgent --defaults

生成されるファイル構成

実際に生成されるのはこんな構成だった。

MyAgent/
├── AGENTS.md               # AIコーディングアシスタント向けの説明ファイル
├── README.md
├── agentcore/              # 設定・インフラ系(触るのはJSONだけ)
│   ├── agentcore.json      # プロジェクト全体の設計図
│   ├── aws-targets.json    # デプロイ先のAWSアカウント・リージョン
│   ├── .env.local          # APIキーなど(gitignore済み)
│   ├── .llm-context/       # AI向けのTypeScript型定義(触らない)
│   └── cdk/                # CDKプロジェクト(触らない)
└── app/
    └── MyAgent/            # エージェントの実装本体(ここを育てる)
        ├── main.py
        ├── pyproject.toml
        ├── model/
        │   └── load.py     # モデルの設定
        └── mcp_client/
            └── client.py   # MCPクライアントの設定

ドキュメントには載っていないファイルもいくつかある。一つひとつ見ていこうと思う。

各ファイルの正体

agentcore/agentcore.json
── このプロジェクトの"設計図"

一番重要なファイル。エージェントの構成がすべてここに書かれている。

{
  "$schema": "https://schema.agentcore.aws.dev/v1/agentcore.json",
  "name": "MyAgent",
  "version": 1,
  "managedBy": "CDK",
  "tags": {
    "agentcore:created-by": "agentcore-cli",
    "agentcore:project-name": "MyAgent"
  },
  "runtimes": [
    {
      "name": "MyAgent",
      "build": "CodeZip",
      "entrypoint": "main.py",
      "codeLocation": "app/MyAgent/",
      "runtimeVersion": "PYTHON_3_14",
      "networkMode": "PUBLIC",
      "protocol": "HTTP"
    }
  ],
  "memories": [],
  "credentials": [],
  "evaluators": [],
  "onlineEvalConfigs": [],
  "agentCoreGateways": [],
  "policyEngines": [],
  "configBundles": [],
  "abTests": [],
  "httpGateways": []
}

agentcore add memory
とか
agentcore add gateway
を実行すると、
memories
agentCoreGateways
の配列に記述が追加されていく仕組みになっている。つまり CLIで操作した内容の結果がすべて反映される設計図 だと思う。

agentcore deploy
を実行したとき、CLIはまずこのファイルを読んで「何をAWSに作ればいいか」を判断している。

agentcore/aws-targets.json
── どのAWSアカウント・どのリージョンにデプロイするか

[]

生成直後はこれだけ...。空の配列だった。

agentcore deploy
を初めて実行したときに、AWSアカウントIDとリージョンが自動で書き込まれるようになっているようだ。

agentcore/.env.local
── APIキーの置き場所

BedrockではなくAnthropic・OpenAI・Geminiをモデルプロバイダーに選んだ場合、APIキーをここに書く。

gitignoreされているのでリポジトリには含まれない。安心して書ける。

Bedrockを使う場合はAWSの認証情報(

~/.aws/credentials
など)で動くので、ここは空のままでいい。

app/MyAgent/main.py
── エージェントの実装本体

フレームワーク(今回はStrands)のスターターコードが入った状態で生成される。

from strands import Agent, tool
from bedrock_agentcore.runtime import BedrockAgentCoreApp
from model.load import load_model
from mcp_client.client import get_streamable_http_mcp_client

app = BedrockAgentCoreApp()

# サンプルツールの定義
@tool
def add_numbers(a: int, b: int) -> int:
    """Return the sum of two numbers"""
    return a + b

# エントリーポイント
@app.entrypoint
async def invoke(payload, context):
    agent = Agent(model=load_model(), tools=[add_numbers])
    stream = agent.stream_async(payload.get("prompt"))
    async for event in stream:
        if "data" in event and isinstance(event["data"], str):
            yield event["data"]

if __name__ == "__main__":
    app.run()

(実際のコードは少し長いので要点だけ抜粋)

ポイントは2つ。

  • BedrockAgentCoreApp()
    でAgentCoreのランタイムに乗せるためのラッパーを作る
  • @app.entrypoint
    デコレータをつけた関数が、AgentCoreから呼ばれるエントリーポイントになる

ここが唯一、自分でゴリゴリ書き換えていく場所。他のファイルは基本CLIが管理してくれる。

app/MyAgent/model/load.py
── モデルの設定

from strands.models.bedrock import BedrockModel

def load_model() -> BedrockModel:
    return BedrockModel(model_id="global.anthropic.claude-sonnet-4-5-20250929-v1:0")

main.py
から呼ばれている。使うモデルを変えたいときはここのモデルIDを変更する。

app/MyAgent/pyproject.toml
── Python依存関係の管理

[project]
dependencies = [
    "aws-opentelemetry-distro",
    "bedrock-agentcore >= 1.0.3",
    "strands-agents >= 1.13.0",
    "mcp >= 1.19.0",
    ...
]

agentcore dev
を実行したときにこのファイルを読んで、Python仮想環境(venv)が自動でセットアップされる。

AGENTS.md
── AIコーディングアシスタント向けのコンテキストファイル

これが一番「なんだこれ!!」だった。

Claude CodeなどのAIコーディングアシスタントがこのプロジェクトを理解するための説明書になっている。

agentcore.json
の構造・スキーマ・CLIコマンドの使い方などが書かれていて、AIがこのファイルを読むことで正しいコード補助ができるようになる設計だと思う。

agentcore/.llm-context/
── AI向けのTypeScript型定義

同じくAIアシスタント向けに用意されたTypeScriptの型定義ファイル群。

agentcore.json
の各フィールドにどんな値が入るか(型・バリデーション制約など)が書かれている。

AGENTS.md
にも「DO NOT EDIT THESE FILES」と書いてあるとおり、自分で触る必要はない。

ファイルたちが実際にどう使われるか

生成されたファイルが各コマンドでどう動くかを整理するとこうなる。

agentcore dev
  └─ pyproject.toml を読んで venv をセットアップ
  └─ main.py を実行してローカルサーバー起動(ポート8080)
  └─ ブラウザで Agent Inspector を開く

agentcore deploy
  └─ agentcore.json を読んで「何を作るか」を確認
  └─ aws-targets.json を読んで「どこに作るか」を確認
  └─ app/ のコードをzip化してS3へ(Direct Code Deployの場合)
  └─ CDKでCloudFormationスタックを作成・更新

main.py
を育てて →
agentcore dev
でローカルテスト →
agentcore deploy
でAWSへ、というのが基本の開発ループ。

おわりに

正直、最初は「なんかファイルがいっぱい生成されたな...」くらいにしか思っていなかった。

でも一つひとつ調べてみると、役割分担がはっきりしていて理にかなった構成だとわかった!!

  • 設定は
    agentcore.json
    に集約
  • コードは
    app/
    の中だけ触ればいい
  • AIコーディングアシスタントへの配慮まで組み込まれている

この構造を知っているだけで、次に

agentcore add
を実行したとき「あ、
agentcore.json
が更新されるんだな」と予測できるようになる。同じように「ファイルの正体がよくわからない」と思っていた人の参考になれば!!