🐮
Lambdaを用いてALBのリスナールールの優先度を変更する
やりたいこと
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