class AWS::EC2::KeyPairCollection

Represents all key pairs in your account. You can use this collection to create, import and find key pairs.

Public Instance Methods

[](key_name) click to toggle source

@return [KeyPair] key_name The name of the key pair.

Calls superclass method AWS::EC2::Collection#[]
# File lib/aws/ec2/key_pair_collection.rb, line 57
def [] key_name
  super
end
create(key_name) click to toggle source

@param [String] key_name A name for the key pair. @return [KeyPair] Returns a new key pair.

# File lib/aws/ec2/key_pair_collection.rb, line 26
def create key_name
  create_or_import(:create_key_pair, :key_name => key_name)
end
each() { |key_pair(key_name, :fingerprint => key_fingerprint, :config => config)| ... } click to toggle source

Yields once for each key pair in your account. @return [nil]

# File lib/aws/ec2/key_pair_collection.rb, line 63
def each &block
  response = filtered_request(:describe_key_pairs)
  response.key_set.each do |kp|
    yield(KeyPair.new(kp.key_name,
                      :fingerprint => kp.key_fingerprint,
                      :config => config))
  end
  nil
end
import(key_name, public_key) click to toggle source

Imports the public key from an RSA key pair that you created with a third-party tool. Compare this with {#create}, in which EC2 creates the key pair and gives the keys to you (EC2 keeps a copy of the public key). With ImportKeyPair, you create the key pair and give EC2 just the public key. The private key is never transferred between you and EC2.

### Supported formats:

  • OpenSSH public key format (e.g., the format in ~/.ssh/authorized_keys)

  • Base64 encoded DER format

  • SSH public key file format as specified in RFC4716

DSA keys are not supported. Make sure your key generator is set up to create RSA keys. Supported lengths: 1024, 2048, and 4096.

@param [String] key_name A name for this key pair. @param [String] public_key The RSA public key. @return [KeyPair] Returns a new key pair.

# File lib/aws/ec2/key_pair_collection.rb, line 50
def import key_name, public_key
  create_or_import(:import_key_pair,
    :key_name => key_name,
    :public_key_material => Base64.encode64(public_key.to_s))
end

Protected Instance Methods

member_class() click to toggle source

@api private

# File lib/aws/ec2/key_pair_collection.rb, line 75
def member_class
  KeyPair
end

Private Instance Methods

create_or_import(client_method, options) click to toggle source

@api private

# File lib/aws/ec2/key_pair_collection.rb, line 81
def create_or_import client_method, options

  # stringify option values
  options = options.inject({}) {|h,v| h[v.first] = v.last.to_s; h }
  response = client.send(client_method, options)

  options = {}
  options[:fingerprint] = response.data[:key_fingerprint]
  if response[:key_material]
    options[:private_key] = response.data[:key_material]
  end

  KeyPair.new(response.key_name, options.merge(:config => config))

end