

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Application Load Balancer のリスナールールを追加する
<a name="add-rule"></a>

リスナーを作成するときは、デフォルトのルールを定義します。追加のルールはいつでも定義できます。各ルールはアクションと条件を指定する必要があり、オプションで変換を指定できます。詳細については次を参照してください:
+ [アクションタイプ](rule-action-types.md)
+ [条件の種類](rule-condition-types.md)
+ [変換](rule-transforms.md)

------
#### [ Console ]

**ルールを追加するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**ロードバランサー**] を選択します。

1. ロードバランサーを選択します。

1. **[リスナーとルール]** タブで、**[プロトコル:ポート]** 列のテキストを選択して、リスナーの詳細ページを開きます。

1. **[ルール]** タブで、**[ルールを追加する]** を選択します。

1. (オプション) ルールの名前を指定するには、**[名前とタグ]** を展開し、名前を入力します。タグを追加するには、**[タグを追加]** を選択し、タグキーとタグ値を入力します。

1. 条件ごとに、**[条件の追加]** を選択し、条件タイプを選択し、必要な条件値を指定します。
   + **[ホストヘッダー]** – 一致パターンタイプを選択し、ホストヘッダーを入力します。

     **[値の一致]** – 最大 128 文字。大文字と小文字は区別されません。使用できる文字は a～z、A～Z、0～9、特殊文字 (-\$1.)、ワイルドカード (\$1 および ?) です。少なくとも 1 つの「.」文字を含める必要があります。最後の「.」の文字の後はアルファベット文字のみ含めることができます。

     **[Regex マッチング]** – 最大 128 文字。
   + **[パス]** – 一致パターンタイプを選択し、パスを入力します。

     **[値の一致]** – 最大 128 文字。大文字と小文字の区別があります。使用できる文字は a～z、A～Z、0～9、特殊文字 (\$1-.\$1/\$1"'@:\$1;&)、ワイルドカード (\$1 および ?) です。

     **[Regex マッチング]** – 最大 128 文字。
   + **[クエリ文字列]** – キーと値のペア、またはキーのない値を入力します。

     最大 128 文字 大文字と小文字は区別されません。使用できる文字は a～z、A～Z、0～9、特殊文字 (\$1-.\$1/\$1"'@:\$1&()\$1,;=)、ワイルドカード (\$1 および ?) です。
   + **[HTTP リクエストメソッド]** — HTTP リクエストメソッドを入力します。

     最大 40 文字 大文字と小文字の区別があります。使用できる文字は A～Z および特殊文字 (-\$1) です。ワイルドカードがサポートされていません。
   + **[HTTP ヘッダー]** – 一致パターンタイプを選択し、ヘッダーの名前と比較文字列を入力します。
     + **[HTTP ヘッダー名]** — ルールによって、このヘッダーを含むリクエストが評価され、値が一致することが確認されます。

       **[値の一致]** – 最大 40 文字。大文字と小文字は区別されません。使用できる文字は a～z、A～Z、0～9、特殊文字 (\$1?-\$1\$1\$1%&'\$1.^\$1`\$1\$1) です。ワイルドカードがサポートされていません。

       **[Regex マッチング]** – 最大 128 文字。
     + **[HTTP ヘッダー値]** — HTTP ヘッダー値と比較する文字列を入力します。

       **[値の一致]** – 最大 128 文字。大文字と小文字は区別されません。使用できる文字は a～z、A～Z、0～9、スペース、特殊文字 (\$1"\$1\$1%&'()\$1,./:;<=>@[]^\$1`\$1\$1\$1\$1-)、ワイルドカード (\$1 および ?) です。

       **[Regex マッチング]** – 最大 128 文字。
   + **[送信元 IP]** — 送信元の IP アドレスを CIDR 形式で定義します。IPv4 CDIR と IPv6 CIDR のどちらも使用できます。ワイルドカードがサポートされていません。

1. (オプション) 変換を追加するには、**[変換の追加]** を選択し、変換タイプを選択し、一致する正規表現と置換文字列を入力します。

1. (オプション、HTTPS リスナーのみ) **事前ルーティングアクション**では、次のいずれかのアクションを選択します。
   + **ユーザーを認証**する – ID プロバイダーを選択し、必要な情報を入力します。詳細については、「[Application Load Balancer を使用してユーザーを認証する](listener-authenticate-users.md)」を参照してください。
   + **トークンの検証** – JWKS エンドポイント、問題、その他のクレームを入力します。詳細については、「[Application Load Balancer を使用して JWTs を検証する](listener-verify-jwt.md)」を参照してください。

1. **ルーティングアクション**では、次のいずれかのアクションを選択します。
   + **[ターゲットグループに転送]** - ターゲットグループを選択します。別のターゲットグループを追加するには、**[ターゲットグループの追加]** を選択し、ターゲットグループを選択して、相対重みを確認し、必要に応じて重みの更新を選択します。いずれかのターゲットグループに対して維持設定を有効にしている場合は、グループレベルの維持設定を有効にする必要があります。
   + **[Redirect to URL]** - 部分ごとに分けて **[URI 部分]** タブに入力するか、完全なアドレスを **[完全な URL]** タブに入力します。**[ステータスコード]** では、必要に応じて一時的 (HTTP 302) または恒久的 (HTTP 301) を選択します。
   + **[固定レスポンスを返す]** — ドロップされたクライアントリクエストに対して返される **[レスポンスコード]** を入力します。必要に応じて、**[コンテンツタイプ]** と **[レスポンス本文]** を指定できます。

1. [**次へ**] を選択します。

1. **[優先度]** に、1 から 50,000 までの値を入力します。ルールは優先順位の最も低い値から最も高い値の順によって評価されます。

1. [**次へ**] を選択します。

1. **[確認して作成]** ページで、**[作成]** をクリックします。

------
#### [ AWS CLI ]

**ルールを追加するには**  
[create-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-rule.html) コマンドを使用します。

次の例では、`forward` アクションと `host-header` 条件を使用してルールを作成します。

```
aws elbv2 create-rule \
    --listener-arn listener-arn \
    --priority 10 \
    --conditions "Field=host-header,Values=example.com,www.example.com" \
    --actions "Type=forward,TargetGroupArn=target-group-arn"
```

2 つのターゲットグループ間でトラフィックを分散する転送アクションを作成するには、代わりに次の `--actions` オプションを使用します。

```
    --actions '[{
        "Type":"forward",
        "ForwardConfig":{
          "TargetGroups":[
            {"TargetGroupArn":"target-group-1-arn","Weight":50},
            {"TargetGroupArn":"target-group-2-arn","Weight":50}
          ]
        }
    }]'
```

次の例では、`fixed-response` アクションと `source-ip` 条件を使用してルールを作成します。

```
aws elbv2 create-rule \
    --listener-arn listener-arn \
    --priority 20 \
    --conditions '[{"Field":"source-ip","SourceIpConfig":{"Values":["192.168.1.0/24","10.0.0.0/16"]}}]' \
    --actions "Type=fixed-response,FixedResponseConfig={StatusCode=403,ContentType=text/plain,MessageBody='Access denied'}"
```

次の例では、`redirect` アクションと `http-header` 条件を使用してルールを作成します。

```
aws elbv2 create-rule \
    --listener-arn listener-arn \
    --priority 30 \
    --conditions '[{"Field":"http-header","HttpHeaderConfig":{"HttpHeaderName":"User-Agent","Values":["*Mobile*","*Android*","*iPhone*"]}}]' \
    --actions "Type=redirect,RedirectConfig={Host=m.example.com,StatusCode=HTTP_302}"
```

------
#### [ CloudFormation ]

**ルールを追加するには**  
[AWS::ElasticLoadBalancingV2::ListenerRule](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-listenerrule.html) タイプのリソースを定義します。

次の例では、`forward` アクションと `host-header` 条件を使用してルールを作成します。条件が満たされると、ルールは指定されたターゲットグループにトラフィックを送信します。

```
Resources:
    myForwardListenerRule:
     Type: 'AWS::ElasticLoadBalancingV2::ListenerRule'
     Properties:
       ListenerArn: !Ref myListener
       Priority: 10
       Conditions:
         - Field: host-header
           Values:
             - example.com
             - www.example.com
       Actions:
         - Type: forward
           TargetGroupArn: !Ref myTargetGroup
```

または、条件が満たされたときに 2 つのターゲットグループ間でトラフィックを分散する転送アクションを作成するには、次のように `Actions` を定義します。

```
       Actions:
         - Type: forward
           ForwardConfig:
             TargetGroups:
               - TargetGroupArn: !Ref TargetGroup1
                 Weight: 50
               - TargetGroupArn: !Ref TargetGroup2
                 Weight: 50
```

次の例では、`fixed-response` アクションと `source-ip` 条件を使用してルールを作成します。

```
Resources:
    myFixedResponseListenerRule:
     Type: 'AWS::ElasticLoadBalancingV2::ListenerRule'
     Properties:
       ListenerArn: !Ref myListener
       Priority: 20
       Conditions:
         - Field: source-ip
           SourceIpConfig:
             Values:
                - 192.168.1.0/24
                - 10.0.0.0/16
       Actions:
         - Type: fixed-response
           FixedResponseConfig:
             StatusCode: 403
             ContentType: text/plain
             MessageBody: "Access denied"
```

次の例では、`redirect` アクションと `http-header` 条件を使用してルールを作成します。

```
Resources:
    myRedirectListenerRule:
     Type: 'AWS::ElasticLoadBalancingV2::ListenerRule'
     Properties:
       ListenerArn: !Ref myListener
       Priority: 30
       Conditions:
         - Field: http-header
           HttpHeaderConfig:
             HttpHeaderName: User-Agent
             Values: 
               - "*Mobile*"
               - "*Android*"
               - "*iPhone*"
       Actions:
         - Type: redirect
           RedirectConfig:
             Host: m.example.com
             StatusCode: HTTP_302
```

------