雑記帳
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)で登録をして、もとのを削除するだけ。
こういう単純作業を、スクリプトを作って簡単にできるのが嬉しい。