概要
ELBのリスナーのルールで、送信元IP(source-ip
)とホストヘッダー(host-header
)をAND条件にする方法を紹介します。
前提
AWS ELBでは、複数のConditions
を指定すると、それらはAND条件として扱われます。
つまり、条件の全てが満たされる場合のみ、適用されます。
今回は、「特定のGIPから、特定のドメインにアクセスがあった場合のみアクションするという条件を設定したい」と仮定しています。
サンプルテンプレート
以下が、Cloudformationのサンプルテンプレートです。
(ELBやリスナーなどの部分は省略しています)
Parameters:
SampleIP:
Type: String
Default: "111.222.333.444/32"
SampleDomainName:
Type: String
Default: "example.com"
Resources:
## (省略)ELBやリスナーなどを記載 ##
HttpsListenerRule:
Type: 'AWS::ElasticLoadBalancingV2::ListenerRule'
Properties:
Actions:
- Type: forward
ForwardConfig:
TargetGroups:
- TargetGroupArn: !Ref TargetGroup
Weight: 1
Conditions:
- Field: source-ip
SourceIpConfig:
Values:
- !Ref SampleIP
- Field: host-header
Values:
- !Ref SampleDomainName
ListenerArn: !Ref HttpsDefaultListener
Priority: 1
上記により、リスナールールは、host-header
が!Ref SampleDomainName
に一致し、かつ送信元IPアドレスが!Ref SampleIP
に一致するリクエストに対してのみ適用されます。
管理コンソールから確認すると以下のようになります。
検証環境とかのもので、自社GIPからしかアクセスできないようにしたい、といった場合に活用できると思います。