Amazon Bedrock AgentCore は 2025/7/21 時点で Preview として提供されています。将来的に動作や仕様が変更される可能性があります。
2025/8/2 追記 Bedrock AgentCore Starter Toolkit v0.1.3 以降、CodeBuild での実行がデフォルトになっています。Starter Toolkit を使用しない場合やローカル端末でビルドを実行したい場合に本内容が参考になれば幸いです
はじめに
Amazon Bedrock AgentCore Runtime (以下、AgentCore Runtime) は ARM アーキテクチャが採用されており、実行に必要となるコンテナイメージも ARM アーキテクチャ向けのイメージをビルドする必要があります。
Amazon Bedrock AgentCore requires ARM64 architecture for all deployed agents.
そのため (タイトルで Windows と書きましたが、正確には) AMD64 アーキテクチャのマシンではこの違いを意識する必要があります。
CPU アーキテクチャの不一致エラー
前述の理由により、AgentCore Runtime 用のコンテナイメージを AMD64 アーキテクチャのマシンでビルドすると exec format error が発生して正常に完了できません。例えば Bedrock AgentCore Starter Toolkit でも次のようなエラーに遭遇することがあります。
$ agentcore launch
Launching Bedrock AgentCore (local mode)...
Launching Bedrock AgentCore agent 'my_agent' locally
Build: #8 0.601 exec /bin/sh: exec format error
Build: #8 ERROR: process "/bin/sh -c python -m pip install --no-cache-dir -e ." did not complete successfully: exit code: 255
Build: 0.601 exec /bin/sh: exec format error
Build: WARNING: current commit information was not captured by the build: failed to read current commit information with git rev-parse --is-inside-work-tree
Build: ERROR: failed to solve: process "/bin/sh -c python -m pip install --no-cache-dir -e ." did not complete successfully: exit code: 255
❌ Build failed: WARNING: current commit information was not captured by the build: failed to read current commit information with git rev-parse --is-inside-work-tree Dockerfile:13 -------------------- 11 | 12 | # Install current directory as package 13
| >>> RUN python -m pip install --no-cache-dir -e . 14 | 15 | -------------------- ERROR: failed to solve: process "/bin/sh -c python -m pip install --no-cache-dir -e ." did not complete successfully: exit code: 255
解決策
1. QEMU によるマルチプラットフォームビルド
QEMU はオープンソースの仮想化ソフトウェアで、異なるアーキテクチャのハードウェアエミュレーションが可能です。Docker Desktop では、デフォルトで QEMU によるマルチプラットフォームイメージのビルドと実行がサポートされています。
Docker on WSL2 の場合、手動で QEMU をインストールできます。
私の手元の環境:
- Windows 11
- WSL2 (Ubuntu 24.04.2 LTS)
- Docker 28.1.1+1
QEMU をインストールする前に Builder インスタンスの状況を確認します。
$ docker buildx ls
NAME/NODE DRIVER/ENDPOINT STATUS BUILDKIT PLATFORMS
default* docker
\_ default \_ default running v0.21.0 linux/amd64 (+4), linux/386
Default の builder が存在しますが、ビルド可能なターゲットプラットフォームは linux/amd64, linux/386 のみです。
次のコマンドで QEMU をインストールして、linux/arm64 を有効化します。
$ docker run --privileged --rm tonistiigi/binfmt --install arm64
installing: arm64 OK
{
"supported": [
"linux/amd64",
"linux/amd64/v2",
"linux/amd64/v3",
"linux/amd64/v4",
"linux/arm64",
"linux/386"
],
"emulators": [
"WSLInterop-late",
"qemu-aarch64"
]
}
Default の Builder インスタンスに linux/arm64 が追加されていることを確認します。
$ docker buildx ls
NAME/NODE DRIVER/ENDPOINT STATUS BUILDKIT PLATFORMS
default* docker
\_ default \_ default running v0.21.0 linux/amd64 (+4), linux/arm64, linux/386
あとはドキュメント通りにビルドを実行すれば、AMD64 な Windows 環境でもビルドが通るはずです。
Starter Toolkit
agentcore launch
Launching Bedrock AgentCore (cloud mode)...
Launching Bedrock AgentCore agent 'my_agent' to cloud
Build: WARNING: current commit information was not captured by the build: failed to read current commit information with git rev-parse --is-inside-work-tree
Docker image built: bedrock_agentcore-my_agent:latest
Uploading to ECR...
以降省略
Starter Toolkit なし
Starter toolkit を使用せず、直接 Docker でビルドを行う場合は、--platform オプションで linux/arm64 を指定して、マルチプラットフォームビルドを実行します。
$ docker buildx build --platform linux/arm64 -t 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-strands-agent:latest --push .
2. クラウドの ARM64 マシンでビルドする
Docker Build Cloud などマルチプラットフォームに対応した外部サービスでビルドを行うのも一つの手段です。
Bedrock AgentCore Starter Toolkit の v0.1.1 で AWS CodeBuild の AArch64(ARM Architecture 64-bit)上でビルドをおこなうための --codebuild オプションが追加されました。
$ agentcore lauch --codebuild
CodeBuild プロジェクトが自動で作成され、イメージのビルド~デプロイまで完了します。
v0.1.1 ではバージニア北部リージョンで S3 バケットの作成に失敗する不具合があります。問題が修正された v0.1.2 以降をご使用ください。
$ agentcore launch --codebuild
Launching Bedrock AgentCore (codebuild mode)...
Starting CodeBuild ARM64 deployment for agent 'my_agent'
Ensuring ECR repository exists...
Found credentials in environment variables.
Creating CodeBuild execution role...
Using existing CodeBuild execution role: arn:aws:iam::123456789012:role/BedrockAgentCoreCodeBuildRole-us-west-2-my_agent
Waiting for IAM role propagation...
Uploading source code to S3...
Using .dockerignore with 44 patterns
Uploaded source to S3: my_agent/20250720-192514.zip
Creating/updating CodeBuild project...
Updated CodeBuild project: bedrock-agentcore-my_agent-builder
Starting CodeBuild...
Started CodeBuild: bedrock-agentcore-my_agent-builder:ca3d1d5c-890a-4ede-8877-e695073a8476
Waiting for CodeBuild to complete...
Starting CodeBuild monitoring...
🔄 QUEUED started (total: 0s)
✅ QUEUED completed in 5.1s
🔄 PROVISIONING started (total: 5s)
✅ PROVISIONING completed in 5.1s
🔄 PRE_BUILD started (total: 10s)
✅ PRE_BUILD completed in 10.3s
🔄 BUILD started (total: 21s)
✅ BUILD completed in 36.0s
🔄 POST_BUILD started (total: 57s)
✅ POST_BUILD completed in 5.1s
🔄 COMPLETED started (total: 62s)
✅ COMPLETED completed in 0.0s
🎉 CodeBuild completed successfully in 1m 1s
CodeBuild completed successfully
Deploying to Bedrock AgentCore...
Found credentials in environment variables.
Creating agent 'my_agent' with image URI: 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-strands-agent:latest
Successfully created agent 'my_agent' with ID: my_agent-98Mk193jvc, ARN: arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my_agent-98Mk193jvc
Agent created/updated: arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my_agent-98Mk193jvc
Polling for endpoint to be ready...
Agent endpoint: arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my_agent-98Mk193jvc/runtime-endpoint/DEFAULT
✓ CodeBuild completed: bedrock-agentcore-my_agent-builder:ca3d1d5c-890a-4ede-8877-e695073a8476
✓ ARM64 image pushed to ECR: 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-strands-agent:latest
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── CodeBuild Deployment Complete ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ CodeBuild ARM64 Deployment Successful! │
│ │
│ Agent Name: my_agent │
│ CodeBuild ID: bedrock-agentcore-my_agent-builder:ca3d1d5c-890a-4ede-8877-e695073a8476 │
│ Agent ARN: arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my_agent-98Mk193jvc │
│ ECR URI: 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-strands-agent:latest │
│ │
│ ARM64 container deployed to Bedrock AgentCore. │
│ │
│ You can now check the status of your Bedrock AgentCore endpoint with: │
│ agentcore status │
│ │
│ You can now invoke your Bedrock AgentCore endpoint with: │
│ agentcore invoke '{"prompt": "Hello"}' │
│ │
│ 📋 Agent logs available at: │
│ /aws/bedrock-agentcore/runtimes/my_agent-98Mk193jvc-DEFAULT │
│ /aws/bedrock-agentcore/runtimes/my_agent-98Mk193jvc-DEFAULT/runtime-logs │
│ │
│ 💡 Tail logs with: │
│ aws logs tail /aws/bedrock-agentcore/runtimes/my_agent-98Mk193jvc-DEFAULT --follow │
│ aws logs tail /aws/bedrock-agentcore/runtimes/my_agent-98Mk193jvc-DEFAULT --since 1h │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
以上です。
参考になれば幸いです。
