Class: Fog::AWS::EC2

Inherits:
Object
  • Object
show all
Defined in:
lib/fog/aws/ec2.rb,
lib/fog/aws/models/ec2/address.rb,
lib/fog/aws/models/ec2/volumes.rb,
lib/fog/aws/models/ec2/key_pair.rb,
lib/fog/aws/models/ec2/addresses.rb,
lib/fog/aws/models/ec2/key_pairs.rb,
lib/fog/aws/requests/ec2/attach_volume.rb,
lib/fog/aws/requests/ec2/create_volume.rb,
lib/fog/aws/requests/ec2/create_volume.rb,
lib/fog/aws/requests/ec2/delete_volume.rb,
lib/fog/aws/requests/ec2/delete_volume.rb,
lib/fog/aws/requests/ec2/detach_volume.rb,
lib/fog/aws/requests/ec2/run_instances.rb,
lib/fog/aws/requests/ec2/create_key_pair.rb,
lib/fog/aws/requests/ec2/create_key_pair.rb,
lib/fog/aws/requests/ec2/create_snapshot.rb,
lib/fog/aws/requests/ec2/delete_key_pair.rb,
lib/fog/aws/requests/ec2/delete_key_pair.rb,
lib/fog/aws/requests/ec2/delete_snapshot.rb,
lib/fog/aws/requests/ec2/describe_images.rb,
lib/fog/aws/requests/ec2/release_address.rb,
lib/fog/aws/requests/ec2/release_address.rb,
lib/fog/aws/requests/ec2/allocate_address.rb,
lib/fog/aws/requests/ec2/allocate_address.rb,
lib/fog/aws/requests/ec2/describe_regions.rb,
lib/fog/aws/requests/ec2/describe_volumes.rb,
lib/fog/aws/requests/ec2/describe_volumes.rb,
lib/fog/aws/requests/ec2/reboot_instances.rb,
lib/fog/aws/requests/ec2/associate_address.rb,
lib/fog/aws/requests/ec2/describe_addresses.rb,
lib/fog/aws/requests/ec2/describe_addresses.rb,
lib/fog/aws/requests/ec2/describe_instances.rb,
lib/fog/aws/requests/ec2/describe_key_pairs.rb,
lib/fog/aws/requests/ec2/describe_key_pairs.rb,
lib/fog/aws/requests/ec2/describe_snapshots.rb,
lib/fog/aws/requests/ec2/get_console_output.rb,
lib/fog/aws/requests/ec2/terminate_instances.rb,
lib/fog/aws/requests/ec2/disassociate_address.rb,
lib/fog/aws/requests/ec2/create_security_group.rb,
lib/fog/aws/requests/ec2/create_security_group.rb,
lib/fog/aws/requests/ec2/delete_security_group.rb,
lib/fog/aws/requests/ec2/delete_security_group.rb,
lib/fog/aws/requests/ec2/describe_security_groups.rb,
lib/fog/aws/requests/ec2/describe_security_groups.rb,
lib/fog/aws/requests/ec2/describe_availability_zones.rb,
lib/fog/aws/requests/ec2/revoke_security_group_ingress.rb,
lib/fog/aws/requests/ec2/authorize_security_group_ingress.rb

Defined Under Namespace

Classes: Address, Addresses, KeyPair, KeyPairs, Volumes

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ EC2

Initialize connection to EC2

Notes

options parameter must include values for :aws_access_key_id and :aws_secret_access_key in order to create a connection

Examples

sdb = SimpleDB.new(
 :aws_access_key_id => your_aws_access_key_id,
 :aws_secret_access_key => your_aws_secret_access_key
)

Parameters

  • options<~Hash> - config arguments for connection. Defaults to {}.

Returns

  • EC2 object with connection to aws.



98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/fog/aws/ec2.rb', line 98

def initialize(options={})
  @aws_access_key_id      = options[:aws_access_key_id]
  @aws_secret_access_key  = options[:aws_secret_access_key]
  @hmac       = HMAC::SHA256.new(@aws_secret_access_key)
  @host       = options[:host]      || 'ec2.amazonaws.com'
  @port       = options[:port]      || 443
  @scheme     = options[:scheme]    || 'https'
  @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}")

  if Fog.mocking?
    @data = { :deleted_at => {}, :addresses => {}, :key_pairs => {}, :security_groups => {}, :volumes => {} }
  end
end

Instance Attribute Details

#dataObject

Returns the value of attribute data.



78
79
80
# File 'lib/fog/aws/ec2.rb', line 78

def data
  @data
end

Class Method Details

.reloadObject



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/fog/aws/ec2.rb', line 5

def self.reload
  current_directory = File.dirname(__FILE__)
  load "#{current_directory}/../connection.rb"
  load "#{current_directory}/../parser.rb"
  load "#{current_directory}/../response.rb"

  parsers_directory = "#{current_directory}/parsers/ec2"
  load "#{parsers_directory}/allocate_address.rb"
  load "#{parsers_directory}/attach_volume.rb"
  load "#{parsers_directory}/basic.rb"
  load "#{parsers_directory}/create_key_pair.rb"
  load "#{parsers_directory}/create_snapshot.rb"
  load "#{parsers_directory}/create_volume.rb"
  load "#{parsers_directory}/describe_addresses.rb"
  load "#{parsers_directory}/describe_availability_zones.rb"
  load "#{parsers_directory}/describe_images.rb"
  load "#{parsers_directory}/describe_instances.rb"
  load "#{parsers_directory}/describe_key_pairs.rb"
  load "#{parsers_directory}/describe_regions.rb"
  load "#{parsers_directory}/describe_security_groups.rb"
  load "#{parsers_directory}/describe_snapshots.rb"
  load "#{parsers_directory}/describe_volumes.rb"
  load "#{parsers_directory}/detach_volume.rb"
  load "#{parsers_directory}/get_console_output.rb"
  load "#{parsers_directory}/run_instances.rb"
  load "#{parsers_directory}/terminate_instances.rb"

  requests_directory = "#{current_directory}/requests/ec2"
  load "#{requests_directory}/allocate_address.rb"
  load "#{requests_directory}/associate_address.rb"
  load "#{requests_directory}/attach_volume.rb"
  load "#{requests_directory}/authorize_security_group_ingress.rb"
  # TODO: require "#{requests_directory}/bundle_instance.rb"
  # TODO: require "#{requests_directory}/cancel_bundle_task.rb"
  # TODO: require "#{requests_directory}/confirm_product_instance.rb"
  load "#{requests_directory}/create_key_pair.rb"
  load "#{requests_directory}/create_security_group.rb"
  load "#{requests_directory}/create_snapshot.rb"
  load "#{requests_directory}/create_volume.rb"
  load "#{requests_directory}/delete_key_pair.rb"
  load "#{requests_directory}/delete_security_group.rb"
  load "#{requests_directory}/delete_snapshot.rb"
  load "#{requests_directory}/delete_volume.rb"
  # TODO: require "#{requests_directory}/deregister_image.rb"
  load "#{requests_directory}/describe_addresses.rb"
  load "#{requests_directory}/describe_availability_zones.rb"
  # TODO: require "#{requests_directory}/describe_bundle_tasks.rb"
  # TODO: require "#{requests_directory}/describe_image_attribute.rb"
  load "#{requests_directory}/describe_images.rb"
  load "#{requests_directory}/describe_instances.rb"
  load "#{requests_directory}/describe_key_pairs.rb"
  load "#{requests_directory}/describe_regions.rb"
  # TODO: require "#{requests_directory}/describe_reserved_instances.rb"
  # TODO: require "#{requests_directory}/describe_reserved_instances_offerings.rb"
  load "#{requests_directory}/describe_security_groups.rb"
  load "#{requests_directory}/describe_snapshots.rb"
  load "#{requests_directory}/describe_volumes.rb"
  load "#{requests_directory}/detach_volume.rb"
  load "#{requests_directory}/disassociate_address.rb"
  load "#{requests_directory}/get_console_output.rb"
  # TODO: require "#{requests_directory}/modify_image_attribute.rb"
  # TODO: require "#{requests_directory}/monitor_instances.rb"
  # TODO: require "#{requests_directory}/purchase_reserved_instances_offering.rb"
  load "#{requests_directory}/reboot_instances.rb"
  # TODO: require "#{requests_directory}/register_image.rb"
  load "#{requests_directory}/release_address.rb"
  load "#{requests_directory}/revoke_security_group_ingress.rb"
  load "#{requests_directory}/run_instances.rb"
  load "#{requests_directory}/terminate_instances.rb"
  # TODO: require "#{requests_directory}/unmonitor_instances.rb"
end

Instance Method Details

#addressesObject



5
6
7
# File 'lib/fog/aws/models/ec2/addresses.rb', line 5

def addresses
  Fog::AWS::EC2::Addresses.new(:connection => self)
end

#allocate_addressObject

Acquire an elastic IP address.

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘publicIp’<~String> - The acquired address

      • ‘requestId’<~String> - Id of the request



14
15
16
17
18
# File 'lib/fog/aws/requests/ec2/allocate_address.rb', line 14

def allocate_address
  request({
    'Action' => 'AllocateAddress'
  }, Fog::Parsers::AWS::EC2::AllocateAddress.new)
end

#associate_address(instance_id, public_ip) ⇒ Object

Associate an elastic IP address with an instance

Parameters

  • instance_id<~String> - Id of instance to associate address with

  • public_ip<~String> - Public ip to assign to instance

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘requestId’<~String> - Id of request

      • ‘return’<~Boolean> - success?



16
17
18
19
20
21
22
# File 'lib/fog/aws/requests/ec2/associate_address.rb', line 16

def associate_address(instance_id, public_ip)
  request({
    'Action' => 'AssociateAddress',
    'InstanceId' => instance_id,
    'PublicIp' => public_ip
  }, Fog::Parsers::AWS::EC2::Basic.new)
end

#attach_volume(volume_id, instance_id, device) ⇒ Object

Attach an Amazon EBS volume with a running instance, exposing as specified device

Parameters

  • volume_id<~String> - Id of amazon EBS volume to associate with instance

  • instance_id<~String> - Id of instance to associate volume with

  • device<~String> - Specifies how the device is exposed to the instance (e.g. “/dev/sdh”)

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘attachTime’<~Time> - Time of attachment was initiated at

      • ‘device’<~String> - Device as it is exposed to the instance

      • ‘instanceId’<~String> - Id of instance for volume

      • ‘requestId’<~String> - Id of request

      • ‘status’<~String> - Status of volume

      • ‘volumeId’<~String> - Reference to volume



21
22
23
24
25
26
27
28
# File 'lib/fog/aws/requests/ec2/attach_volume.rb', line 21

def attach_volume(volume_id, instance_id, device)
  request({
    'Action' => 'AttachVolume',
    'VolumeId' => volume_id,
    'InstanceId' => instance_id,
    'Device' => device
  }, Fog::Parsers::AWS::EC2::AttachVolume.new)
end

#authorize_security_group_ingress(options = {}) ⇒ Object

Add permissions to a security group

Parameters

  • options<~Hash>:

    • ‘GroupName’<~String> - Name of group

    • ‘SourceSecurityGroupName’<~String> - Name of security group to authorize

    • ‘SourceSecurityGroupOwnerId’<~String> - Name of owner to authorize

    or

    • ‘CidrIp’ - CIDR range

    • ‘FromPort’ - Start of port range (or -1 for ICMP wildcard)

    • ‘GroupName’ - Name of group to modify

    • ‘IpProtocol’ - Ip protocol, must be in [‘tcp’, ‘udp’, ‘icmp’]

    • ‘ToPort’ - End of port range (or -1 for ICMP wildcard)

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘requestId’<~String> - Id of request

      • ‘return’<~Boolean> - success?



24
25
26
27
28
# File 'lib/fog/aws/requests/ec2/authorize_security_group_ingress.rb', line 24

def authorize_security_group_ingress(options = {})
  request({
    'Action' => 'AuthorizeSecurityGroupIngress'
  }.merge!(options), Fog::Parsers::AWS::EC2::Basic.new)
end

#create_key_pair(key_name) ⇒ Object

Create a new key pair

Parameters

  • key_name<~String> - Unique name for key pair.

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘keyFingerprint’<~String> - SHA-1 digest of DER encoded private key

      • ‘keyMaterial’<~String> - Unencrypted encoded PEM private key

      • ‘keyName’<~String> - Name of key

      • ‘requestId’<~String> - Id of request



19
20
21
22
23
24
# File 'lib/fog/aws/requests/ec2/create_key_pair.rb', line 19

def create_key_pair(key_name)
  request({
    'Action' => 'CreateKeyPair',
    'KeyName' => key_name
  }, Fog::Parsers::AWS::EC2::CreateKeyPair.new)
end

#create_security_group(name, description) ⇒ Object

Create a new security group

Parameters

  • group_name<~String> - Name of the security group.

  • group_description<~String> - Description of group.

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘requestId’<~String> - Id of request

      • ‘return’<~Boolean> - success?



18
19
20
21
22
23
24
# File 'lib/fog/aws/requests/ec2/create_security_group.rb', line 18

def create_security_group(name, description)
  request({
    'Action' => 'CreateSecurityGroup',
    'GroupName' => name,
    'GroupDescription' => CGI.escape(description)
  }, Fog::Parsers::AWS::EC2::Basic.new)
end

#create_snapshot(volume_id) ⇒ Object

Create a snapshot of an EBS volume and store it in S3

Parameters

  • volume_id<~String> - Id of EBS volume to snapshot

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘progress’<~String> - The percentage progress of the snapshot

      • ‘requestId’<~String> - id of request

      • ‘snapshotId’<~String> - id of snapshot

      • ‘startTime’<~Time> - timestamp when snapshot was initiated

      • ‘status’<~String> - state of snapshot

      • ‘volumeId’<~String> - id of volume snapshot targets



19
20
21
22
23
24
# File 'lib/fog/aws/requests/ec2/create_snapshot.rb', line 19

def create_snapshot(volume_id)
  request({
    'Action' => 'CreateSnapshot',
    'VolumeId' => volume_id
  }, Fog::Parsers::AWS::EC2::CreateSnapshot.new)
end

#create_volume(availability_zone, size, snapshot_id = nil) ⇒ Object

Create an EBS volume

Parameters

  • availability_zone<~String> - availability zone to create volume in

  • size<~Integer> - Size in GiBs for volume. Must be between 1 and 1024.

  • snapshot_id<~String> - Optional, snapshot to create volume from

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘availabilityZone’<~String> - Availability zone for volume

      • ‘createTime’<~Time> - Timestamp for creation

      • ‘size’<~Integer> - Size in GiBs for volume

      • ‘snapshotId’<~String> - Snapshot volume was created from, if any

      • ‘status’s<~String> - State of volume

      • ‘volumeId’<~String> - Reference to volume



23
24
25
26
27
28
29
30
# File 'lib/fog/aws/requests/ec2/create_volume.rb', line 23

def create_volume(availability_zone, size, snapshot_id = nil)
  request({
    'Action' => 'CreateVolume',
    'AvailabilityZone' => availability_zone,
    'Size' => size,
    'SnapshotId' => snapshot_id
  }, Fog::Parsers::AWS::EC2::CreateVolume.new)
end

#delete_key_pair(key_name) ⇒ Object

Delete a key pair that you own

Parameters

  • key_name<~String> - Name of the key pair.

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘requestId’<~String> id of request

      • ‘return’<~Boolean> - success?



17
18
19
20
21
22
# File 'lib/fog/aws/requests/ec2/delete_key_pair.rb', line 17

def delete_key_pair(key_name)
  request({
    'Action' => 'DeleteKeyPair',
    'KeyName' => key_name
  }, Fog::Parsers::AWS::EC2::Basic.new)
end

#delete_security_group(name) ⇒ Object

Delete a security group that you own

Parameters

  • group_name<~String> - Name of the security group.

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘requestId’<~String> - Id of request

      • ‘return’<~Boolean> - success?



17
18
19
20
21
22
# File 'lib/fog/aws/requests/ec2/delete_security_group.rb', line 17

def delete_security_group(name)
  request({
    'Action' => 'DeleteSecurityGroup',
    'GroupName' => name
  }, Fog::Parsers::AWS::EC2::Basic.new)
end

#delete_snapshot(snapshot_id) ⇒ Object

Delete a snapshot of an EBS volume that you own

Parameters

  • snapshot_id<~String> - ID of snapshot to delete

Returns

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘requestId’<~String> - Id of request

      • ‘return’<~Boolean> - success?



15
16
17
18
19
20
# File 'lib/fog/aws/requests/ec2/delete_snapshot.rb', line 15

def delete_snapshot(snapshot_id)
  request({
    'Action' => 'DeleteSnapshot',
    'SnapshotId' => snapshot_id
  }, Fog::Parsers::AWS::EC2::Basic.new)
end

#delete_volume(volume_id) ⇒ Object

Delete an EBS volume

Parameters

  • volume_id<~String> - Id of volume to delete.

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘requestId’<~String> - Id of request

      • ‘return’<~Boolean> - success?



17
18
19
20
21
22
# File 'lib/fog/aws/requests/ec2/delete_volume.rb', line 17

def delete_volume(volume_id)
  request({
    'Action' => 'DeleteVolume',
    'VolumeId' => volume_id
  }, Fog::Parsers::AWS::EC2::Basic.new)
end

#describe_addresses(public_ip = []) ⇒ Object

Describe all or specified IP addresses.

Parameters

  • public_ip<~Array> - List of ips to describe, defaults to all

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘requestId’<~String> - Id of request

      • ‘addressesSet’<~Array>:

        • ‘instanceId’<~String> - instance for ip address

        • ‘publicIp’<~String> - ip address for instance



19
20
21
22
23
24
# File 'lib/fog/aws/requests/ec2/describe_addresses.rb', line 19

def describe_addresses(public_ip = [])
  params = indexed_params('PublicIp', public_ip)
  request({
    'Action' => 'DescribeAddresses'
  }.merge!(params), Fog::Parsers::AWS::EC2::DescribeAddresses.new)
end

#describe_availability_zones(zone_name = []) ⇒ Object

Describe all or specified availability zones

Params

  • zone_name<~String> - List of availability zones to describe, defaults to all

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘requestId’<~String> - Id of request

      • ‘availabilityZoneInfo’<~Array>:

        • ‘regionName’<~String> - Name of region

        • ‘zoneName’<~String> - Name of zone

        • ‘zoneState’<~String> - State of zone



18
19
20
21
22
23
# File 'lib/fog/aws/requests/ec2/describe_availability_zones.rb', line 18

def describe_availability_zones(zone_name = [])
  params = indexed_params('ZoneName', zone_name)
  request({
    'Action' => 'DescribeAvailabilityZones'
  }.merge!(params), Fog::Parsers::AWS::EC2::DescribeAvailabilityZones.new)
end

#describe_images(options = {}) ⇒ Object

Describe all or specified images.

Params

  • options<~Hash> - Optional params

    • ‘ExecutableBy’<~String> - Only return images that the executable_by user has explicit permission to launch

    • ‘ImageId’<~Array> - Ids of images to describe

    • ‘Owner’<~String> - Only return images belonging to owner.

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘requestId’<~String> - Id of request

      • ‘imagesSet’<~Array>:

        • ‘architecture’<~String> - Architecture of the image

        • ‘imageId’<~String> - Id of the image

        • ‘imageLocation’<~String> - Location of the image

        • ‘imageOwnerId’<~String> - Id of the owner of the image

        • ‘imageState’<~String> - State of the image

        • ‘imageType’<~String> - Type of the image

        • ‘isPublic’<~Boolean> - Whether or not the image is public

        • ‘kernelId’<~String> - Kernel id associated with image, if any

        • ‘platform’<~String> - Operating platform of the image

        • ‘productCodes’<~Array> - Product codes for the image

        • ‘ramdiskId’<~String> - Ramdisk id associated with image, if any



30
31
32
33
34
35
36
37
# File 'lib/fog/aws/requests/ec2/describe_images.rb', line 30

def describe_images(options = {})
  if image_id = options.delete('ImageId')
    options.merge!(indexed_params('ImageId', image_id))
  end
  request({
    'Action' => 'DescribeImages'
  }.merge!(options), Fog::Parsers::AWS::EC2::DescribeImages.new)
end

#describe_instances(instance_id = []) ⇒ Object

Describe all or specified instances

Parameters

  • instance_id<~Array> - List of instance ids to describe, defaults to all

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘requestId’<~String> - Id of request

      • ‘reservationSet’<~Array>:

        • ‘groupSet’<~Array> - Group names for reservation

        • ‘ownerId’<~String> - AWS Access Key ID of reservation owner

        • ‘reservationId’<~String> - Id of the reservation

        • ‘instancesSet’<~Array>:

          • instance<~Hash>:

            • ‘amiLaunchIndex’<~Integer> - reference to instance in launch group

            • ‘dnsName’<~String> - public dns name, blank until instance is running

            • ‘imageId’<~String> - image id of ami used to launch instance

            • ‘instanceId’<~String> - id of the instance

            • ‘instanceState’<~Hash>:

              • ‘code’<~Integer> - current status code

              • ‘name’<~String> - current status name

            • ‘instanceType’<~String> - type of instance

            • ‘kernelId’<~String> - Id of kernel used to launch instance

            • ‘keyName’<~String> - name of key used launch instances or blank

            • ‘launchTime’<~Time> - time instance was launched

            • ‘monitoring’<~Hash>:

              • ‘state’<~Boolean - state of monitoring

            • ‘placement’<~Hash>:

              • ‘availabilityZone’<~String> - Availability zone of the instance

            • ‘productCodes’<~Array> - Product codes for the instance

            • ‘privateDnsName’<~String> - private dns name, blank until instance is running

            • ‘ramdiskId’<~String> - Id of ramdisk used to launch instance

            • ‘reason’<~String> - reason for most recent state transition, or blank



39
40
41
42
43
44
# File 'lib/fog/aws/requests/ec2/describe_instances.rb', line 39

def describe_instances(instance_id = [])
  params = indexed_params('InstanceId', instance_id)
  request({
    'Action' => 'DescribeInstances'
  }.merge!(params), Fog::Parsers::AWS::EC2::DescribeInstances.new)
end

#describe_key_pairs(key_name = []) ⇒ Object

Describe all or specified key pairs

Parameters

  • key_name<~Array>

    List of key names to describe, defaults to all

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘requestId’<~String> - Id of request

      • ‘keySet’<~Array>:

        • ‘keyName’<~String> - Name of key

        • ‘keyFingerprint’<~String> - Fingerprint of key



19
20
21
22
23
24
# File 'lib/fog/aws/requests/ec2/describe_key_pairs.rb', line 19

def describe_key_pairs(key_name = [])
  params = indexed_params('KeyName', key_name)
  request({
    'Action' => 'DescribeKeyPairs'
  }.merge!(params), Fog::Parsers::AWS::EC2::DescribeKeyPairs.new)
end

#describe_regions(region_name = []) ⇒ Object

Describe all or specified regions

Params

  • region_name<~String> - List of regions to describe, defaults to all

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘requestId’<~String> - Id of request

      • ‘regionInfo’<~Array>:

        • ‘regionName’<~String> - Name of region

        • ‘regionEndpoint’<~String> - Service endpoint for region



17
18
19
20
21
22
# File 'lib/fog/aws/requests/ec2/describe_regions.rb', line 17

def describe_regions(region_name = [])
  params = indexed_params('RegionName', region_name)
  request({
    'Action' => 'DescribeRegions'
  }.merge!(params), Fog::Parsers::AWS::EC2::DescribeRegions.new)
end

#describe_security_groups(group_name = []) ⇒ Object

Describe all or specified security groups

Parameters

  • group_name<~Array> - List of groups to describe, defaults to all

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘requestId’<~String> - Id of request

      • ‘securityGroupInfo’<~Array>:

        • ‘groupDescription’<~String> - Description of security group

        • ‘groupName’<~String> - Name of security group

        • ‘ipPermissions’<~Array>:

          • ‘fromPort’<~Integer> - Start of port range (or -1 for ICMP wildcard)

          • ‘groups’<~Array>:

            • ‘groupName’<~String> - Name of security group

            • ‘userId’<~String> - AWS User Id of account

          • ‘ipProtocol’<~String> - Ip protocol, must be in [‘tcp’, ‘udp’, ‘icmp’]

          • ‘ipRanges’<~Array>:

            • ‘cidrIp’<~String> - CIDR range

          • ‘toPort’<~Integer> - End of port range (or -1 for ICMP wildcard)

        • ‘ownerId’<~String> - AWS Access Key Id of the owner of the security group



29
30
31
32
33
34
# File 'lib/fog/aws/requests/ec2/describe_security_groups.rb', line 29

def describe_security_groups(group_name = [])
  params = indexed_params('GroupName', group_name)
  request({
    'Action' => 'DescribeSecurityGroups',
  }.merge!(params), Fog::Parsers::AWS::EC2::DescribeSecurityGroups.new)
end

#describe_snapshots(snapshot_id = []) ⇒ Object

Describe all or specified snapshots

Parameters

  • snapshot_id<~Array> - List of snapshots to describe, defaults to all

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘requestId’<~String> - Id of request

      • ‘snapshotSet’<~Array>:

        • ‘progress’<~String>: The percentage progress of the snapshot

        • ‘snapshotId’<~String>: Id of the snapshot

        • ‘startTime’<~Time>: Timestamp of when snapshot was initiated

        • ‘status’<~String>: Snapshot state, in [‘pending’, ‘completed’]

        • ‘volumeId’<~String>: Id of volume that snapshot contains



20
21
22
23
24
25
# File 'lib/fog/aws/requests/ec2/describe_snapshots.rb', line 20

def describe_snapshots(snapshot_id = [])
  params = indexed_params('SnapshotId', snapshot_id)
  request({
    'Action' => 'DescribeSnapshots'
  }.merge!(params), Fog::Parsers::AWS::EC2::DescribeSnapshots.new)
end

#describe_volumes(volume_id = []) ⇒ Object

Describe all or specified volumes.

Parameters

  • volume_id<~Array> - List of volumes to describe, defaults to all

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘volumeSet’<~Array>:

        • ‘availabilityZone’<~String> - Availability zone for volume

        • ‘createTime’<~Time> - Timestamp for creation

        • ‘size’<~Integer> - Size in GiBs for volume

        • ‘snapshotId’<~String> - Snapshot volume was created from, if any

        • ‘status’<~String> - State of volume

        • ‘volumeId’<~String> - Reference to volume

        • ‘attachmentSet’<~Array>:

          • ‘attachmentTime’<~Time> - Timestamp for attachment

          • ‘device’<~String> - How value is exposed to instance

          • ‘instanceId’<~String> - Reference to attached instance

          • ‘status’<~String> - Attachment state

          • ‘volumeId’<~String> - Reference to volume



28
29
30
31
32
33
# File 'lib/fog/aws/requests/ec2/describe_volumes.rb', line 28

def describe_volumes(volume_id = [])
  params = indexed_params('VolumeId', volume_id)
  request({
    'Action' => 'DescribeVolumes'
  }.merge!(params), Fog::Parsers::AWS::EC2::DescribeVolumes.new)
end

#detach_volume(volume_id, options = {}) ⇒ Object

Detach an Amazon EBS volume from a running instance

Parameters

  • volume_id<~String> - Id of amazon EBS volume to associate with instance

  • options<~Hash>:

    • ‘Device’<~String> - Specifies how the device is exposed to the instance (e.g. “/dev/sdh”)

    • ‘Force’<~Boolean> - If true forces detach, can cause data loss/corruption

    • ‘InstanceId’<~String> - Id of instance to associate volume with

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘attachTime’<~Time> - Time of attachment was initiated at

      • ‘device’<~String> - Device as it is exposed to the instance

      • ‘instanceId’<~String> - Id of instance for volume

      • ‘requestId’<~String> - Id of request

      • ‘status’<~String> - Status of volume

      • ‘volumeId’<~String> - Reference to volume



23
24
25
26
27
28
# File 'lib/fog/aws/requests/ec2/detach_volume.rb', line 23

def detach_volume(volume_id, options = {})
  request({
    'Action' => 'DetachVolume',
    'VolumeId' => volume_id
  }.merge!(options), Fog::Parsers::AWS::EC2::DetachVolume.new)
end

#disassociate_address(public_ip) ⇒ Object

Disassociate an elastic IP address from its instance (if any)

Parameters

  • public_ip<~String> - Public ip to assign to instance

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘requestId’<~String> - Id of request

      • ‘return’<~Boolean> - success?



15
16
17
18
19
20
# File 'lib/fog/aws/requests/ec2/disassociate_address.rb', line 15

def disassociate_address(public_ip)
  request({
    'Action' => 'DisassociateAddress',
    'PublicIp' => public_ip
  }, Fog::Parsers::AWS::EC2::Basic.new)
end

#get_console_output(instance_id) ⇒ Object

Retrieve console output for specified instance

Parameters

  • instance_id<~String> - Id of instance to get console output from

Returns

# * response<~Fog::AWS::Response>:

* body<~Hash>:
  * 'instanceId'<~String> - Id of instance
  * 'output'<~String> - Console output
  * 'requestId'<~String> - Id of request
  * 'timestamp'<~Time> - Timestamp of last update to output


17
18
19
20
21
22
# File 'lib/fog/aws/requests/ec2/get_console_output.rb', line 17

def get_console_output(instance_id)
  request({
    'Action' => 'GetConsoleOutput',
    'InstanceId' => instance_id
  }, Fog::Parsers::AWS::EC2::GetConsoleOutput.new)
end

#key_pairsObject



5
6
7
# File 'lib/fog/aws/models/ec2/key_pairs.rb', line 5

def key_pairs
  Fog::AWS::EC2::KeyPairs.new(:connection => self)
end

#reboot_instances(instance_id = []) ⇒ Object

Reboot specified instances

Parameters

  • instance_id<~Array> - Ids of instances to reboot

Returns

# * response<~Fog::AWS::Response>:

* body<~Hash>:
  * 'requestId'<~String> - Id of request
  * 'return'<~Boolean> - success?


15
16
17
18
19
20
# File 'lib/fog/aws/requests/ec2/reboot_instances.rb', line 15

def reboot_instances(instance_id = [])
  params = indexed_params('InstanceId', instance_id)
  request({
    'Action' => 'RebootInstances'
  }.merge!(params), Fog::Parsers::AWS::EC2::Basic.new)
end

#release_address(public_ip) ⇒ Object

Release an elastic IP address.

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘requestId’<~String> - Id of request

      • ‘return’<~Boolean> - success?



14
15
16
17
18
19
# File 'lib/fog/aws/requests/ec2/release_address.rb', line 14

def release_address(public_ip)
  request({
    'Action' => 'ReleaseAddress',
    'PublicIp' => public_ip
  }, Fog::Parsers::AWS::EC2::Basic.new)
end

#revoke_security_group_ingress(options = {}) ⇒ Object

Remove permissions from a security group

Parameters

  • options<~Hash>:

    • ‘GroupName’<~String> - Name of group

    • ‘SourceSecurityGroupName’<~String> - Name of security group to authorize

    • ‘SourceSecurityGroupOwnerId’<~String> - Name of owner to authorize

    or

    • ‘CidrIp’ - CIDR range

    • ‘FromPort’ - Start of port range (or -1 for ICMP wildcard)

    • ‘GroupName’ - Name of group to modify

    • ‘IpProtocol’ - Ip protocol, must be in [‘tcp’, ‘udp’, ‘icmp’]

    • ‘ToPort’ - End of port range (or -1 for ICMP wildcard)

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘requestId’<~String> - Id of request

      • ‘return’<~Boolean> - success?



24
25
26
27
28
# File 'lib/fog/aws/requests/ec2/revoke_security_group_ingress.rb', line 24

def revoke_security_group_ingress(options = {})
  request({
    'Action' => 'RevokeSecurityGroupIngress'
  }.merge!(options), Fog::Parsers::AWS::EC2::Basic.new)
end

#run_instances(image_id, min_count, max_count, options = {}) ⇒ Object

Launch specified instances

Parameters

  • image_id<~String> - Id of machine image to load on instances

  • min_count<~Integer> - Minimum number of instances to launch. If this exceeds the count of available instances, no instances will be launched. Must be between 1 and maximum allowed for your account (by default the maximum for an account is 20)

  • max_count<~Integer> - Maximum number of instances to launch. If this exceeds the number of available instances, the largest possible number of instances above min_count will be launched instead. Must be between 1 and maximum allowed for you account (by default the maximum for an account is 20)

  • options<~Hash>:

    • ‘Placement.AvailabilityZone’<~String> - Placement constraint for instances

    • ‘DeviceName’<~String> - ?

    • ‘Encoding’<~String> - ?

    • ‘GroupId’<~String> - Name of security group for instances

    • ‘InstanceType’<~String> - Type of instance to boot. Valid options in [‘m1.small’, ‘m1.large’, ‘m1.xlarge’, ‘c1.medium’, ‘c1.xlarge’] default is ‘m1.small’

    • ‘KernelId’<~String> - Id of kernel with which to launch

    • ‘KeyName’<~String> - Name of a keypair to add to booting instances

    • ‘Monitoring.Enabled’<~Boolean> - Enables monitoring, defaults to disabled

    • ‘RamdiskId’<~String> - Id of ramdisk with which to launch

    • ‘UserData’<~String> - Additional data to provide to booting instances

    • ‘Version’<~String> - ?

    • ‘VirtualName’<~String> - ?

Returns

  • response<~Fog::AWS::Response>:

    • body<~Hash>:

      • ‘groupSet’<~Array>: groups the instances are members in

        • ‘groupName’<~String> - Name of group

      • ‘instancesSet’<~Array>: returned instances

        • instance<~Hash>:

          • ‘amiLaunchIndex’<~Integer> - reference to instance in launch group

          • ‘dnsName’<~String> - public dns name, blank until instance is running

          • ‘imageId’<~String> - image id of ami used to launch instance

          • ‘instanceId’<~String> - id of the instance

          • ‘instanceState’<~Hash>:

            • ‘code’<~Integer> - current status code

            • ‘name’<~String> - current status name

          • ‘instanceType’<~String> - type of instance

          • ‘kernelId’<~String> - Id of kernel used to launch instance

          • ‘keyName’<~String> - name of key used launch instances or blank

          • ‘launchTime’<~Time> - time instance was launched

          • ‘monitoring’<~Hash>:

            • ‘state’<~Boolean - state of monitoring

          • ‘placement’<~Hash>:

            • ‘availabilityZone’<~String> - Availability zone of the instance

          • ‘privateDnsName’<~String> - private dns name, blank until instance is running

          • ‘productCodes’<~Array> - Product codes for the instance

          • ‘ramdiskId’<~String> - Id of ramdisk used to launch instance

          • ‘reason’<~String> - reason for most recent state transition, or blank

      • ‘ownerId’<~String> - Id of owner

      • ‘requestId’<~String> - Id of request



63
64
65
66
67
68
69
70
# File 'lib/fog/aws/requests/ec2/run_instances.rb', line 63

def run_instances(image_id, min_count, max_count, options = {})
  request({
    'Action' => 'RunInstances',
    'ImageId' => image_id,
    'MinCount' => min_count,
    'MaxCount' => max_count
  }.merge!(options), Fog::Parsers::AWS::EC2::RunInstances.new)
end

#terminate_instances(instance_id) ⇒ Object

Terminate specified instances

Parameters

  • instance_id<~Array> - Ids of instances to terminates

Returns

# * response<~Fog::AWS::Response>:

* body<~Hash>:
  * 'requestId'<~String> - Id of request
  * 'instancesSet'<~Array>:
    * 'instanceId'<~String> - id of the terminated instance
    * 'previousState'<~Hash>: previous state of instance
      * 'code'<~Integer> - previous status code
      * 'name'<~String> - name of previous state
    * 'shutdownState'<~Hash>: shutdown state of instance
      * 'code'<~Integer> - current status code
      * 'name'<~String> - name of current state


22
23
24
25
26
27
# File 'lib/fog/aws/requests/ec2/terminate_instances.rb', line 22

def terminate_instances(instance_id)
  params = indexed_params('InstanceId', instance_id)
  request({
    'Action' => 'TerminateInstances'
  }.merge!(params), Fog::Parsers::AWS::EC2::TerminateInstances.new)
end

#volumesObject



5
6
7
# File 'lib/fog/aws/models/ec2/volumes.rb', line 5

def volumes
  Fog::AWS::EC2::Volumes.new(:connection => self)
end