すべてのプロダクト
Search
ドキュメントセンター

Server Load Balancer:AScript の構文と変数のリファレンス

最終更新日:Jun 30, 2026

AScript は、Application Load Balancer (ALB) 向けのプログラマブルスクリプトで、カスタム転送ルールを作成できます。

構文ルール

重要

AScript では二重引用符 (") は使用できません。すべての文字列値には、一重引用符 (') を使用する必要があります。

構文

ルール

コメント

番号記号 (#) に続く行のテキストはすべてコメントと見なされます。例: # this is annotation

識別子

  • 識別子には、文字、数字、アンダースコア (_) を使用できますが、数字で始めることはできません。識別子では、大文字と小文字が区別されます。

  • このルールは、組み込み変数、カスタム変数、および関数名に適用されます。

データ型

  • 文字列

    リテラル定数:一重引用符で囲まれた値。例: 'hello, AScript'

  • 数値

    リテラル定数:10 進数。例:10、-99、または 1.1。

  • ブール値

    リテラル定数:true または false。

  • 辞書

    以下にリテラル定数の例を示します。

    • []:空の辞書。

    • ['key1', 'key2', 100]

      • 1 -> 'key1'

      • 2 -> 'key2'

      • 3 -> 100

    • ['key1' = 'value1', 'key2' = 1000]

      • 'key1' -> 'value1'

      • 'key2' -> 1000

変数

  • 定義

    変数は、値が代入されたときに定義されます。

  • 使用法

    • 組み込み変数とカスタム変数を名前で参照します。

      • 組み込み変数の参照: host

      • カスタム変数の参照: seckey

    • $ 記号を使用して、組み込み変数を参照できます。

      組み込み変数の参照: $host

    • カスタム変数は、組み込み変数と同じ名前を使用できません。

      組み込み変数の一覧については、後述の「組み込み変数」の表をご参照ください。

演算子

  • =:代入演算子。

    • 例: seckey = 'ASDLFJ234dxvf34sDF'

    • 例: seckeys = ['key1', 'key2']

  • -:単項マイナス演算子。

    例: inum = -10

  • AScript は他の演算子をサポートしていません。代わりに、データ型に対する操作は組み込み関数によって処理されます。詳細については、「AScript 組み込み関数の概要」をご参照ください。

  • 条件文

    if condition {   
       ...
    }
    
    if condition1 {   
       if condition2 {
            ...
       }
    }
    
    if condition {
       ...
    } else {
       ...
    }
  • 説明

    • condition には、以下の構文要素を使用できます。

      • リテラル値

      • 変数

      • 関数呼び出し

    • 本文

      • 本文は空にできます。

      • 複数の文を記述できます。1 行につき 1 つの文を記述します。

    • 複数階層でのネストが可能です。

    • コーディングスタイル

      構文では、開始中括弧を if condition と同じ行に記述する必要があります。

関数

  • 定義構文

    def function_name(parameter_list) {
        ...
    }
  • 定義の詳細

    • パラメータリスト

      • 関数はパラメータなしで定義できます。

      • 複数のパラメータはコンマで区切ります。

    • 関数本体

      • 本文は空にできます。

      • 複数の文を記述できます。1 行につき 1 つの文を記述します。

      • 戻り値:return 文を使用できます。

    • コーディングスタイル

      構文では、開始中括弧を def 関数名 (パラメータリスト) と同じ行に記述する必要があります。

  • 関数呼び出し

    組み込み関数とカスタム関数は、どちらも function_name(parameter_list) を使用して呼び出します。

組み込み変数

  • 組み込み変数名の前にあるドル記号 ($) は、組み込み変数であることを識別するためにのみ使用され、省略してもその使用に影響はありません。

  • 組み込み変数は読み取り専用であり、左辺値として使用することはできません。つまり、組み込み変数に値を代入することはできません。

  • 各 AScript ルールでは、最大 200 個のグローバル変数を使用できます。ローカル変数の数に制限はありません。200 個を超える変数を使用するには、カスタム関数を定義し、その関数内でローカル変数を使用します。

変数名

説明

同等の Nginx 変数

$arg_{name}

Query String 内の name パラメーターの値です。Query String には、HTTP リクエストのリクエストパラメーターが含まれています。

ngx.var.arg_{name}

{name} 内のハイフン (-) は、アンダースコア (_) に置き換える必要があります。たとえば、X-USER-ID$arg_x_user_id に対応します。

$http_{name}

リクエストヘッダー内の name の値。

ngx.var.http_{name}

{name} 内のハイフン (-) は、アンダースコア (_) に置き換える必要があります。たとえば、X-USER-ID$http_x_user_id になります。

$cookie_{name}

リクエストの Cookie ヘッダー内の name の値。

ngx.var.cookie_{name}

{name} 内のハイフン (-) は、アンダースコア (_) に置き換える必要があります。たとえば、X-USER-ID$cookie_x_user_id になります。

$scheme

プロトコル。

ngx.var.scheme

$server_protocol

プロトコルバージョン。

ngx.var.server_protocol

$host

リクエストのホスト名。

ngx.var.host

$uri

生のリクエスト URI。

ngx.var.raw_uri

$args

$args は、現在の HTTP リクエストのクエリストリングを表しますが、疑問符 (?) は含みません。例: http://www.a.com/1k.file?k1=v1&k2=v2

  • $arg_k1 を使用して、対応する v1 の値を取得できます。

  • $args 変数は、k1=v1&k2=v2 のようなクエリ文字列全体を含みますが、疑問符 (?) は含みません。

ngx.var.args

$request_method

リクエストメソッド。

ngx.var.request_method

$request_uri

uri+'?'+args の内容。

ngx.var.request_uri

$remote_addr

クライアント IP アドレス。

ngx.var.remote_addr