Class: Fog::AWS::EC2::Real

Inherits:
Object
  • Object
show all
Includes:
Collections
Defined in:
lib/fog/aws/ec2.rb,
lib/fog/aws/requests/ec2/attach_volume.rb,
lib/fog/aws/requests/ec2/create_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_snapshot.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/allocate_address.rb,
lib/fog/aws/requests/ec2/describe_regions.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_instances.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/delete_security_group.rb,
lib/fog/aws/requests/ec2/modify_image_attributes.rb,
lib/fog/aws/requests/ec2/describe_security_groups.rb,
lib/fog/aws/requests/ec2/describe_availability_zones.rb,
lib/fog/aws/requests/ec2/describe_reserved_instances.rb,
lib/fog/aws/requests/ec2/revoke_security_group_ingress.rb,
lib/fog/aws/requests/ec2/authorize_security_group_ingress.rb

Instance Method Summary collapse

Methods included from Collections

#addresses, #flavors, #images, #key_pairs, #security_groups, #servers, #snapshots, #volumes

Constructor Details

#initialize(options = {}) ⇒ Real

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 {}.

    • region<~String> - optional region to use, in [‘eu-west-1’, ‘us-east-1’, ‘us-west-1’]

Returns

  • EC2 object with connection to aws.



145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# File 'lib/fog/aws/ec2.rb', line 145

def initialize(options={})
  @aws_access_key_id      = options[:aws_access_key_id]
  @aws_secret_access_key  = options[:aws_secret_access_key]
  @hmac = Fog::HMAC.new('sha256', @aws_secret_access_key)
  @host = options[:host] || case options[:region]
    when 'ap-southeast-1'
      'ec2.ap-southeast-1.amazonaws.com'
    when 'eu-west-1'
      'ec2.eu-west-1.amazonaws.com'
    when 'us-east-1'
      'ec2.us-east-1.amazonaws.com'
    when 'us-west-1'
      'ec2.us-west-1.amazonaws.com'
    else
      'ec2.amazonaws.com'
    end
  @port   = options[:port]      || 443
  @scheme = options[:scheme]    || 'https'
  @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", options[:persistent])
end

Instance Method Details

#allocate_addressObject

Acquire an elastic IP address.

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

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

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



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

def allocate_address
  request(
    'Action'  => 'AllocateAddress',
    :parser   => 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<~Excon::Response>:

    • body<~Hash>:

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

      • ‘return’<~Boolean> - success?



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

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

#attach_volume(instance_id, volume_id, device) ⇒ Object

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

Parameters

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

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

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

Returns

  • response<~Excon::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



24
25
26
27
28
29
30
31
32
33
# File 'lib/fog/aws/requests/ec2/attach_volume.rb', line 24

def attach_volume(instance_id, volume_id, device)
  request(
    'Action'      => 'AttachVolume',
    'VolumeId'    => volume_id,
    'InstanceId'  => instance_id,
    'Device'      => device,
    :idempotent   => true,
    :parser       => 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<~Excon::Response>:

    • body<~Hash>:

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

      • ‘return’<~Boolean> - success?



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

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

#create_key_pair(key_name) ⇒ Object

Create a new key pair

Parameters

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

Returns

  • response<~Excon::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



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

def create_key_pair(key_name)
  request(
    'Action'  => 'CreateKeyPair',
    'KeyName' => key_name,
    :parser   => 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<~Excon::Response>:

    • body<~Hash>:

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

      • ‘return’<~Boolean> - success?



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

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

#create_snapshot(volume_id, description = nil) ⇒ 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<~Excon::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



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

def create_snapshot(volume_id, description = nil)
  request(
    'Action'      => 'CreateSnapshot',
    'Description' => description,
    'VolumeId'    => volume_id,
    :parser       => 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<~Excon::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



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

def create_volume(availability_zone, size, snapshot_id = nil)
  request(
    'Action'            => 'CreateVolume',
    'AvailabilityZone'  => availability_zone,
    'Size'              => size,
    'SnapshotId'        => snapshot_id,
    :parser             => 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<~Excon::Response>:

    • body<~Hash>:

      • ‘requestId’<~String> id of request

      • ‘return’<~Boolean> - success?



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

def delete_key_pair(key_name)
  request(
    'Action'    => 'DeleteKeyPair',
    'KeyName'   => key_name,
    :idempotent => true,
    :parser     => 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<~Excon::Response>:

    • body<~Hash>:

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

      • ‘return’<~Boolean> - success?



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

def delete_security_group(name)
  request(
    'Action'    => 'DeleteSecurityGroup',
    'GroupName' => name,
    :idempotent => true,
    :parser     => 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

  • response<~Excon::Response>:

    • body<~Hash>:

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

      • ‘return’<~Boolean> - success?



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

def delete_snapshot(snapshot_id)
  request(
    'Action'      => 'DeleteSnapshot',
    'SnapshotId'  => snapshot_id,
    :idempotent   => true,
    :parser       => 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<~Excon::Response>:

    • body<~Hash>:

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

      • ‘return’<~Boolean> - success?



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

def delete_volume(volume_id)
  request(
    'Action'    => 'DeleteVolume',
    'VolumeId'  => volume_id,
    :idempotent => true,
    :parser     => 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<~Excon::Response>:

    • body<~Hash>:

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

      • ‘addressesSet’<~Array>:

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

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



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

def describe_addresses(public_ip = [])
  params = AWS.indexed_param('PublicIp', public_ip)
  request({
    'Action'    => 'DescribeAddresses',
    :idempotent => true,
    :parser     => Fog::Parsers::AWS::EC2::DescribeAddresses.new
  }.merge!(params))
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<~Excon::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



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

def describe_availability_zones(zone_name = [])
  params = AWS.indexed_param('ZoneName', zone_name)
  request({
    'Action'    => 'DescribeAvailabilityZones',
    :idempotent => true,
    :parser     => Fog::Parsers::AWS::EC2::DescribeAvailabilityZones.new
  }.merge!(params))
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<~Excon::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



33
34
35
36
37
38
39
40
41
42
# File 'lib/fog/aws/requests/ec2/describe_images.rb', line 33

def describe_images(options = {})
  if image_id = options.delete('ImageId')
    options.merge!(AWS.indexed_param('ImageId', image_id))
  end
  request({
    'Action'    => 'DescribeImages',
    :idempotent => true,
    :parser     => Fog::Parsers::AWS::EC2::DescribeImages.new
  }.merge!(options))
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<~Excon::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>:

            • ‘architecture’<~String> - architecture of image in [i386, x86_64]

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

            • ‘blockDeviceMapping’<~Array>

              • ‘attachTime’<~Time> - time of volume attachment

              • ‘deleteOnTermination’<~Boolean> - whether or not to delete volume on termination

              • ‘deviceName’<~String> - specifies how volume is exposed to instance

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

              • ‘volumeId’<~String> - Id of attached volume

            • ‘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

            • ‘ipAddress’<~String> - public ip address assigned to 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

            • ‘privateIpAddress’<~String> - private ip address assigned to instance

            • ‘rootDeviceName’<~String> - specifies how the root device is exposed to the instance

            • ‘rootDeviceType’<~String> - root device type used by AMI in [ebs, instance-store]

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

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



53
54
55
56
57
58
59
60
# File 'lib/fog/aws/requests/ec2/describe_instances.rb', line 53

def describe_instances(instance_id = [])
  params = AWS.indexed_param('InstanceId', instance_id)
  request({
    'Action'    => 'DescribeInstances',
    :idempotent => true,
    :parser     => Fog::Parsers::AWS::EC2::DescribeInstances.new
  }.merge!(params))
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<~Excon::Response>:

    • body<~Hash>:

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

      • ‘keySet’<~Array>:

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

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



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

def describe_key_pairs(key_name = [])
  params = AWS.indexed_param('KeyName', key_name)
  request({
    'Action'    => 'DescribeKeyPairs',
    :idempotent => true,
    :parser     => Fog::Parsers::AWS::EC2::DescribeKeyPairs.new
  }.merge!(params))
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<~Excon::Response>:

    • body<~Hash>:

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

      • ‘regionInfo’<~Array>:

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

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



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

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

#describe_reserved_instances(reserved_instances_id = []) ⇒ Object

Describe all or specified reserved instances

Parameters

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

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

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

      • ‘reservedInstancesSet’<~Array>:

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

        • ‘duration’<~Integer> - duration of reservation, in seconds

        • ‘fixedPrice’<~Float> - purchase price of reserved instance

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

        • ‘instanceCount’<~Integer> - number of reserved instances

        • ‘productDescription’<~String> - reserved instance description

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

        • ‘start’<~Time> - start time for reservation

        • ‘state’<~String> - state of reserved instance purchase, in .[pending-payment, active, payment-failed, retired]

        • ‘usagePrice“<~Float> - usage price of reserved instances, per hour



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

def describe_reserved_instances(reserved_instances_id = [])
  params = AWS.indexed_param('ReservedInstancesId', reserved_instances_id)
  request({
    'Action'    => 'DescribeReservedInstances',
    :idempotent => true,
    :parser     => Fog::Parsers::AWS::EC2::DescribeReservedInstances.new
  }.merge!(params))
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<~Excon::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



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

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

#describe_snapshots(snapshot_id = [], options = {}) ⇒ Object

Describe all or specified snapshots

Parameters

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

  • options<~Array>:

    • ‘Owner’<~String> - Owner of snapshot in [‘self’, ‘amazon’, account_id]

    • ‘RestorableBy’<~String> - Account id of user who can create volumes from this snapshot

Returns

  • response<~Excon::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



26
27
28
29
30
31
32
33
34
# File 'lib/fog/aws/requests/ec2/describe_snapshots.rb', line 26

def describe_snapshots(snapshot_id = [], options = {})
  options['Owner'] ||= 'self'
  options.merge!(AWS.indexed_param('SnapshotId', snapshot_id))
  request({
    'Action'    => 'DescribeSnapshots',
    :idempotent => true,
    :parser     => Fog::Parsers::AWS::EC2::DescribeSnapshots.new
  }.merge!(options))
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<~Excon::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



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

def describe_volumes(volume_id = [])
  params = AWS.indexed_param('VolumeId', volume_id)
  request({
    'Action'    => 'DescribeVolumes',
    :idempotent => true,
    :parser     => Fog::Parsers::AWS::EC2::DescribeVolumes.new
  }.merge!(params))
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<~Excon::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



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

def detach_volume(volume_id, options = {})
  request({
    'Action'    => 'DetachVolume',
    'VolumeId'  => volume_id,
    :idempotent => true,
    :parser     => Fog::Parsers::AWS::EC2::DetachVolume.new
  }.merge!(options))
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<~Excon::Response>:

    • body<~Hash>:

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

      • ‘return’<~Boolean> - success?



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

def disassociate_address(public_ip)
  request(
    'Action'    => 'DisassociateAddress',
    'PublicIp'  => public_ip,
    :idempotent => true,
    :parser     => 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<~Excon::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


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

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

#modify_image_attributes(image_id, attribute, operation_type, options = {}) ⇒ Object

Modify image attributes

Parameters

  • image_id<~String> - Id of machine image to modify

  • attribute<~String> - Attribute to modify, in [‘launchPermission’, ‘productCodes’]

  • operation_type<~String> - Operation to perform on attribute, in [‘add’, ‘remove’]



13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/fog/aws/requests/ec2/modify_image_attributes.rb', line 13

def modify_image_attributes(image_id, attribute, operation_type, options = {})
  params = {}
  params.merge!(AWS.indexed_param('UserId', options['UserId']))
  params.merge!(AWS.indexed_param('UserGroup', options['UserGroup']))
  params.merge!(AWS.indexed_param('ProductCode', options['ProductCode']))
  request({
    'Action'        => 'ModifyImageAttribute',
    'Attribute'     => attribute,
    'ImageId'       => image_id,
    'OperationType' => operation_type,
    :idempotent     => true,
    :parser         => Fog::Parsers::AWS::EC2::Basic.new
  }.merge!(params))
end

#reboot_instances(instance_id = []) ⇒ Object

Reboot specified instances

Parameters

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

Returns

# * response<~Excon::Response>:

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


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

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

#release_address(public_ip) ⇒ Object

Release an elastic IP address.

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

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

      • ‘return’<~Boolean> - success?



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

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

#reloadObject



166
167
168
# File 'lib/fog/aws/ec2.rb', line 166

def reload
  @connection.reset
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<~Excon::Response>:

    • body<~Hash>:

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

      • ‘return’<~Boolean> - success?



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

def revoke_security_group_ingress(options = {})
  request({
    'Action'    => 'RevokeSecurityGroupIngress',
    :idempotent => true,
    :parser     => Fog::Parsers::AWS::EC2::Basic.new
  }.merge!(options))
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

    • ‘BlockDeviceMapping’<~Array>: array of hashes

      • ‘DeviceName’<~String> - where the volume will be exposed to instance

      • ‘VirtualName’<~String> - volume virtual device name

      • ‘Ebs.SnapshotId’<~String> - id of snapshot to boot volume from

      • ‘Ebs.VolumeSize’<~String> - size of volume in GiBs required unless snapshot is specified

      • ‘Ebs.DeleteOnTermination’<~String> - specifies whether or not to delete the volume on instance termination

    • ‘SecurityGroup’<~Array> or <~String> - Name of security group(s) for instances

    • ‘InstanceInitiatedShutdownBehaviour’<~String> - specifies whether volumes are stopped or terminated when instance is shutdown

    • ‘InstanceType’<~String> - Type of instance to boot. Valid options in [‘m1.small’, ‘m1.large’, ‘m1.xlarge’, ‘c1.medium’, ‘c1.xlarge’, ‘m2.2xlarge’, ‘m2.4xlarge’] 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

Returns

  • response<~Excon::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

          • ‘architecture’<~String> - architecture of image in [i386, x86_64]

          • ‘blockDeviceMapping’<~Array>

            • ‘attachTime’<~Time> - time of volume attachment

            • ‘deleteOnTermination’<~Boolean> - whether or not to delete volume on termination

            • ‘deviceName’<~String> - specifies how volume is exposed to instance

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

            • ‘volumeId’<~String> - Id of attached volume

          • ‘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

          • ‘ipAddress’<~String> - public ip address assigned to 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

          • ‘privateIpAddress’<~String> - private ip address assigned to instance

          • ‘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

          • ‘rootDeviceName’<~String> - specifies how the root device is exposed to the instance

          • ‘rootDeviceType’<~String> - root device type used by AMI in [ebs, instance-store]

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

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

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



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/fog/aws/requests/ec2/run_instances.rb', line 81

def run_instances(image_id, min_count, max_count, options = {})
  if block_device_mapping = options.delete('BlockDeviceMapping')
    block_device_mapping.each_with_index do |mapping, index|
      for key, value in mapping
        options.merge!({ format("BlockDeviceMapping.%d.#{key}", index) => value })
      end
    end
  end
  if security_groups = [*options.delete('SecurityGroup')]
    options.merge!(AWS.indexed_param('SecurityGroup', security_groups))
  end
  if options['UserData']
    options['UserData'] = Base64.encode64(options['UserData'])
  end
  request({
    'Action'    => 'RunInstances',
    'ImageId'   => image_id,
    'MinCount'  => min_count,
    'MaxCount'  => max_count,
    :parser     => Fog::Parsers::AWS::EC2::RunInstances.new
  }.merge!(options))
end

#terminate_instances(instance_id) ⇒ Object

Terminate specified instances

Parameters

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

Returns

# * response<~Excon::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


25
26
27
28
29
30
31
32
# File 'lib/fog/aws/requests/ec2/terminate_instances.rb', line 25

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