Method: Fog::Compute::AWS::Real#run_instances

Defined in:
lib/fog/compute/requests/aws/run_instances.rb

#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

    • ‘ClientToken’<~String> - unique case-sensitive token for ensuring idempotency

    • ‘SecurityGroup’<~Array> or <~String> - Name of security group(s) for instances (you must omit this parameter if using Virtual Private Clouds)

    • ‘InstanceInitiatedShutdownBehaviour’<~String> - specifies whether volumes are stopped or terminated when instance is shutdown, in [stop, terminate]

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

Amazon API Reference



84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/fog/compute/requests/aws/run_instances.rb', line 84

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!(Fog::AWS.indexed_param('SecurityGroup', [*security_groups]))
  end
  if options['UserData']
    options['UserData'] = Base64.encode64(options['UserData'])
  end

  idempotent = !(options['ClientToken'].nil? || options['ClientToken'].empty?)

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