Tidak dapat menjalankan permintaan HTTP (DynamoDB, Java SDK)
TL;DR — Java SDK tidak pernah mendapat respons HTTP: koneksi TCP ke titik akhir DynamoDB gagal. Terhadap localhost:8000, hal ini berarti DynamoDB Lokal tidak berjalan (atau berada di port lain) — dan di dalam container Docker/SAM, localhost adalah container, bukan mesin Anda, sehingga emulator tidak dapat dijangkau di alamat tersebut. Mulai emulator, perbaiki endpoint, dan gunakan alamat yang dapat dijangkau host dari container.
Apa artinya
com.amazonaws.SdkClientException: Unable to execute HTTP request:
Connect to localhost:8000 [localhost/127.0.0.1] failed: Connection refusedSdkClientException (v1: AmazonClientException) adalah pembungkus kegagalan sisi klien SDK — permintaan mati sebelum DynamoDB melihatnya. Penyebab bertingkat memberi tahu Anda langkah jaringan mana yang gagal: Connection refused (tidak ada yang mendengarkan), connect timed out (tidak ada rute/firewall), atau UnknownHostException (nama host tidak terselesaikan, sering kali salah ketik wilayah atau titik akhir). Ini setara dengan Java dari Could not connect to the endpoint URL botocore.
Mengapa itu terjadi
- DynamoDB Lokal tidak berjalan — tidak pernah dimulai, mogok saat startup (perpustakaan asli, konflik port), atau keluar dengan terminal terakhir Anda.
- Port atau skema salah — Default lokal adalah
8000dibandingkanhttpbiasa; titik akhirhttps://localhost:8000atau port yang salah menolak. localhostdi dalam wadah — kode yang berjalan di Docker/SAM (sam local invoke) memanggil loopback own-nya. Emulator di host Anda (atau di wadah saudaranya) tidak ada.- Melawan AWS asli: tidak ada jalur jaringan — proxy perusahaan tidak dikonfigurasi pada klien HTTP SDK, VPC tanpa rute/endpoint untuk DynamoDB, atau wilayah salah ketik yang menghasilkan nama host tidak ada.
Bagaimana cara memperbaikinya
Konfirmasi ada sesuatu yang mendengarkan di tempat Anda menelepon:
curl http://localhost:8000 # DynamoDB Local answers 400 with an AmazonDynamoDBv2 bodyJika gagal, jalankan emulator (
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jarataudocker run -p 8000:8000 amazon/dynamodb-local).Arahkan klien ke titik akhir kanan (SDK v2):
DynamoDbClient client = DynamoDbClient.builder() .endpointOverride(URI.create("http://localhost:8000")) .region(Region.US_EAST_1) .build();Dari sebuah container, jangan tekan
localhost— gunakanhost.docker.internal:8000(Docker Desktop), nama layanan penulisan (http://dynamodb:8000), atau lampirkan kedua container ke jaringan Docker yang sama. Untuksam local, teruskan--docker-networkyang dibagikan dengan container emulator.Terhadap AWS asli, verifikasi bahwa nama host wilayah sudah benar dan konfigurasikan pengaturan proksi SDK jika jaringan Anda memerlukannya; dari subnet privat, tambahkan titik akhir VPC gateway DynamoDB atau rute NAT.
Cocokkan HTTP vs HTTPS. DynamoDB Lokal menggunakan HTTP biasa pada port 8000 — titik akhir
https://menolak koneksi.
Lihat di DynoTable
Hubungkan ke Lokal dari DynoTable alih-alih men-debug klien HTTP Java secara membabi buta — Pengaturan → Profil → Tambahkan Profil, atur titik akhir http://localhost:8000, pilih string wilayah mana pun, dan jalankan Uji Koneksi. DynoTable mengonfirmasi bahwa emulator mendengarkan sebelum SDK Anda melakukannya.
Untuk AWS asli, alur profil yang sama berlaku dengan titik akhir regional. Lihat Menghubungkan ke AWS dan Instal. Setelah terhubung, buka tabel dengan ⌘K. Permintaan prototipe di Pembuat Kueri setelah konektivitas dikonfirmasi.
Sumber
- Menangani kesalahan di AWS SDK untuk Java 2.x (diverifikasi 13-07-2026)
- Menerapkan DynamoDB secara lokal (diverifikasi 13-07-2026)
Kesalahan terkait
- Tidak dapat terhubung ke titik akhir URL (boto3) — kembaran Python.
- Tidak dapat terhubung ke DynamoDB Lokal (ECONNREFUSED) — kembaran Node.js.
- Port lokal DynamoDB 8000 sedang digunakan
- Pelajari: Menjalankan DynamoDB Lokal · Hubungkan ke Local & LocalStack
Referensi
- Menangani kesalahan di AWS SDK untuk Java 2.x — Panduan Pengembang (
SdkClientException= masalah sisi klien, misalnya tidak ada koneksi jaringan yang tersedia) - Menyebarkan DynamoDB secara lokal di komputer Anda — Panduan Pengembang AWS DynamoDB (port default 8000, perintah peluncuran, contoh Docker)
- Catatan penggunaan lokal DynamoDB — Panduan Pengembang AWS DynamoDB (mengatur titik akhir lokal
http://localhost:8000) docker run --add-host— Referensi Docker CLI (host.docker.internal/host-gatewayuntuk koneksi container-ke-host)
Terakhir diverifikasi 2026-07-13 berdasarkan dokumentasi resmi AWS yang ditautkan di atas.