本ドキュメントでは、HTTPDNS Harmony SDK の統合および使用方法について説明します。
SDK のインストール
この SDK の使用方法を学ぶには、デモ サンプルプロジェクトのソースコード をご参照ください。
ohpm を使用した自動インポート
v2.0.1 以降では、OpenHarmony 第三者ライブラリリポジトリ から SDK を取得できます。
プロジェクトのルートディレクトリで、以下のコマンドを実行します:
ohpm install @alidns/httpdnsohpm ツールおよび OpenHarmony 向け第三者 SDK のインストールに関する詳細は、「OpenHarmony 第三者ライブラリリポジトリの使い方」をご参照ください。
ローカル HAR パッケージを使用した手動インポート
SDK のダウンロード から Harmony SDK をダウンロードし、アプリケーションプロジェクトに統合します。
依存関係の構成を行う際は、プロジェクトの
oh-package.json5ファイル内で HAR パッケージの実際のパスを指定してください。以下は、HAR パッケージがプロジェクトのルートディレクトリにある場合の構成例です:"dependencies": { "@alidns/httpdns": "file:alidns-harmony-sdk-2.0.1.har" }依存関係の構成後、
ohpm installコマンドを実行して依存パッケージをインストールします。パッケージはプロジェクトのoh_modulesディレクトリに格納されます。ohpm install
SDK の使用
モジュールのインポート
import { Alipdns,schemaType,DNSDomainInfo, DNSLogger } from '@alidns/httpdns'認証の設定
ユーザーのアイデンティティ保護および第三者による不正利用防止のため、認証を有効化します。SDK の構成を行うには、アビリティの onCreate ライフサイクルコールバック内で以下のコードを実行します。
キーの作成 をご参照いただき、コンソール上で AccessKey ID および AccessKey Secret を作成してください。
import { Alipdns,schemaType,DNSDomainInfo, DNSLogger } from '@alidns/httpdns'
const AccountID = 'TODO: コンソールから取得したご利用のアカウント ID に置き換えてください。';
const AccessKeyID = 'TODO: コンソールのアクセス設定セクションで作成したキーの AccessKey ID に置き換えてください。';
const AccessKeySecret = 'TODO: コンソールのアクセス設定セクションで作成したキーの AccessKey Secret に置き換えてください。';
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
// ************* Alibaba Cloud HTTPDNS SDK 構成 - 開始 *************
DNSLogger.getInstance().setEnableLogger = true;
let alipdns = Alipdns.getInstance();
alipdns.Init(this.context,AccountID,AccessKeyID,AccessKeySecret);
alipdns.setKeepAliveDomains(['your-domain-1.com','your-domain-2.com']);
alipdns.setSchemaType(schemaType.https);
alipdns.preLoadDomains(alipdns.QTYPE_V4,['your-domain-1.com','your-domain-2.com','your-domain-3.com']);
// ************* Alibaba Cloud HTTPDNS SDK 構成 - 終了 *************
}
// その他のコードは省略
}API リファレンス
1. アカウント ID および認証
アカウント ID は必須パラメーターであり、コンソールでアプリケーションを登録した際に生成される一意の識別子です。認証により不正利用が防止されます。キーの作成 をご参照いただき、コンソール上で AccessKey を作成してください。その後、以下のコードを使用してアプリケーションに設定します:
Alipdns.getInstance().Init(this.context,AccountID,AccessKeyID,AccessKeySecret);アカウント ID、AccessKey ID、AccessKey Secret、またはアプリケーションのランタイムデータがログに公開されないようにするため、本番環境では SDK のデバッグログを無効化してください。
アカウント ID、AccessKey ID、AccessKey Secret の各パラメーターは課金および請求と密接に関連しています。悪意あるデコンパイルによるこれらの資格情報の漏洩を防ぐため、本番環境ではプレーンテキストで渡さないようご注意ください。たとえば、プレーンテキストの資格情報をエンコードまたは暗号化し、SDK に渡す直前にのみデコードまたは復号する方法があります。また、アプリケーションコードの難読化および強化も推奨します。そうしない場合、第三者がデコンパイルによってアカウント ID、AccessKey ID、AccessKey Secret を取得できる可能性があります。
2. 解決プロトコル
SDK を使用すると、DNS 解決リクエストに使用するプロトコルを指定できます。scheme プロパティを設定することで、HTTP または HTTPS を選択できます。
デフォルトでは、SDK はより高いセキュリティを確保するために HTTPS プロトコルを使用します。HTTPDNS の課金は HTTP 解決リクエスト数に基づいており、HTTPS リクエストの課金額は HTTP リクエストの 5 倍となります。ビジネス要件に応じてスキームタイプを選択してください。プロトコルの設定には、以下のコードを使用します:
Alipdns.getInstance().setSchemaType(schemaType.https);3. ドメインキャッシュの永続化
キャッシュが有効な場合、特定のドメインに対してキャッシュの永続化を構成できます。SDK は、これらのドメインの期限切れキャッシュを自動的に更新し、データの最新性を保証します。ただし、これによりドメイン解決リクエスト数およびクライアント側トラフィックが増加する可能性があります。この機能を有効化しない場合、SDK は期限切れキャッシュを自動的に更新しません。キャッシュは、解決メソッドを呼び出したときにのみ更新されます。特定のドメインに対するキャッシュ永続化を構成するには、以下のコードを使用します:
Alipdns.getInstance().setKeepAliveDomains(['your-domain-1.com','your-domain-2.com']);利点:
TTL が有効期限切れになる前に、レコードをタイムリーに更新します。
事前解決と組み合わせることで、初回解決遅延を 0 ms まで低減します。
欠点:キャッシュエントリの経過時間が TTL の 75 % を超えると、SDK が追加のリクエストを送信し、追加の課金が発生します。
4. 事前解決
ドメインの初回解決によりキャッシュが充填された後、以降のリクエストはゼロレイテンシで解決できます。そのため、アプリケーション起動後に必要となる可能性のあるドメインについては、事前解決の使用を推奨します。
例:
Alipdns.getInstance().preLoadDomains(alipdns.QTYPE_V4,['your-domain-1.com','your-domain-2.com','your-domain-3.com']);5. SDK デバッグログ
SDK のデバッグログを有効化または無効化できます。true を指定するとデバッグログが有効化され、false を指定すると無効化されます。このメソッドは、SDK の初期化前に呼び出す必要があります。
DNSLogger.getInstance().setEnableLogger = true;6. モバイル解決 HTTPDNS へのフォールバック
デフォルトでは、HTTPDNS 解決が失敗した場合、SDK は自動的に ローカル DNS へフォールバックします。
Alipdns.getInstance().setEnableLocalDns(true);// デフォルトでは、HTTPDNS 解決が失敗した場合にローカル DNS へのフォールバックが有効化されています。7. 解決タイムアウト
timeout プロパティは、ドメイン解決のタイムアウトを指定します。デフォルトのタイムアウトは 3 秒です。タイムアウト値はカスタマイズ可能で、2 秒~5 秒の範囲で設定してください。
Alipdns.getInstance().setTimeout(3);// デフォルトのタイムアウトは 3 秒です。8. 解決メソッド
SDK は、ドメイン解決のための異なるメソッドを提供します。以下のコードはその例です:
/// 非同期解決メソッド
/// Alipdns.getInstance().QTYPE_V4 解決する IP アドレスの種類を指定:IPv4。
/// host 解決対象のドメイン。
/// ips 全 IP アドレスを返すコールバック。
Alipdns.getInstance().getIpsByHostAsync(Alipdns.getInstance().QTYPE_V4, host,(ips:string[]) => {});
/// キャッシュからデータを取得する同期解決メソッド。
/// Alipdns.getInstance().QTYPE_V4 解決する IP アドレスの種類を指定:IPv4。
/// host 解決対象のドメイン。
/// true 期限切れの IP 結果を返すことを許可するかどうかを指定。
const result = Alipdns.getInstance().getIpsByHostFromCache(Alipdns.getInstance().QTYPE_V4,host,true);
SDK の使用
addCustomDnsRule の使用
ネットワークリクエストを開始する前に、SDK のドメイン解決 API を呼び出します。その後、connection.addCustomDnsRule API を使用して結果を適用します。これにより、現在のアプリケーションに対してホストと対応する IP アドレス間のカスタムマッピングが追加されます。以下のコードは、HTTP リクエスト の例です:
import { http } from '@kit.NetworkKit';
import connection from '@ohos.net.connection';
import { Alipdns,schemaType,DNSDomainInfo } from '@alidns/httpdns'
import Url from '@ohos.url';
export async function requestWithHttpDns(url: string, options: http.HttpRequestOptions): Promise<http.HttpResponse> {
let urlObject = Url.URL.parseURL(url);
const host = urlObject.hostname;
// ************* HTTPDNS を使用したドメイン名の解決 - 開始 *************
const result = Alipdns.getInstance().getIpsByHostFromCache(Alipdns.getInstance().QTYPE_V4,host,true);
// ************* HTTPDNS を使用したドメイン名の解決 - 終了 *************
// ************* システム API を使用した DNS ルールの設定 - 開始 *************
try {
await connection.removeCustomDnsRule(host);
} catch (ignored) {
}
if (result.length ?? 0 > 0) {
await connection.addCustomDnsRule(host, result);
} else {
console.log(`HTTPDNS 解決で結果が得られませんでした。DNS ルールは設定されません。`);
}
// ************* システム API を使用した DNS ルールの設定 - 終了 *************
// ************* システム API を使用したネットワークリクエストの開始 - 開始 *************
const httpRequest = http.createHttp();
return httpRequest.request(url, options);
// ************* システム API を使用したネットワークリクエストの開始 - 終了 *************
}HarmonyOS のカスタム DNS ルール
HarmonyOS では、DNS 解決ルールをカスタマイズするための以下の API が提供されています:addCustomDnsRule、removeCustomDnsRule、および clearCustomDnsRules。
addCustomDnsRule API を使用すると、アプリケーションがホストと対応する IP アドレス間のカスタムマッピングを追加できます。
removeCustomDnsRule API を使用すると、アプリケーションが指定されたホストのカスタム DNS ルールを削除できます。
clearCustomDnsRules API を使用すると、アプリケーションがすべてのカスタム DNS ルールを削除できます。
したがって、ネットワークリクエストの DNS ルールをカスタマイズする場合は、ネットワークリクエストを開始する前に、これらの API を使用してルールを設定してください。
dnsRules メソッドの使用
Remote Communication Kit パッケージを使用してネットワークリクエストを行う場合、まず SDK でドメインを解決し、次に dnsRules フィールドを構成して結果を適用します。以下のコードは、fetch リクエスト の例です:
import { Alipdns,schemaType,DNSDomainInfo } from '@alidns/httpdns'
import { rcp } from '@kit.RemoteCommunicationKit';
import Url from '@ohos.url';
export async function rcpWithHttpDns(url: string): Promise<rcp.Response> {
let urlObject = Url.URL.parseURL(url);
const host = urlObject.hostname;
// ************* HTTPDNS を使用したドメインの解決および IP アドレスの取得 - 開始 *************
const result = Alipdns.getInstance().getIpsByHostFromCache(Alipdns.getInstance().QTYPE_V4,host,true);
// ************* HTTPDNS を使用したドメインの解決および IP アドレスの取得 - 終了 *************
const request = new rcp.Request(url, "GET");
if (result.length ?? 0 > 0) {
request.configuration = {
dns: {
// ************* dnsRules を使用した IP アドレスの設定 - 開始 *************
dnsRules: [{ host, port: 443, ipAddresses: result },{ host, port: 80, ipAddresses: result }]
// ************* dnsRules を使用した IP アドレスの設定 - 終了 *************
}
}
}
// ************* システム API を使用したネットワークリクエストの開始 - 開始 *************
const session = rcp.createSession();
return session.fetch(request);
// ************* システム API を使用したネットワークリクエストの開始 - 終了 *************
}ドメイン解決のベストプラクティス
事前解決と期限切れの応答を組み合わせて、最適なパフォーマンスを実現
ネットワークパフォーマンスが非常に重要となるシナリオでは、事前解決と「期限切れ応答の許可」戦略を組み合わせることを推奨します。この組み合わせにより、DNS 解決速度が大幅に向上し、ゼロレイテンシでの解決さえ実現可能です。
SDK の組み込みキャッシュ機構により、事前解決が完了した後は、ドメインに対する以降の解決リクエストが直接キャッシュをヒットします。これによりネットワークラウンドトリップが回避され、ユーザーエクスペリエンスが大幅に最適化されます。
1. 事前解決
キャッシュを有効化し、重要なドメインを事前解決します。この操作はアプリケーションの起動時に実行します。
EntryAbility の onCreate() メソッド内で、サービスで使用されるドメイン名を能動的に解決し、結果をローカルメモリにキャッシュします。
1. IPv4 専用シナリオ
// IPv4 のみをサポートするシナリオ向け。
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onCreate');
let alipdns = Alipdns.getInstance();
alipdns.Init(this.context,AccountID,AccessKeID,AccessKeySecret);
// A レコード(IPv4)を事前解決。
alipdns.preLoadDomains(alipdns.QTYPE_V4,['your-domain-to-preload-1.com','your-domain-to-preload-2.com']);
}2. IPv6 サポート
// IPv6 サポートが必要なシナリオ向け。
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onCreate');
let alipdns = Alipdns.getInstance();
alipdns.Init(this.context,AccountID,AccessKeID,AccessKeySecret);
// A レコードおよび AAAA レコード(IPv4 および IPv6)を事前解決。
alipdns.preLoadDomains(alipdns.QTYPE_Auto,['your-domain-to-preload-1.com','your-domain-to-preload-2.com']);
}2. 期限切れ応答の許可
ドメインを解決する際は、キャッシュを優先的に使用し、期限切れであってもまだ有効なキャッシュレコードの使用を許可します。これにより、レコードの TTL が有効期限切れになっていても、キャッシュがクリアされていなければ即座に結果を返すことができます。これによりゼロウェイト解決が実現します。
1. IPv4 専用シナリオ
// IPv4 のみをサポートするシナリオ向け。
// ************* HTTPDNS を使用したドメイン名の解決 - 開始 *************
// A レコード(IPv4)を解決。
let finalIps = await this.resolverHost(Alipdns.getInstance().QTYPE_V4,host);
// ************* HTTPDNS を使用したドメイン名の解決 - 終了 *************
/**
* HTTPDNS ドメイン解決(キャッシュ優先、ネットワークフォールバック付き)
* @param qtype - DNS クエリタイプ。例:Alipdns.getInstance().QTYPE_V4(A レコードを解決)。
* @param host - 送信先ドメイン。
* @returns 成功して解決された IP アドレスの配列。
*/
async resolverHost(qtype: string, host: string): Promise<string[]> {
// ************* HTTPDNS 解決:キャッシュ優先、ネットワークフォールバック *************
let finalIps: string[] = [];
// 1. IP アドレスをキャッシュから優先的に取得。第 3 パラメーターを true に設定することで、期限切れでも利用可能なレコードを返すことを許可します。
try {
const cacheResult = Alipdns.getInstance().getIpsByHostFromCache(qtype, host, true);
// キャッシュ結果の検証。
if (Array.isArray(cacheResult) && cacheResult.length > 0) {
finalIps = cacheResult;
console.log(`httpdns: [キャッシュヒット] ドメイン ${host} は ${finalIps.join(', ')} に解決されました。`);
} else {
console.log(`httpdns: [キャッシュミス/無効] ドメイン ${host}。ネットワークリクエストを開始します。`);
}
} catch (e) {
console.warn(`httpdns: キャッシュクエリ例外:${e?.message || e}`);
}
// 2. キャッシュが無効な場合、ネットワークリクエストを開始。
if (finalIps.length === 0) {
try {
finalIps = await this.getIpsFromNetwork(qtype, host);
if (finalIps.length > 0) {
console.log(`httpdns: [ネットワークリクエスト成功] ドメイン ${host} は ${finalIps.join(', ')} に解決されました。`);
} else {
console.warn(`httpdns: [ネットワークリクエスト] ドメイン ${host} は空の結果を返しました。`);
}
} catch (err) {
console.error(`httpdns: [ネットワークリクエスト失敗] ドメイン ${host}:${err?.message || JSON.stringify(err)}`);
// finalIps を空配列のままにして、システム DNS へフォールバックします。
}
}
return finalIps;
}
// キャッシュが利用できない場合、ネットワークリクエストを送信してドメインを解決し、IP アドレスを取得します。
getIpsFromNetwork(qtype: string, domain: string): Promise<string[]> {
return new Promise((resolve) => {
Alipdns.getInstance().getIpsByHostAsync(qtype, domain, (ips: string[]) => {
if (Array.isArray(ips)) {
resolve(ips);
} else {
resolve([]);
}
});
});
}2. IPv6 サポート
// IPv6 サポートが必要なシナリオ向け。
// ************* HTTPDNS を使用したドメイン名の解決 - 開始 *************
// A レコードおよび AAAA レコード(IPv4 および IPv6)を解決。
let finalIps = await this.resolverHost(Alipdns.getInstance().QTYPE_Auto,host);
// ************* HTTPDNS を使用したドメイン名の解決 - 終了 *************
/**
* HTTPDNS ドメイン解決(キャッシュ優先、ネットワークフォールバック付き)
* @param qtype - DNS クエリタイプ。例:Alipdns.getInstance().QTYPE_Auto(A レコードおよび AAAA レコードを解決)。
* @param host - 送信先ドメイン。
* @returns 成功して解決された IP アドレスの配列。
*/
async resolverHost(qtype: string, host: string): Promise<string[]> {
// ************* HTTPDNS 解決:キャッシュ優先、ネットワークフォールバック *************
let finalIps: string[] = [];
// 1. IP アドレスをキャッシュから優先的に取得。第 3 パラメーターを true に設定することで、期限切れでも利用可能なレコードを返すことを許可します。
try {
const cacheResult = Alipdns.getInstance().getIpsByHostFromCache(qtype, host, true);
// キャッシュ結果の検証。
if (Array.isArray(cacheResult) && cacheResult.length > 0) {
finalIps = cacheResult;
console.log(`httpdns: [キャッシュヒット] ドメイン ${host} は ${finalIps.join(', ')} に解決されました。`);
} else {
console.log(`httpdns: [キャッシュミス/無効] ドメイン ${host}。ネットワークリクエストを開始します。`);
}
} catch (e) {
console.warn(`httpdns: キャッシュクエリ例外:${e?.message || e}`);
}
// 2. キャッシュが無効な場合、ネットワークリクエストを開始。
if (finalIps.length === 0) {
try {
finalIps = await this.getIpsFromNetwork(qtype, host);
if (finalIps.length > 0) {
console.log(`httpdns: [ネットワークリクエスト成功] ドメイン ${host} は ${finalIps.join(', ')} に解決されました。`);
} else {
console.warn(`httpdns: [ネットワークリクエスト] ドメイン ${host} は空の結果を返しました。`);
}
} catch (err) {
console.error(`httpdns: [ネットワークリクエスト失敗] ドメイン ${host}:${err?.message || JSON.stringify(err)}`);
// finalIps を空配列のままにして、システム DNS へフォールバックします。
}
}
return finalIps;
}
// キャッシュが利用できない場合、ネットワークリクエストを送信してドメインを解決し、IP アドレスを取得します。
getIpsFromNetwork(qtype: string, domain: string): Promise<string[]> {
return new Promise((resolve) => {
Alipdns.getInstance().getIpsByHostAsync(qtype, domain, (ips: string[]) => {
if (Array.isArray(ips)) {
resolve(ips);
} else {
resolve([]);
}
});
});
}オンプレミス DNS
v2.0.0 以降、HTTPDNS Harmony SDK はオンプレミス DNS のプライベートデプロイメントをサポートします。
オンプレミス DNS モードは、金融、政府、大規模インターネット企業など、データコンプライアンスおよびカスタム解決ポリシーに対する要件が高いシナリオに適しています。SDK は、パブリッククラウド DNS 専用、オンプレミス DNS 専用、およびそれぞれを相互にフォールバック可能なハイブリッド主従モードの 4 つの典型的なデプロイモードをサポートします。この柔軟性により、多様なサービスアーキテクチャに対応できます。
コア機能
プライベートデプロイメントのサポート:IPv4 アドレス、IPv6 アドレス、またはホスト名を使用してオンプレミス DNS サービスのエンドポイントを構成できます。
相互認証:通信のセキュリティを確保するため、顧客固有の
accessKeyIdおよびaccessKeySecretを使用してリクエストに署名します。サーキットブレーカーおよびヘルスチェック:オンプレミス DNS ノードが連続して 3 回失敗した場合、サーキットブレーカーが自動的にトリガーされます。SDK は、指定された
healthCheckDomainを使用して、1 分ごとにノードの可用性をプローブします。ノードが回復した場合、自動的に再有効化されます。インテリジェントなフォールバック解決:主 DNS(パブリッククラウド DNS またはオンプレミス DNS)の失敗回数が指定されたしきい値に達した場合、SDK は自動的にスタンバイ DNS に切り替えます。これにより、ドメイン解決の高可用性が確保されます。
既存 API とのシームレスな互換性:アプリケーションは、パブリッククラウド DNS およびオンプレミス DNS の両方に対して同じ方法で解決 API を呼び出し、ビジネスロジックを変更する必要はありません。
構成
1. パブリッククラウド DNS 専用
このモードは、オンプレミス DNS をデプロイしていない標準的な SaaS ユーザーに適しています。
let alipdns = Alipdns.getInstance();
alipdns.Init(this.context,AccountID,AccessKeyID,AccessKeySecret);2. オンプレミス DNS 専用(プライベートデプロイメント)
このモードは、完全にオンプレミス DNS に依存するお客様に適しています。
let alipdns = Alipdns.getInstance();
alipdns.InitFusionDNS(this.context,['1.1.X.X','2.2.X.X'],null, null,'443','your-health-check-domain.com','your-private-access-key-id','your-private-access-key-secret');3. パブリッククラウド DNS を主、オンプレミス DNS を従とするモード
主 Alibaba Cloud パブリック HTTPDNS からの解決が失敗した場合、SDK は自動的にオンプレミス DNS へフォールバックします。
let alipdns = Alipdns.getInstance();
// 主:パブリッククラウド DNS
alipdns.Init(this.context,AccountID,AccessKeID,AccessKeySecret);
// 従:オンプレミス DNS
alipdns.InitFusionDNS(this.context,['1.1.X.X','2.2.X.X'],null, null,'443','your-health-check-domain.com','your-private-access-key-id','your-private-access-key-secret');4. オンプレミス DNS を主、パブリッククラウド DNS を従とするモード
主オンプレミス DNS からの解決が失敗した場合、SDK は自動的に Alibaba Cloud パブリッククラウド DNS へフォールバックします。
let alipdns = Alipdns.getInstance();
// 主:オンプレミス DNS
alipdns.InitFusionDNS(this.context,['1.1.X.X','2.2.X.X'],null, null,'443','your-health-check-domain.com','your-private-access-key-id','your-private-access-key-secret');
// 従:パブリッククラウド DNS
alipdns.Init(this.context,AccountID,AccessKeID,AccessKeySecret);新規サービス API
オンプレミス DNS のプライベートデプロイメントおよび高可用性ディザスタリカバリをサポートするため、SDK は以下の 3 つのコアインターフェイスを提供します。これらのインターフェイスを使用して、オンプレミス DNS サービスの構成、セキュリティポリシーの制御、および自動主従フォールバックの実装が可能です。
1. オンプレミス DNS エンドポイントおよび認証情報
/**このメソッドは、オンプレミス DNS を使用するプライベートデプロイメント向けです。パブリック DNS のみを使用する場合は、このメソッドを呼び出す必要はありません。
*
* オンプレミス DNS のサーバーアドレスおよび認証情報を設定します。
* 顧客は、プライベート DNS サーバーのアドレスおよび認証情報をこのインターフェイスを介して渡します。
* SDK は、この情報を使用してリクエストを開始します。
* @param ctx コンテキスト。
* @param serverIpv4Arr IPv4 アドレスの配列。null を指定可能です。
* @param serverIpv6Arr IPv6 アドレスの配列。null を指定可能です。
* @param serverHostArr ホスト名の配列。null を指定可能です。
* @param port サービスポート(例:「443」)。null を指定した場合、デフォルトポート「443」が使用されます。
* @param healthCheckDomain サーキットブレーカー後のヘルスチェックに使用するドメイン。解決サービスが連続して 3 回以上失敗した場合、サーキットブレーカーがトリガーされ、サービスの IP アドレスがヘルスチェック状態に入ります。以降のリクエストはこのサービスにルーティングされません。タイマーはこのドメインを使用して、1 分ごとに解決インターフェイスを呼び出してサービスの可用性を確認します。プローブが成功した場合、サービスのステータスは「アクティブ」に復元され、以降のリクエストはこのサービスにルーティングされます。
* @param accessKeyId 認証用のプライベート AccessKey ID。
* @param accessKeySecret 認証用のプライベート AccessKey Secret。
*/
InitFusionDNS(
ctx:Context,
ipv4: string[] | null,
ipv6: string[] | null,
host: string[] | null,
port: string | null,
healthCheckDomain: string,
accessKeyId: string,
accessKeySecret: string
)2. 自動フォールバックしきい値
/**パブリッククラウド DNS およびオンプレミス DNS の両方を構成している場合、このメソッドを使用して、主 DNS の失敗回数しきい値を設定し、スタンバイへのフォールバックをトリガーします。1 種類の DNS のみを構成している場合は、このメソッドは不要です。
*
* @param fallbackThreshold 失敗回数。主 DNS がパブリッククラウド DNS の場合のデフォルト値は 4、主 DNS がオンプレミス DNS の場合のデフォルト値は 2 です。
* 有効な値は 0 ~ 4 です。値が 0 の場合、即時フォールバックが行われます。最大値は 4 です。
*/
setFallbackThreshold(fallbackThreshold:number);