«前の日記(2011-08-25 (Thu)) 最新 次の日記(2011-08-30 (Tue))» 編集

雑記帳


2011-08-29 (Mon) [長年日記]

[AWS][Ruby] セキュリティグループに登録されているIPアドレスを置換する

動的なIPアドレスを使っていたり、引っ越しなどがあったりで、セキュリティグループに登録されているIPアドレスが変更になることがある。セキュリティグループがたくさんあったり、登録している設定が多かったりすると、すべて手作業でやるのは面倒かつミスの元なので、例によってスクリプトを作ってみた。

#!/usr/bin/ruby1.9.1

require 'aws-sdk'

AWS.config(YAML.load(File.read('config.yml'))
src = AWS::EC2.new(:ec2_endpoint => 'ec2.ap-northeast-1.amazonaws.com')

src_ip = 'x.x.x.x/32'
dst_ip = 'y.y.y.y/32'

src.security_groups.each do |src_sg|
  puts "#{src_sg.id}, #{src_sg.name}"

  src_sg.ip_permissions.each do |p|
    if p.ip_ranges.include? src_ip
      begin
        src_sg.authorize_ingress(p.protocol, p.port_range, dst_ip)
        src_sg.revoke_ingress(p.protocol, p.port_range, src_ip)
      rescue => e
        puts e.message
      end
    end
  end
end

作りは単純で、既存のセキュリティグループすべてから、置換もととなるIPアドレス(src_ip)があるかどうかチェックして、もしあれば、新しいIPアドレス(dst_ip)で登録をして、もとのを削除するだけ。

こういう単純作業を、スクリプトを作って簡単にできるのが嬉しい。