Saat menggunakan OSS Java SDK, Anda mungkin menemui error seperti berikut:
Connection to http://buname.oss-cn-hangzhou-internal.aliyuncs.com refused
[RequestId]: Unknown
at com.aliyun.oss.common.utils.ExceptionFactory.createNetworkException(ExceptionFactory.java:31)
at com.aliyun.oss.common.comm.DefaultServiceClient.sendRequestCore(DefaultServiceClient.java:57)
at com.aliyun.oss.common.comm.ServiceClient.sendRequestImpl(ServiceClient.java:191)
at com.aliyun.oss.common.comm.ServiceClient.sendRequest(ServiceClient.java:151)
at com.aliyun.oss.internal.OSSOperation.send(OSSOperation.java:71)
at com.aliyun.oss.internal.OSSObjectOperation.putObject(OSSObjectOperation.java:92)
at com.aliyun.oss.OSSClient.putObject(OSSClient.java:394)
at osscs1.OSSPutObjectSample.uploadFile(OSSPutObjectSample.java:82)
at osscs1.OSSPutObjectSample.main(OSSPutObjectSample.java:46)Penyebab
Error ini umumnya disebabkan oleh dua hal. Identifikasi penyebab yang relevan di lingkungan Anda sebelum melanjutkan.
Penyebab 1: Menggunakan titik akhir internal dari luar jaringan internal
Titik akhir internal mengandung -internal dalam URL (misalnya, oss-cn-hangzhou-internal.aliyuncs.com). Titik akhir ini hanya dapat diakses oleh klien yang berada dalam jaringan internal wilayah yang sama dengan Bucket OSS Anda. Jika klien Anda tidak berada dalam jaringan internal wilayah tersebut, koneksi akan ditolak.
Cara mengidentifikasi penyebab ini: Periksa apakah titik akhir dalam konfigurasi SDK Anda mengandung -internal. Jika ya, dan klien Anda tidak berada dalam jaringan internal wilayah yang sama dengan Bucket OSS, maka inilah penyebabnya.
Penyebab 2: Port 80 atau 443 diblokir
Meskipun klien dan OSS berada dalam wilayah yang sama, kebijakan jaringan—seperti aturan firewall atau pengaturan security group—dapat memblokir port 80 atau 443, sehingga SDK tidak dapat terhubung ke OSS.
Cara mengidentifikasi penyebab ini: Gunakan telnet untuk menguji ketersediaan port tersebut, seperti yang dijelaskan pada bagian berikut.
Diagnosis masalah
Jalankan perintah berikut pada mesin klien untuk mengidentifikasi penyebabnya.
Langkah 1: Uji konektivitas dasar dengan ping
ping oss-cn-hangzhou.aliyuncs.comJika perintah mengembalikan respons seperti berikut, berarti konektivitas jaringan dasar dan resolusi DNS berfungsi:
PING oss-cn-hangzhou.aliyuncs.com (x.x.x.x): 56 data bytes
64 bytes from x.x.x.x: icmp_seq=0 ttl=xx time=x.xxx msJika perintah timeout atau mengembalikan error, mesin Anda tidak dapat menjangkau titik akhir publik OSS. Verifikasi konfigurasi jaringan Anda atau hubungi administrator jaringan Anda.
Langkah 2: Uji ketersediaan port dengan telnet
telnet oss-cn-hangzhou.aliyuncs.com 80Jika port 80 terbuka, Anda akan melihat layar kosong atau pesan Connected seperti berikut:
Trying x.x.x.x...
Connected to oss-cn-hangzhou.aliyuncs.com.Jika Anda melihat Connection refused atau perintah timeout, berarti port 80 diblokir di jaringan Anda. Uji juga port 443:
telnet oss-cn-hangzhou.aliyuncs.com 443Catatan: Ganti oss-cn-hangzhou.aliyuncs.com dengan titik akhir publik untuk wilayah Anda. Untuk daftar lengkap titik akhir, lihat Nama domain akses dan pusat data.Solusi
Alihkan ke titik akhir publik dan perbarui konfigurasi SDK Anda:
private static final String OSS_ENDPOINT = "http://oss-cn-hangzhou.aliyuncs.com/";
OSSClient client = new OSSClient(OSS_ENDPOINT, ACCESS_ID, ACCESS_KEY);Jika telnet mengonfirmasi bahwa port 80 dan 443 keduanya diblokir, bekerja samalah dengan administrator jaringan Anda untuk membuka port yang diperlukan sebelum mengganti titik akhir.
Langkah selanjutnya
Nama domain akses dan pusat data — temukan titik akhir publik untuk wilayah Anda