[AWS] ALB Target Groupの登録解除遅延をpythonで一括で変更


解除遅延が未設定では300秒になっており、
リリースの際ALBから切り離すのを待つのが地味につらいため、60秒に一括で変更したかった。
Management Consoleからポチポチ変更しても良かったが、面倒なのでスクリプトで。

import boto3

timeout_seconds = 60

elbv2 = boto3.client('elbv2')
target_groups = elbv2.describe_target_groups()['TargetGroups']
for target_group in target_groups:
  print('# ' + target_group['TargetGroupName'])

  attr = elbv2.describe_target_group_attributes(TargetGroupArn=target_group['TargetGroupArn'])['Attributes']

  now_timeout_seconds = filter(lambda x: x['Key'] == 'deregistration_delay.timeout_seconds', attr)[0]['Value']
  if int(now_timeout_seconds) > timeout_seconds:
    print('modify deregistration_delay timeout_seconds')
    elbv2.modify_target_group_attributes(
      TargetGroupArn=target_group['TargetGroupArn'],
      Attributes=[{
        'Key': 'deregistration_delay.timeout_seconds',
        'Value': str(timeout_seconds)
      }]
    )
  else :
    print('not change: ' + now_timeout_seconds)

属性の変更ならこの部分を変更すれば大体行けるはず
filter(lambda x: x['Key'] == ${変更したい属性}, attr)[0]['Value']

使い捨てスクリプトだが、似たようなことをまたやるだろうからメモ