AScript は、強力なカスタマイズ機能を提供するプログラム可能なスクリプト機能です。ALB コンソールの標準構成ではビジネス要件を満たせない場合に、転送ルールの二次開発を実行できます。
AScript とは
AScript は、習得しやすい構文と多くの関数を備えており、カスタムの ALB 構成を作成できます。
AScript は、カプセル化されていない関数、組み込み変数、および if-else 文を提供します。変数と関数を使用して、カスタム転送ルールを作成できます。このようにして、ビジネスは変化に迅速に適応できます。
AScript 構文の詳細については、「AScript 構文」をご参照ください。
ユースケース シナリオ
シナリオ | 説明 |
ホットリンク保護 | AScript を使用して、認証アルゴリズム、ユーザーエージェント (UA) ブラックリスト、リファラー ホワイトリストをカスタマイズできます。 AScript を使用すると、認証ロジックをカスタマイズし、リクエスト パラメータ、Cookie、またはアルゴリズムに基づいてリクエストを認証できます。これは、リソースを攻撃から保護するのに役立ちます。 |
ホワイトリストまたはブラックリストに基づくアクセス制御 | AScript を使用して、IP ブラックリストまたはホワイトリストを構成し、クライアントからのアクセスを制御できます。 |
リクエストとレスポンス ヘッダーのカスタマイズ | AScript を使用して、ビジネス要件に基づいて、リクエスト ヘッダーやレスポンス ヘッダーなどの変数を変更できます。 |
リクエストの書き換えとリダイレクト | AScript を使用して、リクエスト URI とファイル拡張子を書き換え、URI プレフィックスを追加し、302 リダイレクトを実行できます。このようにして、リクエストを書き換えたり、目的のリソースにリダイレクトしたりできます。Web サイトで複数の言語がサポートされている場合、Web サイト宛てのリクエストは、リクエストされた言語で記述されたコンテンツを指す URL にリダイレクトされます。たとえば、英語またはドイツ語が必要なリクエストは、それぞれ中国のサイトから英語またはドイツ語のサイトにリダイレクトされます。 |
課金
ルール評価の数がロードバランサ キャパシティ ユニット (LCU) 料金にどのように影響するかについては、「ALB 課金ルール」をご参照ください。
しくみ
動作の原則
ALB コンソールの標準転送ルールと同様に、AScript は ALB によるリクエストの処理方法を定義するために使用されます。
リクエストが ALB に到達すると、ALB は ALB コンソールで構成された転送ルールに基づいてリクエストを処理します。 AScript は、転送ルールが適用される前または後にスクリプトを実行してリクエストを処理できます。
モデル
スクリプトは、次のモデルに基づいて実行されます。
AScript はスクリプトを実行してさまざまな機能を実現します。関数は、スクリプト内の条件が満たされた場合にのみトリガーされます。
リクエスト処理パイプライン内でのスクリプトの実行位置と優先順位を指定できます。
スクリプトは、リスナーに基づいて管理されます。
実行位置
インバウンド転送ルールの適用前または適用後、あるいはアウトバウンド転送ルールの適用前に実行されるようにスクリプトを構成できます。実現できる機能は、実行位置によって異なります。
インバウンド転送ルールの前: たとえば、頻繁に使用するファイルを自動的に名前変更したり、ファイル拡張子を小文字に変換したり、URI プレフィックスを追加したり、ファイル拡張子を書き換えたりできます。
インバウンド転送ルールの後: たとえば、頻繁に使用するファイルを自動的に名前変更したり、ファイル拡張子を小文字に変換したり、URI プレフィックスを追加したり、ファイル拡張子を書き換えたりできます。
アウトバウンド転送ルールの前: たとえば、頻繁に使用するファイルを自動的に名前変更できます。
スクリプトの実行
説明:
スクリプト ID: スクリプトのステータスを示します。
次の表は、さまざまな状態のスクリプトの実行情報について説明しています。
スクリプト ID
説明
-1
デフォルト値。
1
スクリプトは実行されません。
2
条件が満たされています。
スクリプトで
if condition {}
が指定されており、condition
が満たされています。3
条件が満たされていません。
スクリプトで
if condition {}
が指定されていますが、condition
が満たされていないか、if condition {}
が指定されていません。4
スクリプトの実行に失敗しました。考えられるエラーの原因:
400 :
not found inline func %s
401 :
not found argument %d in %s
402: arg %d in %s の文字列型が一致しません
403: arg %d in %s の数値型が一致しません
404: arg %d in %s のテーブル型が一致しません
405: arg %d in %s のブール型が一致しません
406: arg %d in %s の関数型が一致しません
407: exec cputime 制限 %d-%d us を超過しました
408: API 呼び出し制限 %s %d-%d 回を超えました
409: m3u8_rewrite の最大ループ制限 %d を超えました
410: foreach の最大ループ制限 %d を超えました
499: 不明な理由
実行時間:
単位: マイクロ秒。
デフォルト値: -1。
Web インターフェイスに表示される実行時間:
Tier 1: 0 ~ 100
Tier 2: 100 ~ 500
Tier 3: 500 ~ 1000
Tier 4: 1000 ~ 5000
Tier 5: 5000 ~ 20000
Tier 6: 20000 ~ 50000
Tier 7: 50000 以上
実行は一時停止されています:
デフォルト値: -1。