For the complete documentation index, see llms.txt. Markdown versions of all docs pages are available by appending .md to any docs URL.
AWS Bedrock AgentCore
Solo Enterprise for agentregistry を AWS Bedrock AgentCore ランタイムに接続し、エージェントと MCP サーバーを AgentCore にデプロイできるようにします。
このガイドでは、Solo Enterprise for agentregistry を AWS Bedrock AgentCore に接続し、レジストリからエージェントと MCP サーバーを AgentCore にデプロイできるようにする方法を説明します。完了すると、レジストリを AgentCore 環境に向ける Runtime リソースと、レジストリとデプロイ済みワークロードの間でトラフィックをルーティングするマネージドゲートウェイが用意されます。
始める前に
OIDC プロバイダーをセットアップします。このガイドでは、Keycloak をインストール済みであることを前提とします。General setup タブに従って、必要なレルム設定、クライアント、シークレットを含めて Keycloak をインストールしてください。
Solo Enterprise for agentregistry を Amazon EKS にインストールします。インストール後、現在のターミナルセッションで次の環境変数が設定されていることを確認します。
echo "AWS_REGION: $AWS_REGION" echo "AWS_ACCOUNT_ID: $AWS_ACCOUNT_ID" echo "KEYCLOAK_ISSUER: $KEYCLOAK_ISSUER"オプション: エージェントと MCP サーバー間の通信を支援し、ランタイム認可ポリシーを適用するためにマネージドゲートウェイを作成する場合は、Solo Enterprise for agentgateway のライセンスキーを取得します。キーを取得するには、アカウント担当者にお問い合わせください。
ステップ 1: ランタイム IAM ロールを設定する
CloudFormation テンプレートを生成し、アカウントにデプロイします。このテンプレートは、Solo Enterprise for agentregistry がユーザーに代わって Bedrock AgentCore リソースをデプロイおよび管理するために引き受ける IAM ロールと、必要なすべての IAM ポリシーを作成します。これらのポリシーには、Solo Enterprise for agentregistry が AgentCore にデプロイするエージェントと MCP サーバーのバンドルをステージングするために作成する S3 ソースバケットへのアクセスが含まれます。バケット名は are-<partition>-<hash>-<account-id>-<region> です。また、以前のバージョンで作成されたインストールが引き続き機能するように、テンプレートは以前のバージョンで使用されていた bedrock-agentcore-codebuild-sources-* と agentcore-* のバケット名も許可します。CloudFormation を使用すると、アカウントに作成されるすべてのリソースについて、レビューと監査が可能な定義を得られます。
AWS CloudFormation テンプレートを生成し、YAML ファイルに保存します。このテンプレートは、指定したアカウント ID にスコープされ、次の部分で構成される単一の IAM ロールを定義します。
- 信頼ポリシーは、ロールを引き受けられる主体を制御します。このポリシーは特定のユーザーやロールではなく AWS アカウント全体を信頼するため、EKS に Solo Enterprise for agentregistry をインストールしたときに選択した ID オプションに関係なく、同じテンプレートを使用できます。AWS は、次の条件が満たされた場合にのみ assume-role 呼び出しを許可します。呼び出し元 ID 自身のポリシーが、EKS インストール時に付与した
sts:AssumeRole権限を許可していること、かつ呼び出しにロールと一致する External ID が含まれていることです。External ID はarctlがこのロール用に生成して信頼ポリシーに埋め込むシークレット値であるため、ロール ARN へのアクセスを得た人でも、External ID も渡さなければロールを引き受けることはできません。Solo Enterprise for agentregistry は、ステップ 2 で Runtime リソースに追加する値に基づいて、各呼び出しで External ID を送信します。 - 権限ポリシーは、ロールが実行できる操作を制御します。このロールには、AWS 管理の
BedrockAgentCoreFullAccessポリシーと、AgentCore デプロイにも必要な S3、CloudWatch、Cognito、IAM アクセス用のインラインBedrockAgentCoreSupplementalAccessポリシーがアタッチされます。 - スタック出力は、後の手順で取得するロール ARN と External ID です。
arctl runtime setup bedrock-agent-core --aws-account-id $AWS_ACCOUNT_ID > cloudformation.yamlNote
デフォルトでは、テンプレートが生成するロールの名前は
AgentRegistryAccessRole-<suffix>です。サフィックスは 6 桁のランダムな 16 進文字で構成されます。AWS アカウントの命名規則に合わせるなど、自分でロール名を付けるには、--role-nameオプションを含めます。後でこのスタック用にテンプレートを再生成する場合に同じ名前を再度渡す必要があるため、選択した名前を控えておいてください。External ID と Role Name は CLI 出力に表示され、
cloudformation.yamlファイルにも埋め込まれます。ただし、External ID パラメーターにはNoEcho: trueが指定されているため、スタックを describe したりコンソールで表示したりすると、AWS によってマスクされます。後で使用できるように、この時点で CLI 出力から External ID を必ず控えておいてください。出力例:
# External ID: NzqfvveAy0XSEsL4ZtKcHR1li-3puJAbipQDQG8ylmg # Role Name: AgentRegistryAccessRole-a11111- 信頼ポリシーは、ロールを引き受けられる主体を制御します。このポリシーは特定のユーザーやロールではなく AWS アカウント全体を信頼するため、EKS に Solo Enterprise for agentregistry をインストールしたときに選択した ID オプションに関係なく、同じテンプレートを使用できます。AWS は、次の条件が満たされた場合にのみ assume-role 呼び出しを許可します。呼び出し元 ID 自身のポリシーが、EKS インストール時に付与した
External ID を環境変数に保存します。
<external-id>は、前の手順の値に置き換えます。export AWS_EXTERNAL_ID="<external-id>"オプション: デプロイする前にテンプレートを確認します。
cat cloudformation.yamlCloudFormation スタックをデプロイします。
スタックの名前を選択します。
export STACK_NAME="<stack-name>"AWS スタックを作成します。このテンプレートは IAM ロールを作成するため、
--capabilities CAPABILITY_NAMED_IAMフラグが必要です。CloudFormation テンプレートが IAM リソースを作成する場合、AWS は明示的な承認を求めます。コマンドが成功すると、CLI 出力にStackIdとOperationIdが表示されます。aws cloudformation create-stack \ --stack-name $STACK_NAME \ --template-body file://cloudformation.yaml \ --region $AWS_REGION \ --capabilities CAPABILITY_NAMED_IAM出力例:
{ "StackId": "arn:aws:cloudformation:us-west-2:1234567890:stack/agentregistry-cli-stack/1a1aaa11-1111-11a1-aa11-1111a1111aa1", "OperationId": "1aaa1a1a-1111-11aa-1a1a-1aaa11a1a111" }スタックが
CREATE_COMPLETEになるまで待ちます。aws cloudformation wait stack-create-complete \ --stack-name $STACK_NAME \ --region $AWS_REGION
CloudFormation テンプレートによって作成された IAM ロールの
RoleArnを環境変数に保存します。Solo Enterprise for agentregistry はこのロールを引き受けて、AWS アカウント内の Bedrock AgentCore リソースをデプロイおよび管理します。export AWS_ROLE_ARN=$(aws cloudformation describe-stacks \ --stack-name $STACK_NAME \ --query 'Stacks[0].Outputs[?OutputKey==`RoleArn`].OutputValue' \ --output text \ --region $AWS_REGION) echo $AWS_ROLE_ARNNote
以前のバージョンの
arctlでこのスタックをデプロイした場合は、Solo Enterprise for agentregistry が AgentCore にデプロイするエージェントと MCP サーバーのバンドルをステージングするために作成するarn:aws:s3:::are-*ソースバケットへのアクセスも IAM ロールに付与するよう、スタックを更新します。この許可がないと、レジストリサーバーがバケットの作成を拒否されるため、AgentCore へのデプロイはReady=False状態のままになります。テンプレートを再生成するときは、スタックがすでに作成したロールの名前を--role-nameフラグで渡し、既存の External ID をUsePreviousValue=trueで保持します。そうしないと、arctlが新しいロール名と External ID を生成し、IAM ロールが置き換えられ、Runtime リソースが依存する信頼ポリシーが無効になります。arctl runtime setup bedrock-agent-core \ --aws-account-id $AWS_ACCOUNT_ID \ --role-name <existing-role-name> > cloudformation.yaml aws cloudformation update-stack \ --stack-name $STACK_NAME \ --template-body file://cloudformation.yaml \ --parameters ParameterKey=ExternalId,UsePreviousValue=true \ --region $AWS_REGION \ --capabilities CAPABILITY_NAMED_IAM aws cloudformation wait stack-update-complete \ --stack-name $STACK_NAME \ --region $AWS_REGIONオプション: AWS アカウントでアウトバウンド Web ID フェデレーションを有効にします。この機能を有効にすると、AgentCore にデプロイするエージェントは、自分がどのエージェントであるかを証明する短期トークンを AWS から要求できます。Solo Enterprise for agentregistry は、IAM ロールが付与する
iam:GetOutboundWebIdentityFederationInfo権限を使用してアカウントのトークン発行者を検索し、マネージドゲートウェイが各エージェントのトークンをその発行者に対して検証します。これにより、ゲートウェイはエージェントを識別し、エージェントごとにアクセスポリシーを適用できます。aws iam enable-outbound-web-identity-federation
ステップ 2: AgentCore ランタイムを登録する
AWS Bedrock AgentCore ランタイムを Solo Enterprise for agentregistry に登録します。このランタイムは、レジストリサーバーを AWS アカウントに接続し、エージェントと MCP サーバーを Bedrock AgentCore にデプロイできるようにします。
OpenTelemetry コレクターのロードバランサーホスト名を取得します。レジストリは、コントロールプレーンとあわせて OTel コレクターをデプロイします。エージェントと MCP サーバーのランタイムは、このエンドポイントを使用してトレースとメトリクスをエクスポートします。
export OTEL_HOST=$(kubectl -n agentregistry-system get svc \ agentregistry-enterprise-telemetry-collector \ -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') echo "OTel endpoint: http://${OTEL_HOST}:4318"AWS Bedrock AgentCore ランタイムを登録します。
arctl apply -f- <<EOF apiVersion: ar.dev/v1alpha1 kind: Runtime metadata: name: agentcore spec: type: BedrockAgentCore telemetryEndpoint: http://${OTEL_HOST}:4318 config: roleArn: $AWS_ROLE_ARN externalId: $AWS_EXTERNAL_ID region: $AWS_REGION EOF出力例:
✓ Runtime/agentcore createdSolo Enterprise for agentregistry に接続されているランタイムの一覧を表示し、Bedrock AgentCore ランタイムが含まれていることを確認します。
arctl get runtimes出力例:
NAME TYPE agentcore BedrockAgentCore kubernetes-default kubernetes local local
ステップ 3: マネージドゲートウェイを作成する (任意)
Bedrock AgentCore は、各エージェントと MCP サーバーを、これらのランタイム間やランタイムから EKS クラスターへのネットワークパスがない分離されたマネージドランタイムとして実行します。AgentCore 内のエージェントと MCP サーバー間のルーティングを有効にし、実行時にエージェントがアクセスできる対象を制限するには、マネージドゲートウェイを作成します。
ゲートウェイは、MCP とエージェントを認識するプロキシである Solo Enterprise for agentgateway を基盤とし、Kubernetes Gateway API によって支えられています。マネージドゲートウェイを作成する前に、EKS クラスターに両方のコンポーネントをインストールしておく必要があります。AgentCore ランタイムアーキテクチャ全体におけるゲートウェイの位置付けについて詳しくは、ランタイムアーキテクチャを参照してください。
Note
どのような場合にゲートウェイが必要ですか。
- AgentCore にデプロイされた MCP サーバー: AgentCore にデプロイされた MCP サーバーは、パブリックエンドポイントを持たない分離されたコンピューティング環境で実行されます。エージェントは、ランタイム間のトラフィックをプロキシするマネージドゲートウェイ経由でのみ、それらに到達できます。
- RuntimeAccessPolicies: ゲートウェイは
RuntimeAccessPolicyリソースを適用し、実行時にエージェントが他のエージェントを呼び出したり、特定の MCP サーバーツールにアクセスしたりできるかどうかを制御します。詳細については、エージェントから MCP サーバーへを参照してください。
Runtime に spec.config.gatewayRef を設定すると、レジストリはパブリック URL のリモート MCP サーバーを含む すべての MCP サーバー URL を、ゲートウェイ経由でルーティングされるように書き換えます。エージェントがパブリック MCP サーバーにのみ接続し、RuntimeAccessPolicy の適用が不要な場合は、このステップをスキップし、Runtime から gatewayRef フィールドを省略してください。
Solo Enterprise for agentgateway をインストールします。このインストールにより、マネージドゲートウェイが使用する
enterprise-agentgatewayGatewayClass が作成されます。Solo Enterprise for agentgateway のライセンスキーを環境変数に保存します。キーを取得するには、アカウント担当者にお問い合わせください。
export AGENTGATEWAY_LICENSE_KEY=<agentgateway-license-key>Solo Enterprise for agentgateway のバージョンを設定します。
export AGENTGATEWAY_VERSION=v2026.9.3Gateway、HTTPRoute、および関連リソースを含む標準 Gateway API CRD をインストールします。
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.6.1/standard-install.yamlSolo Enterprise for agentgateway CRD をインストールします。
helm upgrade -i enterprise-agentgateway-crds \ oci://us-docker.pkg.dev/solo-public/enterprise-agentgateway/charts/enterprise-agentgateway-crds \ --create-namespace \ --namespace agentgateway-system \ --version "${AGENTGATEWAY_VERSION}"Solo Enterprise for agentgateway のコントローラーとデータプレーンをインストールします。
helm upgrade -i enterprise-agentgateway \ oci://us-docker.pkg.dev/solo-public/enterprise-agentgateway/charts/enterprise-agentgateway \ -n agentgateway-system \ --version "${AGENTGATEWAY_VERSION}" \ --set-string licensing.licenseKey="${AGENTGATEWAY_LICENSE_KEY}"コントロールプレーン Pod が実行中であることを確認します。
kubectl get pods -n agentgateway-system出力例:
NAME READY STATUS RESTARTS AGE enterprise-agentgateway-controller-7d9f8b6d4c-xvpzk 1/1 Running 0 45s
マネージドゲートウェイを作成します。Gateway リソースは、Kubernetes Gateway API に基づく Gateway に変換され、Solo Enterprise for agentgateway が導入した
enterprise-agentgatewayGatewayClass を使用します。arctl apply -f- <<EOF apiVersion: ar.dev/v1alpha1 kind: Gateway metadata: name: gateway-agentcore spec: kubernetes: {} EOF出力例:
✓ Gateway/gateway-agentcore createdゲートウェイが
phase=readyになるまで待ちます。arctl get gatewaysPHASE列にreadyが表示されるまで、1 分ごとにこのコマンドを繰り返します。NAME PROVIDER MODE PHASE gateway-agentcore agentcore managed readyNote
ゲートウェイが
phase=failedになった場合は、arctl get gateway gateway-agentcore -o yamlでゲートウェイの詳細を確認し、エラーメッセージを調べます。ゲートウェイプロキシ Pod が作成され、実行中であることを確認します。レジストリは Solo Enterprise for agentregistry のインストールネームスペースに基盤となる Kubernetes
Gatewayリソースを作成し、Solo Enterprise for agentgateway はそれを Gateway と同じ名前の Deployment として調整します。kubectl get pods -n agentregistry-system -l gateway.networking.k8s.io/gateway-name=gateway-agentcore出力例:
NAME READY STATUS RESTARTS AGE gateway-agentcore-64c4bf7c4c-gzfhj 1/1 Running 0 93s作成したゲートウェイを
spec.config.gatewayRefフィールドで参照するよう Runtime を更新します。arctl apply -f- <<EOF apiVersion: ar.dev/v1alpha1 kind: Runtime metadata: name: agentcore spec: type: BedrockAgentCore telemetryEndpoint: http://${OTEL_HOST}:4318 config: roleArn: $AWS_ROLE_ARN externalId: $AWS_EXTERNAL_ID region: $AWS_REGION gatewayRef: name: gateway-agentcore EOFフィールド 説明 spec.config.gatewayRef.nameこの Runtime にアタッチする Gateway リソースの名前です。同じネームスペースに存在する必要があります。設定すると、レジストリはすべてのエージェント MCP サーバー URL をゲートウェイ経由でルーティングするように書き換えます。
ステップ 4: ハーネスランナーを設定する (ハーネスエージェントのみ)
ハーネスエージェントを AgentCore にデプロイする場合は、使用するハーネスタイプごとに Runtime でハーネスランナーイメージを設定する必要があります。ハーネスエージェントは、レジストリカタログに追加したプラグイン、スキル、システムプロンプトから構成されるエージェントです。独自のエージェントコードを実行する代わりに、レジストリは事前ビルド済みのハーネスランナーコンテナを AgentCore にデプロイし、そのコンテナがエージェントを組み立てて実行します。サポートされるハーネスタイプは Claude Code と OpenClaw の 2 つです。
ハーネスランナーについて
ハーネスランナーは、起動時にレジストリからエージェント定義で定義されたコンポーネントを受け取り、それらをハーネス用に設定するコンテナです。
- Plugins はプラグインディレクトリとしてマウントされます。各プラグインは、会話中にハーネスが呼び出せるスラッシュコマンドを追加します。
- Skills はハーネス設定ディレクトリにリンクされ、利用可能なワークフローとして自動検出されます。
- Instructions はワークスペースのシステムプロンプトファイルに書き込まれ、セッション開始時に読み込まれます。
- MCP servers は、MCP サーバー定義に追加した URL で設定されます。ハーネスエージェントが AgentCore にデプロイされた MCP サーバーと通信するには、エージェントと MCP サーバー間のルーティングを支援するマネージドゲートウェイを設定し、Runtime の
spec.config.gatewayRefフィールドでそのゲートウェイを参照する必要があります。gatewayRefを設定すると、すべての MCP サーバー URL は代わりにゲートウェイ経由でルーティングされるように書き換えられます。 - Model は、Model カタログエントリの
spec.modelフィールドを使用してハーネスに渡されます。
エージェント固有のコンポーネントに加えて、各ハーネスランナーにはハーネスの組み込み機能が含まれます。Claude Code では、ソフトウェアエンジニアリングツール (コードの読み取り、書き込み、編集、シェルコマンドの実行、コードベースの検索)、組み込みスラッシュコマンド (/code-review、/deep-research、/security-review など)、git と GitHub の操作が含まれます。
Note
AgentCore では、各ハーネスイメージをランタイムと同じ AWS アカウントおよびリージョン内のプライベート ECR リポジトリに保存する必要があります。 レジストリはランタイム作成時に ECR イメージ URI を AgentCore に渡し、AgentCore の実行ロールはその特定のリポジトリへのプルアクセスを許可します。ハーネスイメージ自体には、プラグイン、スキル、指示、MCP 設定ではなく、ハーネスバイナリのみが含まれます。レジストリは、エージェントのカタログ定義からそれらをバンドルアーカイブにパッケージ化し、ステップ 1 で AgentCore ソースアーティファクト用にすでに作成した同じ S3 バケットにアップロードします。起動時に、ハーネスランナーはこのバンドルをダウンロードして検証し、エージェントを組み立てます。このバケットを自分で作成または管理する必要はありません。
ハーネスランナーイメージを設定する
使用するハーネスタイプごとに、次の手順を繰り返します。
ハーネスランナーイメージ用のプライベート ECR リポジトリを作成します。
aws ecr create-repository \ --repository-name agentregistry/agentcore-claude-runner \ --region $AWS_REGIONaws ecr create-repository \ --repository-name agentregistry/agentcore-openclaw-runner \ --region $AWS_REGION出力例:
{ "repository": { "repositoryUri": "802411188784.dkr.ecr.us-east-1.amazonaws.com/agentregistry/agentcore-claude-runner", ... } }リポジトリ URI を環境変数に保存します。
export CLAUDE_HARNESS_IMAGE_REPO=$(aws ecr describe-repositories \ --repository-names agentregistry/agentcore-claude-runner \ --region $AWS_REGION \ --query 'repositories[0].repositoryUri' \ --output text) echo $CLAUDE_HARNESS_IMAGE_REPOexport OPENCLAW_HARNESS_IMAGE_REPO=$(aws ecr describe-repositories \ --repository-names agentregistry/agentcore-openclaw-runner \ --region $AWS_REGION \ --query 'repositories[0].repositoryUri' \ --output text) echo $OPENCLAW_HARNESS_IMAGE_REPODocker を ECR レジストリに認証します。
aws ecr get-login-password --region $AWS_REGION \ | docker login --username AWS --password-stdin \ ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com公開済みのハーネスランナーイメージをプルし、ECR リポジトリにプッシュします。
<published-image>は Solo アカウントチームから提供されたハーネスランナーイメージ参照に、<tag>はバージョンタグに置き換えます。export CLAUDE_HARNESS_IMAGE_TAG="<tag>" docker pull <claude-published-image> docker tag <claude-published-image> ${CLAUDE_HARNESS_IMAGE_REPO}:${CLAUDE_HARNESS_IMAGE_TAG} docker push ${CLAUDE_HARNESS_IMAGE_REPO}:${CLAUDE_HARNESS_IMAGE_TAG} export CLAUDE_HARNESS_IMAGE_REF="${CLAUDE_HARNESS_IMAGE_REPO}:${CLAUDE_HARNESS_IMAGE_TAG}" echo $CLAUDE_HARNESS_IMAGE_REFexport OPENCLAW_HARNESS_IMAGE_TAG="<tag>" docker pull <openclaw-published-image> docker tag <openclaw-published-image> ${OPENCLAW_HARNESS_IMAGE_REPO}:${OPENCLAW_HARNESS_IMAGE_TAG} docker push ${OPENCLAW_HARNESS_IMAGE_REPO}:${OPENCLAW_HARNESS_IMAGE_TAG} export OPENCLAW_HARNESS_IMAGE_REF="${OPENCLAW_HARNESS_IMAGE_REPO}:${OPENCLAW_HARNESS_IMAGE_TAG}" echo $OPENCLAW_HARNESS_IMAGE_REFハーネスイメージ参照を含めるように Runtime リソースを更新します。設定したハーネスタイプごとに 1 つのエントリを追加します。この Runtime に対して初めてハーネスエージェントをデプロイすると、レジストリは AgentCore 実行ロールのスコープを自動的に設定し、構成済みの ECR リポジトリからプルできるようにします。
arctl apply -f- <<EOF apiVersion: ar.dev/v1alpha1 kind: Runtime metadata: name: agentcore spec: type: BedrockAgentCore telemetryEndpoint: http://${OTEL_HOST}:4318 config: roleArn: $AWS_ROLE_ARN externalId: $AWS_EXTERNAL_ID region: $AWS_REGION harnessImages: claude-code: "${CLAUDE_HARNESS_IMAGE_REF}" openclaw: "${OPENCLAW_HARNESS_IMAGE_REF}" gatewayRef: name: gateway-agentcore EOFフィールド 説明 spec.config.harnessImages.claude-codeClaude Code ハーネスランナーの ECR イメージ URI です。 spec.config.harnessImages.openclawOpenClaw ハーネスランナーの ECR イメージ URI です。