Untuk mengirim permintaan melalui SDK Simple Message Queue (formerly MNS) untuk Java, konfigurasikan titik akhir dan kredensial akses. Simple Message Queue mendukung pasangan AccessKey jangka panjang dan kredensial Security Token Service (STS) sementara.
Konfigurasikan titik akhir
Tetapkan titik akhir publik atau internal Simple Message Queue dalam file aliyun-mns.properties. Secara default, SDK membaca file ini dari ${user.home}/.aliyun-mns.properties.
| Sistem operasi | Jalur file |
|---|---|
| Linux / macOS | ~/.aliyun-mns.properties |
| Windows | %USERPROFILE%\.aliyun-mns.properties |
Tambahkan baris berikut ke dalam file:
mns.accountendpoint=http://120228xxxxxxx.mns.cn-xxxxxx.aliyuncs.comUntuk menemukan titik akhir Anda, buka konsol Simple Message Queue dan buka halaman Queue Details atau Topic Details. Titik akhir tercantum di bagian Endpoint.

Konfigurasikan kredensial akses
Simple Message Queue mendukung dua jenis kredensial:
| Jenis kredensial | Kapan digunakan | Tingkat keamanan |
|---|---|---|
| Kredensial akses jangka panjang (pasangan AccessKey) | Aplikasi yang memerlukan akses persisten ke Simple Message Queue | Standar. Rotasi setiap tiga bulan. |
| Kredensial akses sementara (STS) | Akses berdurasi singkat, otorisasi cross-account, atau beban kerja berbasis ECS | Tinggi. Kredensial kedaluwarsa secara otomatis. |
Kredensial akses sementara lebih disarankan untuk lingkungan produksi. Kredensial tersebut kedaluwarsa setelah periode tertentu dan mendukung kontrol akses detail halus, sehingga mengurangi risiko kebocoran kredensial.
Konfigurasikan kredensial akses jangka panjang
Gunakan pasangan AccessKey dari pengguna Resource Access Management (RAM) untuk akses persisten.
Prasyarat
Buat pasangan AccessKey untuk pengguna RAM. Untuk detailnya, lihat Buat pasangan AccessKey untuk pengguna RAM.
Rotasi pasangan AccessKey yang telah digunakan lebih dari tiga bulan. Nonaktifkan dan hapus semua pasangan AccessKey yang tidak lagi digunakan.
Langkah 1: Tetapkan variabel lingkungan
Simpan pasangan AccessKey dalam variabel lingkungan, bukan menyematkan kredensial dalam kode sumber.
macOS
Buka terminal dan jalankan:
nano ~/.bash_profileTambahkan baris berikut ke akhir file:
export ALIBABA_CLOUD_ACCESS_KEY_ID=LTA**** export ALIBABA_CLOUD_ACCESS_KEY_SECRET=moiEs****Tekan
Ctrl+X, tekanYuntuk menyimpan, lalu tekanEnteruntuk keluar.Terapkan perubahan:
source ~/.bash_profileVerifikasi konfigurasi: Output yang diharapkan:
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRETLTA**** moiEs****
Linux
Buka terminal dan jalankan:
sudo vim /etc/profileTambahkan baris berikut ke akhir file:
export ALIBABA_CLOUD_ACCESS_KEY_ID=LTA**** export ALIBABA_CLOUD_ACCESS_KEY_SECRET=moiEs****Tekan
Esc, ketik:wq, lalu tekanEnteruntuk menyimpan dan keluar.Terapkan perubahan:
source /etc/profileVerifikasi konfigurasi: Output yang diharapkan:
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRETLTA**** moiEs****
Windows
GUI
Langkah-langkah berikut menggunakan Windows 10 sebagai contoh.
Klik kanan This PC dan pilih Properties. Klik Advanced system settings. Di kotak dialog System Properties, klik Environment Variables pada tab Advanced. Klik New di bagian User variables or System variables.
Tambahkan variabel berikut:
Variabel Contoh ALIBABA_CLOUD_ACCESS_KEY_ID LTA**** ALIBABA_CLOUD_ACCESS_KEY_SECRET moiEs**** Verifikasi konfigurasi: Output yang diharapkan:
echo %ALIBABA_CLOUD_ACCESS_KEY_ID% echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%LTA**** moiEs****
CMD
Buka command-line interface.
Tetapkan variabel lingkungan:
set ALIBABA_CLOUD_ACCESS_KEY_ID=LTA**** set ALIBABA_CLOUD_ACCESS_KEY_SECRET=moiEs****Pertahankan variabel tersebut:
setx ALIBABA_CLOUD_ACCESS_KEY_ID "%ALIBABA_CLOUD_ACCESS_KEY_ID%" setx ALIBABA_CLOUD_ACCESS_KEY_SECRET "%ALIBABA_CLOUD_ACCESS_KEY_SECRET%"Verifikasi konfigurasi: Output yang diharapkan:
echo %ALIBABA_CLOUD_ACCESS_KEY_ID% echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%LTA**** moiEs****
PowerShell
Tekan Win+X dan pilih opsi PowerShell yang sesuai berdasarkan cakupan yang Anda butuhkan.
Hanya sesi saat ini (pilih Windows PowerShell):
$env:ALIBABA_CLOUD_ACCESS_KEY_ID = "LTA****"
$env:ALIBABA_CLOUD_ACCESS_KEY_SECRET = "moiEs****"Semua sesi baru untuk pengguna saat ini (pilih Windows PowerShell):
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'LTA****', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'moiEs****', [System.EnvironmentVariableTarget]::Machine)Semua pengguna (pilih Windows PowerShell (Administrator)):
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'LTA****', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'moiEs****', [System.EnvironmentVariableTarget]::Machine)Verifikasi konfigurasi:
Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_ID
Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_SECRETOutput yang diharapkan:
LTA****
moiEs****Langkah 2: Muat kredensial dalam Java
Ambil pasangan AccessKey dari variabel lingkungan:
// Muat kredensial akses dari variabel lingkungan.
CloudAccount account = new CloudAccount(ServiceSettings.getMNSAccountEndpoint());Jangan menyematkan kredensial akses langsung dalam kode sumber. Kredensial yang bocor dapat mengekspos resource Anda terhadap akses tidak sah. Gunakan variabel lingkungan sebagai gantinya.
Konfigurasikan kredensial akses sementara
Untuk akses berdurasi singkat atau sensitif keamanan, gunakan salah satu metode berikut:
| Metode | Kasus penggunaan |
|---|---|
| Kredensial sementara STS | Memberikan akses berbatas waktu tanpa mengekspos pasangan AccessKey pengguna RAM Anda |
| Peran RAM | Mengotorisasi pengguna RAM (dari akun Alibaba Cloud yang sama atau berbeda) untuk mengasumsikan peran dengan izin tertentu |
| Peran RAM instans ECS | Mengakses SMQ dari instans Elastic Compute Service (ECS) menggunakan kredensial yang secara otomatis diperbarui |
Konfigurasikan kredensial sementara STS
Buat pengguna RAM. Untuk detailnya, lihat Buat pengguna RAM.
Sambungkan kebijakan
AliyunSTSAssumeRoleAccesske pengguna RAM. Untuk detailnya, lihat Berikan izin kepada pengguna RAM.Panggil operasi API AssumeRole untuk mendapatkan kredensial sementara (ID AccessKey, rahasia AccessKey, dan token keamanan).
Simpan kredensial sementara sebagai variabel lingkungan, lalu muat dalam kode Java Anda.
Tetapkan variabel lingkungan
macOS
Buka terminal dan jalankan:
nano ~/.bash_profileTambahkan kredensial sementara ke akhir file:
export MNS_ACCESS_KEY_ID=LTA**** export MNS_ACCESS_KEY_SECRET=moiEs**** export MNS_SESSION_TOKEN=CAES****Tekan
Ctrl+X, tekanYuntuk menyimpan, lalu tekanEnteruntuk keluar.Terapkan perubahan:
source ~/.bash_profileVerifikasi konfigurasi: Output yang diharapkan:
echo $MNS_ACCESS_KEY_ID echo $MNS_ACCESS_KEY_SECRET echo $MNS_SESSION_TOKENLTA**** moiEs**** CAES****
Linux
Buka terminal dan jalankan:
sudo vim /etc/profileTambahkan kredensial sementara ke akhir file:
export MNS_ACCESS_KEY_ID=LTA**** export MNS_ACCESS_KEY_SECRET=moiEs**** export MNS_SESSION_TOKEN=CAES****Tekan
Esc, ketik:wq, lalu tekanEnteruntuk menyimpan dan keluar.Terapkan perubahan:
source /etc/profileVerifikasi konfigurasi: Output yang diharapkan:
echo $MNS_ACCESS_KEY_ID echo $MNS_ACCESS_KEY_SECRET echo $MNS_SESSION_TOKENLTA**** moiEs**** CAES****
Windows
GUI
Langkah-langkah berikut menggunakan Windows 10 sebagai contoh.
Klik kanan This PC dan pilih Properties. Klik Advanced system settings. Di kotak dialog System Properties, klik Environment Variables pada tab Advanced. Klik New di bagian User variables or System variables.
Tambahkan variabel berikut:
Variabel Contoh MNS_ACCESS_KEY_ID LTA**** MNS_ACCESS_KEY_SECRET moiEs**** MNS_SESSION_TOKEN CAES**** Verifikasi konfigurasi: Output yang diharapkan:
echo %MNS_ACCESS_KEY_ID% echo %MNS_ACCESS_KEY_SECRET% echo %MNS_SESSION_TOKEN%LTA**** moiEs**** CAES****
CMD
Buka command-line interface.
Tetapkan variabel lingkungan:
set MNS_ACCESS_KEY_ID=LTA**** set MNS_ACCESS_KEY_SECRET=moiEs**** set MNS_SESSION_TOKEN=CAES****Pertahankan variabel tersebut:
setx MNS_ACCESS_KEY_ID "%MNS_ACCESS_KEY_ID%" setx MNS_ACCESS_KEY_SECRET "%MNS_ACCESS_KEY_SECRET%" setx MNS_SESSION_TOKEN "%MNS_SESSION_TOKEN%"Verifikasi konfigurasi: Output yang diharapkan:
echo %MNS_ACCESS_KEY_ID% echo %MNS_ACCESS_KEY_SECRET% echo %MNS_SESSION_TOKEN%LTA**** moiEs**** CAES****
PowerShell
Tekan Win+X dan pilih opsi PowerShell yang sesuai berdasarkan cakupan yang Anda butuhkan.
Hanya sesi saat ini (pilih Windows PowerShell):
$env:MNS_ACCESS_KEY_ID = "LTA****"
$env:MNS_ACCESS_KEY_SECRET = "moiEs****"
$env:MNS_SESSION_TOKEN = "CAES****"Semua sesi baru untuk pengguna saat ini (pilih Windows PowerShell):
[System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_ID', 'LTA****', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_SECRET', 'moiEs****', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('MNS_SESSION_TOKEN', 'CAES****', [System.EnvironmentVariableTarget]::Machine)Semua pengguna (pilih Windows PowerShell (Administrator)):
[System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_ID', 'LTA****', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_SECRET', 'moiEs****', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('MNS_SESSION_TOKEN', 'CAES****', [System.EnvironmentVariableTarget]::Machine)Verifikasi konfigurasi:
Get-ChildItem env:MNS_ACCESS_KEY_ID
Get-ChildItem env:MNS_ACCESS_KEY_SECRET
Get-ChildItem env:MNS_SESSION_TOKENOutput yang diharapkan:
LTA****
moiEs****
CAES****Muat kredensial dalam Java
// Muat kredensial sementara STS dari variabel lingkungan.
String accessKeyId = System.getenv("MNS_ACCESS_KEY_ID");
String accessKeySecret = System.getenv("MNS_ACCESS_KEY_SECRET");
String sessionToken = System.getenv("MNS_SESSION_TOKEN");
AlibabaCloudCredentials credentials = new BasicSessionCredentials(accessKeyId, accessKeySecret, sessionToken);
AlibabaCloudCredentialsProvider provider = new StaticCredentialsProvider(credentials);Jangan menyematkan kredensial akses langsung dalam kode sumber. Kredensial yang bocor dapat mengekspos resource Anda terhadap akses tidak sah. Gunakan variabel lingkungan sebagai gantinya.
Konfigurasikan peran RAM
Gunakan peran RAM untuk mengotorisasi pengguna RAM (dari akun Alibaba Cloud yang sama atau berbeda) agar dapat mengakses Simple Message Queue dengan izin tertentu.
Prasyarat
Dapatkan pasangan AccessKey pengguna RAM. Untuk detailnya, lihat Buat pasangan AccessKey untuk pengguna RAM.
PentingRotasi pasangan AccessKey yang telah digunakan lebih dari tiga bulan. Nonaktifkan dan hapus semua pasangan AccessKey yang tidak lagi digunakan.
Dapatkan Nama Sumber Daya Alibaba Cloud (ARN) dari peran RAM. Format ARN adalah:
acs:ram::$accountID:role/$roleName. Untuk detailnya, lihat Lihat informasi tentang peran RAM.
Tetapkan variabel lingkungan
macOS
Buka terminal dan jalankan:
nano ~/.bash_profileTambahkan pasangan AccessKey dan ARN peran ke akhir file:
export MNS_ACCESS_KEY_ID=LTAI**** export MNS_ACCESS_KEY_SECRET=IrVTNZNy**** export MNS_STS_ROLE_ARN=acs:ram::17464958********:role/mnsststestTekan
Ctrl+X, tekanYuntuk menyimpan, lalu tekanEnteruntuk keluar.Terapkan perubahan:
source ~/.bash_profileVerifikasi konfigurasi: Output yang diharapkan:
echo $MNS_ACCESS_KEY_ID echo $MNS_ACCESS_KEY_SECRET echo $MNS_STS_ROLE_ARNLTAI**** IrVTNZNy**** acs:ram::17464958********:role/mnsststest
Linux
Buka terminal dan jalankan:
sudo vim /etc/profileTambahkan pasangan AccessKey dan ARN peran ke akhir file:
export MNS_ACCESS_KEY_ID=LTAI**** export MNS_ACCESS_KEY_SECRET=IrVTNZNy**** export MNS_STS_ROLE_ARN=acs:ram::17464958********:role/mnsststestTekan
Esc, ketik:wq, lalu tekanEnteruntuk menyimpan dan keluar.Terapkan perubahan:
source /etc/profileVerifikasi konfigurasi: Output yang diharapkan:
echo $MNS_ACCESS_KEY_ID echo $MNS_ACCESS_KEY_SECRET echo $MNS_STS_ROLE_ARNLTAI**** IrVTNZNy**** acs:ram::17464958********:role/mnsststest
Windows
GUI
Langkah-langkah berikut menggunakan Windows 10 sebagai contoh.
Klik kanan This PC dan pilih Properties. Klik Advanced system settings. Di kotak dialog System Properties, klik Environment Variables pada tab Advanced. Klik New di bagian User variables or System variables.
Tambahkan variabel berikut:
Variabel Contoh MNS_ACCESS_KEY_ID LTAI**** MNS_ACCESS_KEY_SECRET IrVTNZNy**** MNS_STS_ROLE_ARN acs:ram::17464958********:role/mnsststest Verifikasi konfigurasi: Output yang diharapkan:
echo %MNS_ACCESS_KEY_ID% echo %MNS_ACCESS_KEY_SECRET% echo %MNS_STS_ROLE_ARN%LTAI**** IrVTNZNy**** acs:ram::17464958********:role/mnsststest
CMD
Buka command-line interface.
Tetapkan variabel lingkungan:
set MNS_ACCESS_KEY_ID=LTAI**** set MNS_ACCESS_KEY_SECRET=IrVTNZNy**** set MNS_STS_ROLE_ARN=acs:ram::17464958********:role/mnsststestPertahankan variabel tersebut:
setx MNS_ACCESS_KEY_ID "%MNS_ACCESS_KEY_ID%" setx MNS_ACCESS_KEY_SECRET "%MNS_ACCESS_KEY_SECRET%" setx MNS_STS_ROLE_ARN "%MNS_STS_ROLE_ARN%"Verifikasi konfigurasi: Output yang diharapkan:
echo %MNS_ACCESS_KEY_ID% echo %MNS_ACCESS_KEY_SECRET% echo %MNS_STS_ROLE_ARN%LTAI**** IrVTNZNy**** acs:ram::17464958********:role/mnsststest
PowerShell
Tekan Win+X dan pilih opsi PowerShell yang sesuai berdasarkan cakupan yang Anda butuhkan.
Hanya sesi saat ini (pilih Windows PowerShell):
$env:MNS_ACCESS_KEY_ID = "LTAI****"
$env:MNS_ACCESS_KEY_SECRET = "IrVTNZNy****"
$env:MNS_STS_ROLE_ARN = "acs:ram::17464958********:role/mnsststest"Semua sesi baru untuk pengguna saat ini (pilih Windows PowerShell):
[System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_ID', 'LTAI****', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_SECRET', 'IrVTNZNy****', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('MNS_STS_ROLE_ARN', 'acs:ram::17464958********:role/mnsststest', [System.EnvironmentVariableTarget]::Machine)Semua pengguna (pilih Windows PowerShell (Administrator)):
[System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_ID', 'LTAI****', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_SECRET', 'IrVTNZNy****', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('MNS_STS_ROLE_ARN', 'acs:ram::17464958********:role/mnsststest', [System.EnvironmentVariableTarget]::Machine)Verifikasi konfigurasi:
Get-ChildItem env:MNS_ACCESS_KEY_ID
Get-ChildItem env:MNS_ACCESS_KEY_SECRET
Get-ChildItem env:MNS_STS_ROLE_ARNOutput yang diharapkan:
LTAI****
IrVTNZNy****
acs:ram::17464958********:role/mnsststestMuat kredensial dalam Java
// Tentukan wilayah untuk asumsi peran STS (contoh: China (Hangzhou)).
String region = "cn-hangzhou";
// Muat pasangan AccessKey pengguna RAM dari variabel lingkungan.
String accessKeyId = System.getenv("MNS_ACCESS_KEY_ID");
String accessKeySecret = System.getenv("MNS_ACCESS_KEY_SECRET");
// Muat ARN peran RAM dari variabel lingkungan.
String roleArn = System.getenv("MNS_STS_ROLE_ARN");
// Buat penyedia kredensial menggunakan pasangan AccessKey dan ARN peran.
STSAssumeRoleSessionCredentialsProvider credentialsProvider = CredentialsProviderFactory
.newSTSAssumeRoleSessionCredentialsProvider(
region,
accessKeyId,
accessKeySecret,
roleArn
);Jangan menyematkan kredensial akses langsung dalam kode sumber. Kredensial yang bocor dapat mengekspos resource Anda terhadap akses tidak sah. Gunakan variabel lingkungan sebagai gantinya.
Konfigurasikan peran RAM instans ECS
Untuk mengakses Simple Message Queue dari instans ECS, tetapkan peran RAM ke instans tersebut dan biarkan SDK mengambil kredensial sementara yang secara otomatis diperbarui melalui URL metadata instans.
Tetapkan peran RAM ke instans ECS. Untuk detailnya, lihat Berikan akses ECS ke layanan Alibaba Cloud lainnya dengan menggunakan peran RAM instans.
Buat penyedia kredensial menggunakan nama peran RAM:
// Muat kredensial melalui peran RAM yang dilampirkan ke instans ECS. // Ganti "ecs-ram-role" dengan nama peran aktual Anda. CredentialsProvider provider = new InstanceProfileCredentialsProvider("ecs-ram-role");
Tidak diperlukan konfigurasi variabel lingkungan. SDK secara otomatis mengambil dan memperbarui kredensial sementara dari layanan metadata instans ECS.