Dokumen ini menjelaskan cara mengintegrasikan HTTPDNS dengan Alibaba Cloud OSS SDK pada klien HarmonyOS.
1. Latar Belakang
Alibaba Cloud Object Storage Service (OSS) merupakan layanan penyimpanan cloud universal yang memungkinkan pengembang untuk menyimpan dan mengakses file seperti foto profil, gambar, audio, serta video di berbagai aplikasi dengan mudah. Untuk menggunakan OSS pada HarmonyOS, integrasikan OSS HarmonyOS SDK.
Untuk meningkatkan stabilitas dan kecepatan transfer file, Anda dapat menggabungkan HTTPDNS SDK dengan OSS HarmonyOS SDK untuk menyelesaikan nama domain OSS. Kombinasi ini memberikan perlindungan anti-pembajakan yang efektif serta mempercepat resolusi DNS, sehingga meningkatkan pengalaman jaringan saat aplikasi Anda mengakses OSS.
2. Langkah-langkah Integrasi
Untuk mengintegrasikan HTTPDNS dengan OSS SDK di HarmonyOS, ikuti dua langkah utama berikut ini:
Buat
rcp.Sessionyang mengintegrasikan kemampuan resolusi HTTPDNS.Gunakan sesi kustom ini untuk menginisialisasi klien OSS.
2.1 Buat sesi yang mengintegrasikan HTTPDNS
Pertama, buat instance rcp.Session. Selanjutnya, tambahkan aturan resolusi DNS kustom ke dalam konfigurasinya. Aturan ini memanggil layanan HTTPDNS untuk menyelesaikan nama domain.
Untuk informasi lebih lanjut tentang proses integrasi HTTPDNS, lihat Integrasi HarmonyOS SDK.
import { httpdns } from '@aliyun/httpdns';
import { rcp } from '@kit.RemoteCommunicationKit';
/**
* Membuat sesi jaringan (rcp.Session) yang mengintegrasikan kemampuan resolusi DNS Alibaba Cloud HTTPDNS.
*
* @param httpdnsAccountId ID Akun Alibaba Cloud HTTPDNS Anda.
* @returns Instance rcp.Session yang dikonfigurasi dengan aturan resolusi DNS.
*/
async function createHttpDnsEnhancedSession(httpdnsAccountId: string): Promise<rcp.Session> {
const httpdnsService = await httpdns.getService(httpdnsAccountId);
const sessionConfig: rcp.SessionConfiguration = {
requestConfiguration: {
dns: {
dnsRules: (host: string): string[] => {
try {
const result = httpdnsService.getHttpDnsResultSyncNonBlocking(host);
let addresses: string[] = [];
if (result.ipv4s && result.ipv4s.length > 0) {
addresses.push(...result.ipv4s);
}
if (result.ipv6s && result.ipv6s.length > 0) {
addresses.push(...result.ipv6s);
}
if (addresses.length > 0) {
return addresses; // Mengembalikan daftar gabungan alamat IP.
}
} catch (error) {
console.error(`[HttpDNS] Gagal parsing: ${host}`, error);
}
// Jika resolusi gagal atau tidak menghasilkan hasil, kembalikan array kosong untuk fallback ke DNS sistem default.
return [];
}
}
}
};
return rcp.createSession(sessionConfig);
}
2.2 Inisialisasi klien OSS dengan sesi
Selanjutnya, lewati instance rcp.Session yang dibuat pada langkah sebelumnya sebagai parameter konfigurasi saat menginisialisasi klien OSS. Langkah ini memastikan bahwa semua permintaan jaringan dari klien tersebut secara otomatis menggunakan logika resolusi HTTPDNS yang telah Anda definisikan.
Untuk informasi lebih lanjut tentang cara mengintegrasikan dan menggunakan OSS SDK, lihat OSS Harmony SDK (Pratinjau).
import Client from '@aliyun/oss';
// Fungsi createHttpDnsEnhancedSession dihilangkan.
/**
* Menunjukkan cara menginisialisasi klien OSS yang menggunakan sesi ditingkatkan HTTPDNS.
*/
async function initializeOssClientWithHttpDns() {
const YOUR_HTTPDNS_ACCOUNT_ID = 'your_httpdns_account_id'; // Ganti dengan AccountId Anda.
const YOUR_ACCESS_KEY_ID = 'your_access_key_id'; // Ganti dengan ID AccessKey Anda.
const YOUR_ACCESS_KEY_SECRET = 'your_access_key_secret'; // Ganti dengan rahasia AccessKey Anda.
const YOUR_REGION = 'oss-cn-hangzhou'; // Ganti dengan wilayah Anda.
// Panggil fungsi dari Langkah 1 untuk membuat sesi yang mengintegrasikan HTTPDNS.
const httpDnsSession = await createHttpDnsEnhancedSession(YOUR_HTTPDNS_ACCOUNT_ID);
// Inisialisasi klien OSS dan lewatkan instance sesi yang dibuat ke dalamnya.
const ossClient = new Client({
accessKeyId: YOUR_ACCESS_KEY_ID,
accessKeySecret: YOUR_ACCESS_KEY_SECRET,
region: YOUR_REGION,
session: httpDnsSession, // Inti: Lewatkan sesi kustom.
});
console.log('Klien OSS dengan HttpDNS berhasil diinisialisasi!');
// Instance ossClient ini telah berhasil mengintegrasikan HTTPDNS.
// Permintaan jaringan untuk operasi selanjutnya, seperti unggah dan unduh, akan secara otomatis diselesaikan melalui HTTPDNS.
// await ossClient.putObject(...);
return ossClient;
}
SDK HTTPDNS harus diinisialisasi sebelum SDK OSS.
3. Ringkasan
Anda dapat menggabungkan HTTPDNS dengan OSS SDK di HarmonyOS dengan menyediakan instance rcp.Session yang mencakup aturan resolusi DNS kustom kepada klien OSS. Metode ini mengoptimalkan kinerja dan keamanan jaringan.
Perhatikan poin-poin penting berikut selama proses integrasi:
Urutan inisialisasi: Inisialisasi layanan HTTPDNS sebelum menginisialisasi klien OSS.
Penanganan fallback: Dalam callback
dnsRules, kembalikan array kosong ([]) jika resolusi HTTPDNS gagal atau tidak menghasilkan hasil. Ini memungkinkan fallback ke DNS sistem.