Could not connect to the endpoint URL (DynamoDB)
TL;DR — botocore が、解決した DynamoDB エンドポイントへの接続を開けませんでした。ほぼ必ず 誤った --endpoint-url、DynamoDB Local の未起動、存在しないホスト名を生む 誤った/タイプミスのリージョン、または ネットワーク経路の欠如(オフライン、VPC、セキュリティグループ)が原因です。到達可能なエンドポイントを指し、何かがリッスンしていることを確認してください。
意味
botocore.exceptions.EndpointConnectionError: Could not connect to the
endpoint URL: "http://localhost:8000/"
# what the engine actually returns, reproduced against Amazon DynamoDB (live service, us-east-1):
connect ECONNREFUSED 127.0.0.1:9boto3/botocore はリージョン(またはあなたの明示的な endpoint_url)から DynamoDB エンドポイント URL を組み立て、それに対する TCP/HTTP 接続の確立に失敗します。認証や検証エラーとは異なり、リクエストは実行中のサービスに到達していません。これは DynamoDB Local(エミュレータのダウン / 誤ったポート)と 本物の AWS(誤ったリージョンのホスト名やブロックされたネットワーク)の両方で発生します。
発生する理由
- DynamoDB Local が実行されていない —
--endpoint-url http://localhost:8000を渡したが、そのポートでエミュレータが起動していない(接続拒否を参照)。 - 誤ったエンドポイント URL — タイプミス、誤ったポート、あるいはローカルエミュレータが
httpを提供するのにhttps。 - 誤ったリージョン — スペルミスのリージョン(
us-east-11)が存在しないホスト名に解決するため、接続できない。 - ネットワーク経路がない — オフライン、または VPC エンドポイント、セキュリティグループ、ネットワーク ACL によって DynamoDB トラフィックがブロックされている。
- コンテナ間 / ホスト間 — Docker 内部からは
localhostはコンテナ自身であり、ホストや DynamoDB Local サービスではありません。
修正方法
- エンドポイントで 何がリッスンしているか確認します:
curl http://localhost:8000 # DynamoDB Local answers with a small response - エンドポイント URL を修正します — 正しいホスト、ポート(デフォルトで
8000)、スキーム(Local ではhttp)。 - 本物の AWS では リージョンのスペルを確認 し、ネットワークルート(VPC エンドポイント / セキュリティグループのルールが DynamoDB を許可)があることを確かめます。
- Docker では、
localhostの代わりに compose のサービス名やhost.docker.internalを使います(host.docker.internalは Docker Desktop では自動的に解決します。Linux の Docker Engine では--add-host host.docker.internal:host-gatewayを追加してください)。 - 本物の AWS と通信していますか?
--endpoint-urlの上書きを完全に外し、botocore に正しいリージョナルエンドポイントを組み立てさせましょう。
DynoTable を Local に向ける
DynoTable は Settings → Profiles の各プロファイルにある Test Connection で
疎通を検証します(AWS アカウントに接続する)。DynamoDB Local なら、
エンドポイントに http://localhost:8000(LocalStack なら :4566)を、認証情報には
プレースホルダーを設定します — CLI が必要とするのと同じ値です。アプリが DynoTable とは
別のポートを使っている場合は、⌘P でプロファイルを切り替えてください。ガイド:
DynamoDB Local と LocalStack への接続。
本物の AWS が相手なら、リージョン文字列のタイプミスは解決できないホスト名を生みます —
到達できない Local のポートとまったく同じ EndpointConnectionError の形です。DynamoDB 固有の
設定を調べる前に、そのプロファイルで aws sts get-caller-identity を実行して確認しましょう。
関連するエラー
- Could not connect to DynamoDB Local (ECONNREFUSED) — 拒否されたローカル接続の Node/JS 版。
- Missing region in config — リージョンがないため、SDK がエンドポイントをまったく組み立てられない。
- 学習: DynamoDB Local を動かす · DynamoDB Local / LocalStack への接続
出典
- Deploying DynamoDB locally on your computer — AWS DynamoDB Developer Guide (default port 8000, dummy credentials,
--endpoint-url) - DynamoDB local usage notes — AWS DynamoDB Developer Guide (setting the local endpoint;
--endpoint-urlrequired on every CLI command) - Error handling — Boto3 Developer Guide (
EndpointConnectionErroras a client-side botocore exception) docker run --add-host— Docker CLI reference (host.docker.internal/host-gatewayfor container-to-host connections)
最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。