はじめに
この問題の根本的な解決はできませんでした。
ここに関して知見のある方がいらっしゃれば何卒ご教示ください。
問題
Agent Core をデプロイしたもののソースコードからの実行はおろか、エージェントサンドボックスからの呼び出しも失敗してしまう。
原因
テストしているエージェントのエンドポイントが VPC 内にあるため。
エージェントのエンドポイントを VPC 内に設置するとエージェントサンドボックスからも呼び出すことが出来なくなる。
VPC とは??
Virtual Private Cloud(仮想プライベートクラウド)
雑に説明すると、Lambda などパブリックアクセス可能なリソースを、事前に作成したプライベートなクラウドの中に入れることで外からアクセスできなくするような仕組み。
以下の記事など読むと良さそう
Amazon VPCを「これでもか!」というくらい丁寧に解説
VPC の設定確認方法
解決策
解決策 1 :エンドポイントをパブリックにアクセス可能にする(非推奨)
上記の設定でセキュリティをパブリックに設定すれば一応サンドボックスからの実行も可能になる。
ただし、デフォルトの設定ではエージェントは VPC 外に設定されるはずで、一度 VPC に設定しているはずなので易々とパブリックに設定するのは危険。
解決策 2 :同一 VPC から呼び出す
解決策だったもの
解決策ではないかもしれないが、エージェントのエンドポイントを同じ VPC 内に設置した Lambda から呼び出すことで動作の確認ができる。-
Lambda 関数の作成
通常通り関数を作成する。
ロールには以下の管理ポリシーを含んだものを適用する。

-
AWSLambdaVPCAccessExecutionRole
Lambda に VPC アクセス権を与える
このポリシーを付与しないと以下のエラーが生じる
The provided execution role does not have permissions to call CreateNetworkInterface on EC2 -
BedrockAgentCoreFullAccess
AgentCoreへのアクセスを強化する
-
AWSLambdaVPCAccessExecutionRole
-
AgentcoreRuntime 用の VPC エンドポイントを作成する
引用:公式ドキュメントVPC connectivity impacts inbound and outbound network traffic from AgentCore services. When you host your application in an AWS VPC, you can establish private connectivity to the AgentCore Runtime and AgentCore Gateway APIs by adding the AgentCore VPC endpoint to your VPC. This enables secure API calls, without internet traversal, through VPC PrivateLink inbound connections.
日本語訳
アプリケーションを AWS VPC 内でホストしている場合、AgentCore の VPC エンドポイントを VPC に追加することで、AgentCore Runtime と AgentCore Gateway API へのプライベート接続を確立できます。
これにより、インターネットを経由せず、VPC PrivateLink のインバウンド接続 を通じて、安全に API 呼び出しを行えるようになります。とあるので Agentcore Runtime の VPC エンドポイントを作成します。
-
セキュリティグループにも AgentCoreRuntime に設定したものと同じ内容を設定する
※ 指定するセキュリティグループには以下の設定が行われていることを確認
・インバウンドルールでこのセキュリティグループの全てのトラフィックを許可する
・アウトバウンドルールで全てのトラフィックを許可する
-
コードを書き換え、デプロイ〜テスト
コードはエージェントランタイムの「呼び出しコードを表示」から一部拝借
lambdaimport json import boto3 def lambda_handler(event, context): client = boto3.client('bedrock-agentcore', region_name='ap-northeast-1') payload = json.dumps({"prompt": "Explain machine learning in simple terms"}) response = client.invoke_agent_runtime( agentRuntimeArn='your agentcore runtime arn!!', runtimeSessionId='dfmeoagmreaklgmrkleafremoigrmtesogmtrskhmtkrlshmt', # Must be 33+ chars payload=payload, qualifier="DEFAULT" # Optional ) response_body = response['response'].read() response_data = json.loads(response_body) print("Agent Response:", response_data) return { 'statusCode': 200, 'body': json.dumps('Hello from Lambda!') }
上記の「解決策だったもの」で AgentCoreRuntime を呼び出すと以下のエラーが投げられる。
エラーで存在しないとされている「DEFAULT」という名前の AgentCoreRuntime エンドポイントは確実に存在しているため、他のなんらかの障壁でリクエストが AgentCoreRuntime エンドポイントまで辿り着けず呼び出すことが出来なかった。
{
"errorMessage": "An error occurred (ResourceNotFoundException) when calling the InvokeAgentRuntime operation: No endpoint or agent found with qualifier 'DEFAULT' for agent 'arn:aws:bedrock-agentcore:ap-northeast-1:accountid:runtime/light2agent-tN0ayfBq2Z/runtime-endpoint/DEFAULT'",
"errorType": "ResourceNotFoundException",
"requestId": "e557f6ee-70f2-48ab-9c00-a683a6695ab8",
"stackTrace": [
" File \"/var/task/lambda_function.py\", line 9, in lambda_handler\n response = client.invoke_agent_runtime(\n",
" File \"/var/lang/lib/python3.14/site-packages/botocore/client.py\", line 602, in _api_call\n return self._make_api_call(operation_name, kwargs)\n",
" File \"/var/lang/lib/python3.14/site-packages/botocore/context.py\", line 123, in wrapper\n return func(*args, **kwargs)\n",
" File \"/var/lang/lib/python3.14/site-packages/botocore/client.py\", line 1078, in _make_api_call\n raise error_class(parsed_response, operation_name)\n"











