LoginSignup
6
7

More than 5 years have passed since last update.

autoscaling グループに含まれるインスタンスの IP アドレスをすべて取得

Posted at

背景

  • AutoScaling のグループすべてのホストに対して、デプロイしたい
  • IPアドレスを取得するスクリプトを探したが見つけられなかった
  • fabric を使っているので Python で開発
  • boto は使わず AWS コマンドで実装(aws--query を使いたいため)

コード例

import commands
import re

def ipv4_address(instance_id):
  query = "Reservations[].Instances[?InstanceId=='%(instance_id)s'].PublicIpAddress" % locals()
  cmdline = 'aws ec2 describe-instances --query "%(query)s" --output text' % locals()
  return commands.getoutput(cmdline)

def autoscaling_instance_ids(group):
  query = "AutoScalingInstances[?AutoScalingGroupName=='%(group)s'].InstanceId" % locals()
  result = commands.getoutput('aws autoscaling describe-auto-scaling-instances --query "%(query)s" --output text' % locals())
  regexp = re.compile(r'\s+')
  instance_ids = regexp.split(result)
  return instance_ids

def ip_of_the_group(group):
  ids = autoscaling_instance_ids(group)
  return [ ipv4_address(instance_id) for instance_id in ids ]

参考文献

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7