class AWS::EC2::SecurityGroupCollection

Represents all EC2 security groups in an AWS account.

Public Instance Methods

[](group_id) click to toggle source

@param [String] group_id The group id of a security group. @return [SecurityGroup] The group with the given id.

# File lib/aws/ec2/security_group_collection.rb, line 63
def [] group_id
  SecurityGroup.new(group_id, :config => config)
end
create(name, options = {}) click to toggle source

Creates a new @param [String] name The name of the security group to create. @param [Hash] options @option options [String] :description An informal description

of this security group.  Accepts alphanumeric characters, spaces,
dashes, and underscores. If left blank the description will be set
to the name.

@option options [VPC,String] :vpc (nil) A VPC or VPC id string to

create the security group in.  When specified a VPC security
group is created.

@return [SecurityGroup]

# File lib/aws/ec2/security_group_collection.rb, line 36
def create name, options = {}

  description = options[:description] || name

  create_opts = {}
  create_opts[:group_name] = name
  create_opts[:description] = description

  vpc_id = options[:vpc]
  vpc_id ||= options[:vpc_id] # for backwards compatability
  vpc_id ||= filter_value_for('vpc-id')
  vpc_id = vpc_id.id if vpc_id.is_a?(VPC)

  create_opts[:vpc_id] = vpc_id if vpc_id

  response = client.create_security_group(create_opts)

  SecurityGroup.new(response.group_id, {
    :name => name,
    :description => description,
    :vpc_id => create_opts[:vpc_id],
    :config => config })

end
each() { |group| ... } click to toggle source

Specify one or more criteria to filter security groups by. A subsequent call to each will limit the security groups returned by the set of filters.

If you supply multiple values to filter then these values are treated as an OR condition. To return security groups named 'test' or 'fake':

security_groups.filter('group-name', 'test', 'fake')

If you want to and conditions together you need to chain calls to filter. To limit security groups to those with a name like 'test' and like 'ruby':

security_groups.
  filter('group-name', '*test*').
  filter('group-name', '*ruby*').each do |group|
  #...
end

Note that * matches one or more characters and ? matches any one character.

### Valid Filters

  • description - Description of the security group.

  • group-id - ID of the security group.

  • group-name - Name of the security group.

  • ip-permission.cidr - CIDR range that has been granted the permission.

  • ip-permission.from-port - Start of port range for the TCP and UDP

    protocols, or an ICMP type number.
  • ip-permission.group-name - Name of security group that has been granted the permission.

  • ip-permission.protocol - IP protocol for the permission. Valid values include 'tcp', 'udp', 'icmp' or a protocol number.

  • ip-permission.to-port - End of port range for the TCP and UDP protocols, or an ICMP code.

  • ip-permission.user-id - ID of AWS account that has been granted the permission.

  • owner-id - AWS account ID of the owner of the security group.

  • tag-key - Key of a tag assigned to the security group.

  • tag-value - Value of a tag assigned to the security group.

@return [SecurityGroupCollection] A new collection that represents

a subset of the security groups associated with this account.

@yield [group] @yieldparam [SecurityGroup] group @return [nil]

# File lib/aws/ec2/security_group_collection.rb, line 117
def each &block

  response = filtered_request(:describe_security_groups)
  response.security_group_info.each do |info|

    group = SecurityGroup.new_from(:describe_security_groups, info,
      info.group_id, :config => config)

    yield(group)

  end
  nil
end