🐮

Lambdaを用いてALBのリスナールールの優先度を変更する

2024/02/12に公開

やりたいこと

Lambdaを用いて、動的にALBのリスナールールの優先度を変更したい。
障害発生によりEC2が使用不可になった際、アラートを検知して、CloudWatchEventsからLambdaを呼び出すことで、クライアントへのレスポンスを動的に変更することができる(はず...ここまでは今回やりません)

Lambdaで下記のリスナールールの優先度を変更していきます(優先度1と優先度2の変更)

Lambdaの実装

import boto3

def lambda_handler(event, context):
    client = boto3.client('elbv2')

    #リスナールールの優先順位変更
    responce = client.set_rule_priorities(
        RulePriorities=[
            {
                'RuleArn': '障害発生時に優先されるルールのARN',
                'Priority': 1
            },
            {
                'RuleArn': '通常時に優先されるルールのARN',
                'Priority': 2
            },
        ]
    )
    
    # 変更後の設定確認
    result = client.describe_rules(
        ListenerArn='ALBのARN',
    )
        
    return result

IAMロール

ALBを操作するため、Lambaに実行ロールを付与する必要があります。あくまでもプライベートの練習なので、ALBの操作は全部許可しちゃいました。(ElasticLoadBalancingFullAccess)
DescribeRules,SetRulePrioritiesのポリシーが許可されていればOKのようです。

結果

Lambdaで簡単に変更可能できました!やれることが少し増えました。

Discussion