2016年11月22日火曜日

rubyのaws-sdkでALBのターゲットグループに紐付いているEC2インスタンスのIPを取得してみた

ELBからALBにリプレイスを行うにあたって、ALB配下のインスタンスのIPを取得する必要があったので調べました。
ALBはターゲットグループを割り当てる形になるので、指定したターゲットグループに紐づくインスタンスを取得すればIP取れました。

require 'aws-sdk'

alb = Aws::ElasticLoadBalancingV2::Client.new(
  region: 'ap-northeast-1',
  access_key_id: 'xxx',
  secret_access_key: 'xxx'
)

ec2 = Aws::EC2::Client.new(
  region: 'ap-northeast-1',
  access_key_id: 'xxx',
  secret_access_key: 'xxx'
)

instance_healths = alb.describe_target_health({ target_group_arn: 'xxx' })
instance_ids = instance_healths.target_health_descriptions.map {|t| t.target.id }

ec2_instances = ec2.describe_instances({ instance_ids: instance_ids })
instance_ips = ec2_instances.reservations.map { |e| p e.instances[0].public_ip_address }

0 件のコメント:

コメントを投稿