Pertanyaan umum dan solusi untuk mengintegrasikan serta menggunakan Alibaba Cloud Java SDK.
Pemeriksaan lingkungan
-
Java 1.8 atau versi lebih baru telah diinstal.
-
Jaringan Anda dapat menjangkau titik akhir API Alibaba Cloud.
Masalah umum
-
unable to get credentials from any of the providers in the chain: ...
-
Kode 403, Anda tidak memiliki izin untuk melakukan operasi ini. Action: xxxx
-
Error saat mengimpor dependensi Maven: Could not find artifact com.aliyun:XX:XX
-
Permintaan Anda ditolak karena kurangnya perlindungan SSL. RequestId.
-
Kode: 404, API yang ditentukan tidak ditemukan. Harap periksa URL dan metode Anda.
-
Gagal mengunduh dependensi secara otomatis dengan Maven di IDEA.
-
Cara menghindari pesan WARNING yang disebabkan oleh refleksi.
-
Signature yang ditentukan tidak sesuai dengan perhitungan kami.
-
SDK.EndpointResolvingError: "No such region 'cn-XX'. Please check your region ID".
-
Error saat memanggil OpenAPI: kode: 401, Anda belum mengaktifkan layanan XXX, atau pesan serupa.
-
Gagal mendapatkan kredensial sesi RAM dari layanan metadata ECS. HttpCode=XX
-
com.aliyuncs.exceptions.ClientException: SDK.InvalidRegionId: Can not find endpoint to access
Masalah pengiriman parameter AK.
Jika pesan error Anda berisi salah satu berikut, AccessKey tidak dikonfigurasi dengan benar:
-
SDK V2.0: Cannot invoke "com.aliyun.credentials.Client.getCredential()" because "this._credential" is null.
-
SDK V1.0: ErrCode: MissingAccessKeyId. ErrMsg: AccessKeyId is mandatory for this action.
Solusi:
-
Verifikasi bahwa ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel:
Linux/macOS
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRETWindows
echo %ALIBABA_CLOUD_ACCESS_KEY_ID% echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%Jika nilai yang benar dikembalikan, konfigurasi berhasil. Jika tidak, konfigurasikan ulang seperti yang dijelaskan dalam Konfigurasi variabel lingkungan pada sistem Linux, macOS, dan Windows.
-
Periksa kode Anda untuk error terkait AK.
Contoh kesalahan umum:
Config config = new Config() .setAccessKeyId(System.getenv("yourAccessKeyID")) .setAccessKeySecret(System.getenv("yourSecret"));Contoh yang benar:
Config config = new Config() .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")) .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));CatatanSystem.getenv() mengambil ID dan Secret AccessKey dari variabel lingkungan Anda.
PentingJangan hardcode AccessKey Anda dalam kode produksi. Praktik ini menimbulkan risiko keamanan.
unable to get credentials from any of the providers in the chain : ...
Penyebab: Proyek Anda menggunakan penyedia kredensial default (seperti yang ditunjukkan di bawah), tetapi tidak ada jenis kredensial yang didukung yang dikonfigurasi.
com.aliyun.credentials.Client credential = new com.aliyun.credentials.Client();
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
.setCredential(credential);
Solusi:
-
Untuk menggunakan AccessKey secara langsung:
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config() // Contoh ini menunjukkan cara mendapatkan ID AccessKey dari variabel lingkungan. .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")) // Contoh ini menunjukkan cara mendapatkan secret AccessKey dari variabel lingkungan. .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));Untuk jenis kredensial lainnya, lihat Mengelola kredensial akses.
-
Untuk tetap menggunakan kredensial default, Anda harus mengonfigurasi salah satu jenis kredensial yang didukung oleh rantai penyedia kredensial default.
kode 403, Anda tidak memiliki izin untuk melakukan operasi ini. Action: xxxx.
D:\program_files\java\bin\java.exe ...
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
code: 403, You are not authorized to do this operation. Action: dysms:SendSms;Resource: acs:dysms::1360982977xxx:* request id: 70BA0B34-E61C-58C7-988B-4E20151492C3
https://api.aliyun.com/troubleshoot?q=NoPermission&product=Dysmsapi&requestId=70BA0B34-E61C-58C7-988B-4E20151492C3
Pengguna RAM, role, atau grup pengguna yang memanggil API tidak memiliki izin yang diperlukan. Action:XXXX dalam pesan error menunjukkan operasi API yang ditolak. Misalnya, Action:dysms:SendSms berarti akun tersebut tidak memiliki izin untuk memanggil API SendSms dari Short Message Service.
Solusi:
-
Hubungi administrator untuk membuat kebijakan izin kustom berdasarkan dokumen berikut. Membuat kebijakan izin kustom.
CatatanKebijakan ini hanya mengizinkan panggilan
SendSmske Short Message Service (dysms). Ganti Action dengan layanan dan API dari pesan error Anda.{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "dysms:SendSms", "Resource": "*" } ] } -
Berikan izin ke akun RAM:
Error saat mengimpor dependensi Maven: Could not find artifact com.aliyun:XX:XX
Deskripsi:
Maven tidak dapat menemukan dependensi yang ditentukan.
Solusi:
Konfigurasikan repositori pusat Maven dalam proyek Anda menggunakan salah satu metode berikut:
-
Tambahkan konten berikut ke file
pom.xml:<repositories> <repository> <id>central</id> <url>https://repo1.maven.org/maven2</url> </repository> <repository> <id>nexus-noke</id> <url>http://nexus.noke.com/nexus/content/groups/public/</url> </repository> </repositories> -
Tambahkan konten berikut ke file
settings.xml:<settings> <!-- Existing settings --> <mirrors> <mirror> <!-- This id can be any unique identifier --> <id>central</id> <mirrorOf>central</mirrorOf> <name>Maven Central Mirror</name> <url>https://repo1.maven.org/maven2</url> </mirror> </mirrors> </settings>
java: Error: release version X not supported.
Di IntelliJ IDEA, tekan Ctrl+Alt+Shift+S untuk membuka Project Structure. Pilih Modules, lalu atur Language Level agar sesuai dengan versi JDK Anda (misalnya, "8 - Lambdas, type annotations etc." untuk JDK 8). Klik Apply, lalu OK.
java: Compilation failed: internal java compiler error.
Di IntelliJ IDEA, buka File > Settings > Build, Execution, Deployment > Compiler > Java Compiler. Atur Project bytecode version dan Target bytecode version agar sesuai dengan versi JDK Anda (misalnya, 8 untuk JDK 8). Klik Apply, lalu OK.
kode: 400, <CERTAIN_FIELD > wajib diisi untuk aksi ini.
Parameter yang diperlukan tidak ada dalam pemanggilan API. Solusi:
Contoh menggunakan API SendSms dari Short Message Service:
-
Buka halaman API debugging di OpenAPI Portal, lalu pilih produk cloud dan API.
-
Bandingkan dengan cermat objek permintaan yang dibuat, seperti
SendSmsRequest, untuk memastikan semua bidang yang wajib diisi, seperti nomor telepon dan signature, telah diisi. -
Periksa dokumentasi API untuk mengonfirmasi parameter yang diperlukan.
-
Pastikan nilai parameter yang diperlukan valid (misalnya, periksa apakah format nomor telepon sudah benar).
-
SDK memvalidasi parameter sebelum memanggil API. Jika parameter yang diperlukan tidak ada, Anda akan menerima error
MissingRequiredParameter. Misalnya, nomor telepon yang tidak ada menghasilkan "MissingPhoneNumbers: code: 400".
SendSmsRequest sendSmsRequest = new SendSmsRequest()
// Ganti dengan nomor telepon yang akan menerima pesan teks.
.setPhoneNumbers("<YOUR_VALUE>")
// Ganti dengan signature SMS Anda.
.setSignName("<YOUR_VALUE>")
// Ganti dengan kode template SMS Anda.
.setTemplateCode("<YOUR_VALUE>");
java.lang.NoSuchMethodError, java.lang.NoSuchFieldError
Penyebab:
Exception ini terjadi ketika runtime Java memanggil metode atau mengakses field yang tidak ada. Penyebab umum:
-
Versi dependensi usang dalam pom.xml Maven atau build.gradle Gradle Anda.
-
Konflik dependensi: beberapa versi dependensi yang sama ada, menyebabkan versi yang lebih rendah dimuat saat runtime.
-
Cache usang: setelah memperbarui dependensi, proyek tidak dibangun ulang atau cache tidak dihapus.
-
Versi dependensi saat kompilasi dan runtime berbeda.
-
Konflik classpath: Classpath yang salah dipilih saat impor.
Solusi:
-
Periksa contoh yang disediakan di Alibaba Cloud OpenAPI Portal untuk melihat apakah ada error pada classpath.
-
Jika classpath benar, Anda dapat memperoleh kelas spesifik yang menyebabkan error dari informasi stack exception dan menemukan dependensi serta versi yang sesuai.
-
Jalankan perintah berikut untuk melihat dependensi langsung dan transitif proyek, beserta konflik dan duplikasi spesifik.
-
Maven: Maven menggunakan prinsip "jalur terpendek lebih dulu" dan "urutan deklarasi lebih dulu" untuk menyelesaikan versi dependensi. Selesaikan konflik dengan menyesuaikan urutan dependensi.
mvn dependency:tree -Dverbose -
Gradle: Gradle secara default menggunakan prinsip "versi tertinggi lebih dulu", sehingga hanya versi usang yang menyebabkan masalah. Lanjutkan ke langkah 4 untuk mendapatkan versi terbaru.
-
-
Dalam output pohon dependensi, periksa adanya konflik. Jika ditemukan, pindahkan dependensi versi tertinggi yang bertentangan ke bagian atas bagian <dependencies></dependencies> dalam pom.xml. Jalankan
mvn clean install -Uuntuk membangun ulang. Jika error masih ada, lanjutkan ke bawah. -
Temukan versi terbaru dependensi di Paket dependensi umum SDK Java V2.0. Perbarui versi dalam pom.xml atau build.gradle Anda.
-
Bersihkan dan bangun ulang proyek:
-
Maven
mvn clean install -U -
Gradle:
gradle clean build --refresh-dependencies
-
-
Verifikasi bahwa masalah telah terselesaikan.
Contoh:
Pesan exception adalah java.lang.NoSuchMethodError: com.aliyun.credentials.Client.getCredential().
-
Setelah diperiksa, classpath sudah benar.
-
Berdasarkan pesan exception, exception terjadi di kelas
com.aliyun.credentials.Client, yang berada dalam dependensicredentials-java. Versi yang saat ini dirujuk adalah0.2.4. -
Setelah menjalankan
mvn dependency:tree -Dverbose, ditemukan bahwa dependensi indukcredentials-java,tea-openapi, memiliki konflik versi. Versi yang saat ini dirujuk adalah0.3.2, dan versi yang bertentangan adalah0.3.8. Kami menyarankan untuk memindahkan dependensi induk yang sesuai dengan versitea-openapi0.3.8ke bagian atas bagian <dependencies></dependencies>. -
Jalankan perintah
mvn clean install -Uuntuk membersihkan dan membangun ulang proyek, lalu verifikasi bahwa masalah telah terselesaikan. -
Jika masalah masih ada, Anda dapat memperoleh versi terbaru
credentials-javadari Maven Central: com.aliyun:credentials-java dan menambahkan dependensi tersebut secara manual ke file pom.xml.
"TeaUnretryableException: timeout", "java.net.SocketTimeoutException: connect timed out", "java.net.SocketTimeoutException: Read timed out", "SDK.ServerUnreachable", "Connection aborted", atau "RemoteDisconnected".
Masalah timeout memiliki beberapa penyebab umum:
Masalah konektivitas jaringan
Jaringan antara klien dan server terputus atau tidak stabil.
Solusi:
Uji konektivitas ke titik akhir produk cloud menggunakan ping atau curl. Misalnya, jika API SendSms mengalami timeout: ping dysmsapi.aliyuncs.com atau curl -v https://dysmsapi.aliyuncs.com.
-
Jika perintah mengalami timeout, periksa kebijakan pemblokiran di firewall atau router Anda.
-
Jika perintah berhasil, konfigurasikan timeout yang wajar untuk menghindari kegagalan. Lihat Mekanisme timeout. Contoh:
// Pengaturan timeout parameter runtime. Ini hanya berlaku untuk permintaan yang menggunakan instans parameter runtime ini.
RuntimeOptions runtimeOptions = new RuntimeOptions();
runtimeOptions.connectTimeout = 5000;
Waktu pemrosesan API yang lama
Waktu pemrosesan API melebihi timeout baca yang dikonfigurasi.
Solusi: Tingkatkan timeout baca. Lihat Mekanisme timeout. Contoh:
// Pengaturan timeout parameter runtime. Ini hanya berlaku untuk permintaan yang menggunakan instans parameter runtime ini.
RuntimeOptions runtimeOptions = new RuntimeOptions();
runtimeOptions.readTimeout = 10000;
Permintaan Anda ditolak karena kurangnya perlindungan ssl.RequestId .
API memerlukan HTTPS, tetapi permintaan Anda menggunakan HTTP.
Solusi:
-
Untuk SDK V1.0, atur protokol HTTPS pada objek Request:
request.setSysProtocol(com.aliyuncs.http.ProtocolType.HTTPS); -
Gunakan SDK V2.0, yang secara default menggunakan HTTPS.
kode: 404, API yang ditentukan tidak ditemukan, harap periksa url dan metode Anda.
Anda memasukkan Endpoint atau RegionId yang salah. Solusi:
Verifikasi bahwa wilayah Anda mendukung layanan target. Temukan Endpoint produk di halaman utamanya di OpenAPI Developer Portal.
Misalnya, untuk Short Message Service, masuk ke portal OpenAPI Alibaba Cloud, navigasi ke halaman produk, dan periksa Service Region List untuk mengonfirmasi ID wilayah dan alamat layanan yang benar. Pola Endpoint layanan SMS mengikuti format [product_code].[region_id].aliyuncs.com. Untuk wilayah domestik (seperti cn-beijing, cn-hangzhou, cn-shanghai, dll.), alamat layanan seragam adalah dysmsapi.aliyuncs.com.
Unexpected response code for CONNECT: 400.
Permintaan dicegat oleh node perantara dan tidak mencapai gerbang Alibaba Cloud.
Solusi:
-
Konfigurasi proxy mungkin salah. Uji dengan: curl https://<nama domain layanan Alibaba Cloud>/ -v -x <IP proxy>:<port proxy> (misalnya, curl https://ecs-cn-hangzhou.aliyuncs.com/ -v -x 127.0.0.1:3128).
-
Firewall internal mungkin memblokir permintaan. Coba ganti jaringan (misalnya, sambungkan ke hotspot seluler).
Can not set java.lang.String field com.aliyun.imm20200930.models.GenerateWebofficeTokenShrinkRequest.userShrink to java.util .
Versi lama paket Tea tidak dapat mengonversi struktur kompleks menjadi String, menyebabkan error ini.
Solusi:
Tingkatkan paket Tea ke versi 1.2.7 atau lebih baru:
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>tea</artifactId>
<version>1.2.7</version>
</dependency>
Gagal mengunduh dependensi secara otomatis dengan Maven di IDEA.
-
Perbarui repositori Maven
Buka menu "File" dan pilih "Settings" (atau "Preferences"). Di panel navigasi kiri, perluas "Build, Execution, Deployment", lalu pilih "Build Tools" > "Maven". Temukan tab "Repositories", pilih repositori lokal, klik tombol "Update", dan tunggu hingga pembaruan selesai.
-
Periksa cache IDEA
Buka menu "File", pilih "Invalidate Caches...". Di kotak dialog yang muncul, pilih "Invalidate and Restart", dan tunggu hingga IDEA membersihkan cache dan memulai ulang.
-
Periksa koneksi jaringan
Jika Maven tidak dapat terhubung ke repositori pusat atau repositori jarak jauh lainnya, Maven mungkin tidak dapat mengunduh dependensi. Pastikan koneksi jaringan Anda normal dan tidak ada firewall atau server proxy yang memblokir akses Maven.
-
Periksa konfigurasi Maven
Periksa bahwa file konfigurasi Maven (biasanya settings.xml) dikonfigurasi dengan benar. Pastikan "localRepository" mengarah ke path repositori lokal yang benar, dan "mirrors", "proxies", serta "profiles" dikonfigurasi dengan benar.
Cara menghindari pesan WARNING yang disebabkan oleh refleksi.
024-11-26 17:05:04.696 INFO 10662 --- [HSFBizProcessor-DEFAULT-9-thread-1] c.a.c.s.r.i.ResourceMonitorServiceImpl : instance=rmq-cn-jte3mmyuu0i
024-11-26 17:05:04.696 INFO 10662 --- [HSFBizProcessor-DEFAULT-9-thread-1] c.a.c.r.i.ResourceMonitorComponentImpl : getInstanceInfo
024-11-26 17:05:04.699 INFO 10662 --- [HSFBizProcessor-DEFAULT-9-thread-1] c.a.c.r.i.ResourceMonitorComponentImpl : tea client
024-11-26 17:05:04.699 INFO 10662 --- [HSFBizProcessor-DEFAULT-9-thread-1] c.a.c.r.i.ResourceMonitorComponentImpl : tea runtime
024-11-26 17:05:04.764 WARN 10662 --- [HSFBizProcessor-DEFAULT-9-thread-1] com.aliyun.tea.TeaModel : There are some cast events happening. expect: java.lang.Double
Saat menggunakan Alibaba Cloud SDK dengan versi JDK yang lebih tinggi, peringatan terkait refleksi mungkin muncul dalam output.
Solusi:
Atur variabel lingkungan ALIBABA_CLOUD_SDK_LOG_LEVEL ke ERROR untuk menekan peringatan:
-
Atur variabel lingkungan:
Windows
set ALIBABA_CLOUD_SDK_LOG_LEVEL=ERRORLinux/macOS
export ALIBABA_CLOUD_SDK_LOG_LEVEL=ERROR -
Konfirmasi pengaturan variabel lingkungan:
Windows
echo %ALIBABA_CLOUD_SDK_LOG_LEVEL%Linux/macOS
echo $ALIBABA_CLOUD_SDK_LOG_LEVEL -
Jalankan aplikasi Anda. Pesan peringatan dari Alibaba Cloud SDK tidak akan ditampilkan lagi; hanya pesan tingkat
ERRORatau lebih tinggi yang akan muncul.
-
Untuk mengubah tingkat log untuk debugging atau pengembangan, Anda dapat mengubah nilai variabel lingkungan menjadi
DEBUGatauINFO.
Signature yang ditentukan tidak sesuai dengan perhitungan kami.
at java.lang.Thread.run(Thread.java:748)
ERROR [pool-3-thread-1] 2024-11-12 17:20:00,059 (AliDmsAuditSyncServiceImpl.java:219) - [MS访问事件同步] 异常
com.aliyun.tea.TeaException: code: 400, Specified signature does not match our calculation. server StringToSign is [ACS3-HMAC-SHA256
3d5cxxx ], server CanonicalRequest is [POST
/
Signature permintaan tidak sesuai dengan perhitungan sisi server. Kemungkinan penyebab:
-
AccessKey (AK) disalin secara tidak benar
-
Algoritma signature salah
-
Parameter permintaan atau urutannya tidak memenuhi persyaratan API.
Solusi:
-
Verifikasi bahwa ID dan Secret AccessKey dalam kode Anda persis sama dengan yang ada di konsol (tanpa spasi tambahan atau karakter khusus). Gunakan AccessKey yang sudah ada atau buat yang baru dari Membuat pasangan AccessKey. Catatan: Secret AccessKey hanya ditampilkan sekali saat pembuatan.
-
Tingkatkan
commons-codecuntuk menghindari error perhitungan signature.Perbarui dependensi:
Maven
Modifikasi file
pom.xml.<dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.15</version> <!-- Updated version --> </dependency>Setelah memperbarui nomor versi, jalankan perintah berikut:
mvn clean installGradle
Dalam file
build.gradle, tambahkan atau perbarui dependensi:dependencies { implementation 'commons-codec:commons-codec:1.15' // Updated version }Jalankan perintah berikut untuk membangun proyek:
gradle build -
Jika menggunakan penandatanganan mandiri, verifikasi bahwa logika kode Anda sesuai dengan Mekanisme badan permintaan & signature V3.
SDK.EndpointResolvingError: "No such region 'cn-XX'. Please check your region ID".
Versi SDK terlalu lama dan tidak mendukung wilayah atau API target. Solusi:
Tingkatkan dependensi inti SDK:
Maven
Jika Anda menggunakan Maven untuk manajemen proyek, perbarui versi dependensi dalam file pom.xml:
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.7.2</version>
</dependency>
Gradle
Jika Anda menggunakan Gradle untuk manajemen proyek, perbarui versi dependensi dalam file build.gradle:
dependencies {
implementation 'com.aliyun:aliyun-java-sdk-core:4.7.2'
implementation 'com.aliyun:aliyun-java-sdk-sts:3.1.2'
}
Gagal membuat instans [com.aliyuncs.IAcsClient]: Metode factory 'iAcsClient' melempar exception dengan pesan: org/apache/http/conn/ssl/DefaultHostnameVerifier .
Versi Apache HttpClient yang tidak kompatibel digunakan dengan Alibaba Cloud SDK. Solusi:
-
Periksa bahwa tidak ada library lain yang memperkenalkan versi HttpClient yang tidak kompatibel menggunakan manajemen dependensi alat build Anda.
-
Perbarui Apache HttpClient ke versi 4.5.14 atau lebih baru:
<dependency> <groupId>org.apache.httpcomponents.client</groupId> <artifactId>httpclient</artifactId> <version>4.5.14</version> <!-- Please check for the latest version --> </dependency>
Error saat memanggil OpenAPI: kode: 401, Anda belum mengaktifkan layanan XXX, atau pesan serupa.
Akun Alibaba Cloud Anda belum mengaktifkan layanan yang sesuai. XXX adalah nama layanan (misalnya, layanan OCR). Solusi:
-
Masuk ke konsol manajemen layanan yang sesuai.
-
Temukan dan aktifkan fitur yang diperlukan.
-
Tunggu hingga layanan diaktifkan, lalu panggil API lagi.
Gagal mendapatkan kredensial sesi RAM dari layanan metadata ECS. HttpCode=XX
Kredensial role RAM instans (ecs_ram_role) hanya dapat digunakan di instans ECS atau ECI dengan role RAM yang dilampirkan. Lihat Role RAM instans ECS dan Menggunakan role RAM instans ECI dengan memanggil API.
-
Untuk memverifikasi kredensial ini berfungsi, jalankan perintah berikut di instans ECS:
-
Instans Linux
# Dapatkan kredensial akses metadata. Anda harus menetapkan waktu kedaluwarsa. Permintaan tidak boleh berisi header X-Forwarded-For. 100.100.100.200 adalah alamat IPv4 layanan metadata instans. TOKEN=`curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds:<metadata_credential_expiration_time>"` # Akses metadata instans curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http://100.100.100.200/latest/meta-data/ram/security-credentials/[role-name] -
Instans Windows (PowerShell)
# Dapatkan kredensial akses metadata. Anda harus menetapkan waktu kedaluwarsa. Permintaan tidak boleh berisi header X-Forwarded-For. 100.100.100.200 adalah alamat IPv4 layanan metadata instans. $token = Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token-ttl-seconds" = "<metadata_credential_expiration_time>"} -Method PUT -Uri http://100.100.100.200/latest/api/token # Akses metadata instans Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token" = $token} -Method GET -Uri http://100.100.100.200/latest/meta-data/ram/security-credentials/[role-name]
Jika respons berikut dikembalikan, kredensial role RAM instans tersedia:
{ "AccessKeyId" : "AccessKeyIdValue", "AccessKeySecret" : "AccessKeySecretValue", "Expiration" : "2025-07-10T08:37:58Z", "SecurityToken" : "SecurityTokenValue", "LastUpdated" : "2025-07-10T02:33:26Z", "Code" : "Success" } -
-
Untuk beralih ke jenis kredensial lain, lihat Mengelola kredensial akses.
Ada risiko kebocoran AccessKey ini
Penyebab: AccessKey Anda mungkin berisiko bocor. Alibaba Cloud telah menerapkan pembatasan perlindungan.
Solusi: Solusi untuk kebocoran AccessKey.
Permintaan ditolak karena kontrol aliran API
Penyebab: Panggilan API terlalu sering, memicu pembatasan kecepatan (misalnya, "ThrottlingException").
Solusi:
-
Terapkan mekanisme retry dan tingkatkan interval antar permintaan untuk mengurangi beban.
-
Optimalkan logika kode: gunakan pemrosesan batch atau panggilan asinkron untuk mengurangi volume permintaan.
Access key yang ditentukan ditolak karena kebijakan akses
Penyebab: Kebijakan pembatasan akses jaringan AccessKey membatasi alamat IP sumber mana yang dapat menggunakan AccessKey permanen untuk permintaan API.
Solusi:
-
Ubah rentang alamat IP dalam kebijakan pembatasan akses jaringan AccessKey.
-
Jangan aktifkan kebijakan pembatasan akses jaringan AccessKey.
com.aliyuncs.exceptions.ClientException: SDK.InvalidRegionId : Can not find endpoint to access
Penyebab: Parameter yang salah (seperti regionId yang tidak valid) mencegah SDK menemukan titik akhir layanan.
Solusi:
-
Verifikasi bahwa semua parameter konfigurasi (Endpoint, RegionId, dll.) benar berdasarkan dokumentasi dan contoh kode Alibaba Cloud.
-
Debug API di OpenAPI Developer Portal. Setelah debugging berhasil, unduh proyek contoh lengkap untuk penggunaan lokal.
Daftar periksa exception Java dasar
|
Pesan Error |
Penyebab |
Solusi |
|
NullPointerException |
Mencoba memanggil metode atau mengakses properti pada objek null. |
Sebelum menggunakan objek, lakukan pemeriksaan null untuk menghindari NullPointerException. Anda dapat menggunakan pernyataan kondisional atau assertion untuk pemeriksaan tersebut. |
|
ArrayIndexOutOfBoundsException |
Mencoba mengakses indeks yang tidak ada dalam array. |
Pastikan indeks array berada dalam rentang yang valid, yaitu lebih besar atau sama dengan 0 dan kurang dari panjang array. Anda dapat mengontrol kondisi loop atau memeriksa rentang indeks secara manual untuk menghindari exception indeks array di luar batas. |
|
IllegalArgumentException |
Metode menerima argumen ilegal. |
Periksa parameter yang diteruskan ke metode untuk memastikan mereka memenuhi persyaratan metode. Anda dapat menggunakan pernyataan kondisional atau assertion untuk memeriksa validitas parameter. |
|
ArithmeticException |
Exception terjadi dalam operasi aritmetika, seperti pembagian dengan nol. |
Sebelum melakukan operasi aritmetika, lakukan pemeriksaan dan pemrosesan yang diperlukan untuk memastikan tidak terjadi exception. Anda dapat menggunakan pernyataan kondisional atau mekanisme penanganan exception untuk menangani exception aritmetika. |
|
ClassCastException |
Mencoba meng-cast objek ke tipe yang tidak kompatibel. |
Sebelum melakukan cast tipe, gunakan operator instanceof untuk memeriksa tipe dan pastikan tipe objek kompatibel. Jika tipe tidak kompatibel, pertimbangkan untuk menggunakan cast tipe yang sesuai atau mendesain ulang hubungan pewarisan objek. |
|
FileNotFoundException |
Mencoba membuka file yang tidak ada. |
Pastikan path file dan nama file benar, serta file tersebut ada di lokasi yang ditentukan. Anda dapat menggunakan pernyataan kondisional atau mekanisme penanganan exception untuk menangani exception file tidak ditemukan. |
|
IOException |
Exception terjadi selama operasi input/output, seperti membaca atau menulis file, atau komunikasi jaringan. |
Periksa kebenaran operasi input/output, pastikan file atau resource tersedia, dan tangani exception yang mungkin terjadi. Anda dapat menggunakan mekanisme penanganan exception untuk menangani exception input/output. |
|
InterruptedException |
Thread terganggu secara tak terduga selama operasi multi-threaded. |
Tangani gangguan thread secara tepat saat memproses operasi multi-threaded. Anda dapat menggunakan mekanisme penanganan exception atau pernyataan kondisional untuk menangani exception gangguan thread. |
|
NoSuchMethodException |
Mencoba memanggil metode yang tidak ada. |
Periksa bahwa nama metode dan parameter benar, serta pastikan metode yang dipanggil ada. Anda dapat menggunakan pernyataan kondisional atau mekanisme penanganan exception untuk menangani exception metode tidak ditemukan. |
|
NumberFormatException |
Mengonversi string yang tidak dapat dikonversi menjadi angka menjadi angka. |
Saat mengonversi string menjadi angka, lakukan pemeriksaan yang wajar terlebih dahulu untuk memastikan string tersebut dapat dikonversi dengan benar menjadi angka. Anda dapat menggunakan pernyataan kondisional atau mekanisme penanganan exception untuk menangani exception format angka. |
|
IndexOutOfBoundsException |
Mencoba mengakses indeks yang tidak ada dalam daftar atau string. |
Pastikan indeks berada dalam rentang yang valid, yaitu lebih besar atau sama dengan 0 dan kurang dari panjang daftar atau string. Anda dapat menggunakan pernyataan kondisional atau mekanisme penanganan exception untuk menangani exception indeks di luar batas. |
|
UnsupportedOperationException |
Mencoba memanggil metode atau operasi yang tidak didukung. |
Konsultasikan dokumentasi atau dokumentasi API untuk memahami metode dan operasi yang didukung. Pastikan metode atau operasi tersebut layak dilakukan di lingkungan saat ini. |
|
IllegalMonitorStateException |
Memanggil metode wait(), notify(), atau notifyAll() pada waktu yang tidak tepat. |
Pastikan menggunakan metode wait(), notify(), atau notifyAll() dengan benar dalam blok kode synchronized. Anda dapat menggunakan pernyataan kondisional atau mekanisme penanganan exception untuk menangani exception status monitor ilegal. |
|
SecurityException |
Mencoba melakukan operasi yang melanggar aturan keamanan, seperti akses tidak sah atau izin file. |
Periksa aturan keamanan dalam kode untuk memastikan tidak dilanggar. Anda dapat melakukan penyesuaian dan modifikasi yang sesuai berdasarkan aturan keamanan. |
|
ClassNotFoundException |
Mencoba memuat kelas yang tidak ada. |
Dalam SDK, ini biasanya merupakan konflik dependensi, di mana beberapa versi dependensi ada bersamaan, menyebabkan class loader memuat versi kelas yang salah. Periksa bahwa nama kelas dan classpath benar, serta pastikan kelas yang diperlukan ada. Anda dapat menggunakan pernyataan kondisional atau mekanisme penanganan exception untuk menangani exception kelas tidak ditemukan. |
|
NoSuchFieldException |
Mencoba mengakses field yang tidak ada. |
Dalam SDK, ini biasanya merupakan konflik dependensi, di mana dependensi versi lebih rendah mengambil prioritas dalam indeks, menyebabkan metode SDK V2.0 tidak ada. Pastikan nama field benar dan field yang diakses ada. Anda dapat menggunakan pernyataan kondisional atau mekanisme penanganan exception untuk menangani exception field tidak ditemukan. |
Dukungan teknis
Jika Anda mengalami masalah lain, hubungi kami:
-
Kirim tiket: Halaman Pengiriman Tiket Alibaba Cloud.
-
Jika Anda memiliki kebutuhan atau masukan terkait, Anda dapat bergabung dengan grup DingTalk untuk menghubungi dukungan teknis Alibaba Cloud. Nomor grupnya adalah 60965016010.