Tidak dapat terhubung ke titik akhir URL (DynamoDB) — "Could not connect to the endpoint URL"
TL;DR — botocore tidak dapat membuka koneksi ke titik akhir DynamoDB yang diselesaikannya. Hampir selalu --endpoint-url salah, DynamoDB Lokal tidak berjalan, wilayah /typo yang buruk menghasilkan nama host yang tidak ada, atau tidak ada jalur jaringan (offline, VPC, grup keamanan). Arahkan ke titik akhir yang dapat dijangkau dan konfirmasikan ada sesuatu yang mendengarkan.
Apa artinya
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:9Mengapa itu terjadi
- DynamoDB Lokal tidak berjalan — Anda melewati
--endpoint-url http://localhost:8000tetapi emulator tidak aktif pada port tersebut (lihat koneksi ditolak). - Titik akhir URL salah — salah ketik, port salah, atau
httpstempat emulator lokal menyajikanhttp. - Wilayah buruk — wilayah yang salah eja (
us-east-11) menghasilkan nama host yang tidak ada, sehingga sambungan tidak dapat dibuat. - Tidak ada jalur jaringan — lalu lintas offline, atau DynamoDB diblokir oleh titik akhir VPC, grup keamanan, atau ACL jaringan.
- Cross-container / cross-host — dari dalam Docker,
localhostadalah container itu sendiri, bukan host atau layanan Lokal DynamoDB.
Bagaimana cara memperbaikinya
- Konfirmasi apa yang didengarkan di titik akhir:
curl http://localhost:8000 # DynamoDB Local answers with a small response - Perbaiki titik akhir URL — host, port yang benar (
8000secara default), dan skema (httpuntuk Lokal). - Periksa ejaan wilayah untuk AWS asli, dan pastikan Anda memiliki rute jaringan (aturan titik akhir VPC/grup keamanan mengizinkan DynamoDB).
- Di Docker, gunakan nama layanan penulisan atau
host.docker.internal, bukanlocalhost(host.docker.internaldiselesaikan secara otomatis di Docker Desktop; di Linux Docker Engine tambahkan--add-host host.docker.internal:host-gateway). - Berbicara dengan AWS asli? Hapus penggantian
--endpoint-urlsepenuhnya dan biarkan botocore membangun titik akhir regional yang benar.
Arahkan DynoTable ke Local
DynoTable memvalidasi konektivitas dengan Uji Koneksi pada setiap profil di
Pengaturan → Profil (Hubungkan akun AWS). Untuk
DynamoDB Lokal, atur titik akhir http://localhost:8000 (atau :4566 untuk LocalStack)
dengan kredensial placeholder — nilai yang sama yang dibutuhkan CLI. Tekan ⌘P
untuk beralih profil ketika aplikasi Anda menggunakan port yang berbeda dari DynoTable. Panduan:
Hubungkan ke DynamoDB Lokal & LocalStack.
Terhadap AWS asli, kesalahan ketik pada string wilayah menghasilkan nama host yang tidak menghasilkan
penyelesaian — bentuk EndpointConnectionError yang sama dengan port Lokal yang tidak dapat dijangkau.
Konfirmasikan dengan aws sts get-caller-identity pada profil sebelum melakukan debug
Pengaturan khusus DynamoDB.
Kesalahan terkait
- Tidak dapat terhubung ke DynamoDB Lokal (ECONNREFUSED) — setara dengan Node/JS dari koneksi lokal yang ditolak.
- Wilayah tidak ada di konfigurasi — tidak ada wilayah, sehingga SDK tidak dapat membangun titik akhir sama sekali.
- Pelajari: Menjalankan DynamoDB Lokal · Menghubungkan ke DynamoDB Lokal / LocalStack
Sumber
- Menyebarkan DynamoDB secara lokal di komputer Anda — Panduan Pengembang AWS DynamoDB (port default 8000, kredensial tiruan,
--endpoint-url) - Catatan penggunaan lokal DynamoDB — Panduan Pengembang AWS DynamoDB (mengatur titik akhir lokal;
--endpoint-urldiperlukan pada setiap perintah CLI) - Penanganan kesalahan — Panduan Pengembang Boto3 (
EndpointConnectionErrorsebagai pengecualian botocore sisi klien) docker run --add-host— Referensi Docker CLI (host.docker.internal/host-gatewayuntuk koneksi container-ke-host)