Application Load Balancer (ALB) の標準コンソールオプションでは要件を満たせない場合に、AScript を使用して ALB の機能を拡張できます。
AScript とは
AScript は、学習しやすい構文と豊富な関数ライブラリを備えており、カスタムでモジュラーな ALB 構成を構築できます。
これにより、標準構成では対応できないシナリオや、ビジネス要件としてより高い柔軟性が求められるケースに対応できます。
AScript 構文の詳細については、「AScript 構文ルール」をご参照ください。
ユースケース
シナリオ | 説明 |
ホットリンク保護 | カスタム認証アルゴリズム、User-Agent ブラックリスト、Referer ホワイトリストを実装できます。リクエストパラメーター、Cookie、その他の複雑なロジックに基づいて認証を設定し、リソースを保護できます。 |
ブラックリスト/ホワイトリスト制御 | クライアントの IP アドレスによるブラックリスト/ホワイトリストを作成し、アクセスを制御できます。 |
リクエストおよびレスポンスヘッダー制御 | AScript を使用して、リクエストパラメーター、リクエストヘッダー、レスポンスヘッダーを変更できます。 |
書き換えとリダイレクト | URI の書き換え、ファイル拡張子の変更、URI プレフィックスの追加、または 302 リダイレクトを実行できます。多言語対応サイトなどで、ユーザーの言語プリファレンスに基づいてリダイレクトする際に便利です。 |
課金
ルール評価回数が Load Balancer Capacity Unit (LCU) 料金に与える影響については、「ALB 課金ルール」をご参照ください。
仕組み
実行原則
設定した AScript ルールは、ALB コンソールの標準転送ルールと連携してリクエストを処理します。
リクエストが ALB リスナーに到達すると、リスナーは設定された転送ルールに従ってリクエストを処理します。AScript は、これらの標準ルールの適用前または適用後に実行できます。
ルールモデル
AScript ルールモデルは、以下の原則に基づいています。
ビジネスロジックを個別のルールに分離でき、実行フローを制御できます。
各ルールの実行ポイントを個別に指定できます。
ルールはリスナー単位で設計・管理されます。
ルール実行ポイント
AScript ルールは、リクエストおよびレスポンスのライフサイクルにおけるさまざまなタイミングで実行できます。
リクエスト転送ルールの前/後:一般的なユースケースには、ファイル名の自動変更、ファイル拡張子を小文字に変換、URI プレフィックスの追加、ファイル拡張子の書き換えなどがあります。
レスポンス転送ルールの前:一般的なユースケースには、ファイル名の自動変更があります。
ルール実行ステータス
ルール実行レコードを確認するには、デバッグ用レスポンスヘッダーを有効化します。「AScript ルールの設定」時に、[詳細設定] セクションでリクエストに _es_dbg パラメーターを含めるオプションを有効にしてください。これにより、実行レコードを含むデバッグ用レスポンスヘッダーが追加されます。
以下のフィールドでルール実行ステータスを確認できます。
ルール ID:各ルールの一意な識別子で、形式は
as-****です。実行ステータスコードと説明:
ステータスコード
説明
空
ルールは実行されませんでした。
0
実行ヒット。
ルールに
if condition {}が含まれており、conditionが true の場合。1
実行ミス。
ルールに
if condition {}が含まれているがconditionが false の場合、またはルールにif condition {}が含まれていない場合。2
実行エラー。
実行時間:
単位:マイクロ秒(µs)。
デフォルト値:-1。
コンソールに表示される実行時間の範囲:
レベル 1:0~100 µs
レベル 2:100~500 µs
レベル 3:500~1,000 µs
レベル 4:1,000~5,000 µs
レベル 5:5,000~20,000 µs
レベル 6:20,000~50,000 µs
レベル 7:>50,000 µs
AScript ルール実行中断:
デフォルト値:-1。