Class: Aws::EC2::Instance

Inherits:
Object
  • Object
show all
Defined in:
gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb,
gems/aws-sdk-ec2/lib/aws-sdk-ec2/customizations/instance.rb

Defined Under Namespace

Classes: Collection

Read-Only Attributes collapse

Actions collapse

Associations collapse

Instance Method Summary collapse

Constructor Details

#initialize(id, options = {}) ⇒ Instance #initialize(options = {}) ⇒ Instance

Returns a new instance of Instance.

Overloads:

  • #initialize(id, options = {}) ⇒ Instance

    Parameters:

    • id (String)

    Options Hash (options):

  • #initialize(options = {}) ⇒ Instance

    Options Hash (options):

    • :id (required, String)
    • :client (Client)


22
23
24
25
26
27
28
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 22

def initialize(*args)
  options = Hash === args.last ? args.pop.dup : {}
  @id = extract_id(args, options)
  @data = options.delete(:data)
  @client = options.delete(:client) || Client.new(options)
  @waiter_block_warned = false
end

Instance Method Details

#ami_launch_indexInteger

The AMI launch index, which can be used to find this instance in the launch group.

Returns:

  • (Integer)


41
42
43
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 41

def ami_launch_index
  data[:ami_launch_index]
end

#architectureString

The architecture of the image.

Returns:

  • (String)


172
173
174
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 172

def architecture
  data[:architecture]
end

Examples:

Request syntax with placeholder values


instance.attach_classic_link_vpc({
  dry_run: false,
  groups: ["SecurityGroupId"], # required
  vpc_id: "VpcId", # required
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

  • :groups (required, Array<String>)

    The ID of one or more of the VPC's security groups. You cannot specify security groups from a different VPC.

  • :vpc_id (required, String)

    The ID of a ClassicLink-enabled VPC.

Returns:



650
651
652
653
654
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 650

def attach_classic_link_vpc(options = {})
  options = options.merge(instance_id: @id)
  resp = @client.attach_classic_link_vpc(options)
  resp.data
end

#attach_volume(options = {}) ⇒ Types::VolumeAttachment

Examples:

Request syntax with placeholder values


instance.attach_volume({
  device: "String", # required
  volume_id: "VolumeId", # required
  dry_run: false,
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :device (required, String)

    The device name (for example, /dev/sdh or xvdh).

  • :volume_id (required, String)

    The ID of the EBS volume. The volume and instance must be within the same Availability Zone.

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

Returns:



675
676
677
678
679
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 675

def attach_volume(options = {})
  options = options.merge(instance_id: @id)
  resp = @client.attach_volume(options)
  resp.data
end

#block_device_mappingsArray<Types::InstanceBlockDeviceMapping>

Any block device mapping entries for the instance.



178
179
180
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 178

def block_device_mappings
  data[:block_device_mappings]
end

#boot_modeString

The boot mode of the instance. For more information, see Boot modes in the Amazon EC2 User Guide.

Returns:

  • (String)


348
349
350
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 348

def boot_mode
  data[:boot_mode]
end

#capacity_reservation_idString

The ID of the Capacity Reservation.

Returns:

  • (String)


306
307
308
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 306

def capacity_reservation_id
  data[:capacity_reservation_id]
end

#capacity_reservation_specificationTypes::CapacityReservationSpecificationResponse

Information about the Capacity Reservation targeting option.



312
313
314
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 312

def capacity_reservation_specification
  data[:capacity_reservation_specification]
end

#classic_addressClassicAddress?

Returns:



1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1413

def classic_address
  if data[:public_ip_address]
    ClassicAddress.new(
      public_ip: data[:public_ip_address],
      client: @client
    )
  else
    nil
  end
end

#clientClient

Returns:



414
415
416
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 414

def client
  @client
end

#client_tokenString

The idempotency token you provided when you launched the instance, if applicable.

Returns:

  • (String)


185
186
187
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 185

def client_token
  data[:client_token]
end

#console_output(options = {}) ⇒ Types::GetConsoleOutputResult

Examples:

Request syntax with placeholder values


instance.console_output({
  dry_run: false,
  latest: false,
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

  • :latest (Boolean)

    When enabled, retrieves the latest console output for the instance.

    Default: disabled (false)

Returns:



698
699
700
701
702
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 698

def console_output(options = {})
  options = options.merge(instance_id: @id)
  resp = @client.get_console_output(options)
  resp.data
end

#cpu_optionsTypes::CpuOptions

The CPU options for the instance.

Returns:



300
301
302
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 300

def cpu_options
  data[:cpu_options]
end

#create_image(options = {}) ⇒ Image

Examples:

Request syntax with placeholder values


image = instance.create_image({
  block_device_mappings: [
    {
      device_name: "String",
      virtual_name: "String",
      ebs: {
        delete_on_termination: false,
        iops: 1,
        snapshot_id: "SnapshotId",
        volume_size: 1,
        volume_type: "standard", # accepts standard, io1, io2, gp2, sc1, st1, gp3
        kms_key_id: "String",
        throughput: 1,
        outpost_arn: "String",
        encrypted: false,
      },
      no_device: "String",
    },
  ],
  description: "String",
  dry_run: false,
  name: "String", # required
  no_reboot: false,
  tag_specifications: [
    {
      resource_type: "capacity-reservation", # accepts capacity-reservation, client-vpn-endpoint, customer-gateway, carrier-gateway, dedicated-host, dhcp-options, egress-only-internet-gateway, elastic-ip, elastic-gpu, export-image-task, export-instance-task, fleet, fpga-image, host-reservation, image, import-image-task, import-snapshot-task, instance, instance-event-window, internet-gateway, ipam, ipam-pool, ipam-scope, ipv4pool-ec2, ipv6pool-ec2, key-pair, launch-template, local-gateway, local-gateway-route-table, local-gateway-virtual-interface, local-gateway-virtual-interface-group, local-gateway-route-table-vpc-association, local-gateway-route-table-virtual-interface-group-association, natgateway, network-acl, network-interface, network-insights-analysis, network-insights-path, network-insights-access-scope, network-insights-access-scope-analysis, placement-group, prefix-list, replace-root-volume-task, reserved-instances, route-table, security-group, security-group-rule, snapshot, spot-fleet-request, spot-instances-request, subnet, subnet-cidr-reservation, traffic-mirror-filter, traffic-mirror-session, traffic-mirror-target, transit-gateway, transit-gateway-attachment, transit-gateway-connect-peer, transit-gateway-multicast-domain, transit-gateway-policy-table, transit-gateway-route-table, transit-gateway-route-table-announcement, volume, vpc, vpc-endpoint, vpc-endpoint-service, vpc-peering-connection, vpn-connection, vpn-gateway, vpc-flow-log, capacity-reservation-fleet, traffic-mirror-filter-rule, vpc-endpoint-connection-device-type
      tags: [
        {
          key: "String",
          value: "String",
        },
      ],
    },
  ],
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :block_device_mappings (Array<Types::BlockDeviceMapping>)

    The block device mappings. This parameter cannot be used to modify the encryption status of existing volumes or snapshots. To create an AMI with encrypted snapshots, use the CopyImage action.

  • :description (String)

    A description for the new image.

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

  • :name (required, String)

    A name for the new image.

    Constraints: 3-128 alphanumeric characters, parentheses (()), square brackets ([]), spaces ( ), periods (.), slashes (/), dashes (-), single quotes ('), at-signs (@), or underscores(_)

  • :no_reboot (Boolean)

    By default, when Amazon EC2 creates the new AMI, it reboots the instance so that it can take snapshots of the attached volumes while data is at rest, in order to ensure a consistent state. You can set the NoReboot parameter to true in the API request, or use the --no-reboot option in the CLI to prevent Amazon EC2 from shutting down and rebooting the instance.

    If you choose to bypass the shutdown and reboot process by setting the NoReboot parameter to true in the API request, or by using the --no-reboot option in the CLI, we can't guarantee the file system integrity of the created image.

    Default: false (follow standard reboot process)

  • :tag_specifications (Array<Types::TagSpecification>)

    The tags to apply to the AMI and snapshots on creation. You can tag the AMI, the snapshots, or both.

    • To tag the AMI, the value for ResourceType must be image.

    • To tag the snapshots that are created of the root volume and of other Amazon EBS volumes that are attached to the instance, the value for ResourceType must be snapshot. The same tag is applied to all of the snapshots that are created.

    If you specify other values for ResourceType, the request fails.

    To tag an AMI or snapshot after it has been created, see CreateTags.

Returns:



793
794
795
796
797
798
799
800
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 793

def create_image(options = {})
  options = options.merge(instance_id: @id)
  resp = @client.create_image(options)
  Image.new(
    id: resp.data.image_id,
    client: @client
  )
end

#create_tags(options = {}) ⇒ Tag::Collection

Examples:

Request syntax with placeholder values


tag = instance.create_tags({
  dry_run: false,
  tags: [ # required
    {
      key: "String",
      value: "String",
    },
  ],
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

  • :tags (required, Array<Types::Tag>)

    The tags. The value parameter is required, but if you don't want the tag to have a value, specify the parameter with no value, and we set the value to an empty string.

Returns:



824
825
826
827
828
829
830
831
832
833
834
835
836
837
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 824

def create_tags(options = {})
  batch = []
  options = Aws::Util.deep_merge(options, resources: [@id])
  resp = @client.create_tags(options)
  options[:tags].each do |t|
    batch << Tag.new(
      resource_id: @id,
      key: t[:key],
      value: t[:value],
      client: @client
    )
  end
  Tag::Collection.new([batch], size: batch.size)
end

#dataTypes::Instance

Returns the data for this Aws::EC2::Instance. Calls Client#describe_instances if #data_loaded? is false.

Returns:



434
435
436
437
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 434

def data
  load unless @data
  @data
end

#data_loaded?Boolean

Returns true if this resource is loaded. Accessing attributes or #data on an unloaded resource will trigger a call to #load.

Returns:

  • (Boolean)

    Returns true if this resource is loaded. Accessing attributes or #data on an unloaded resource will trigger a call to #load.



442
443
444
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 442

def data_loaded?
  !!@data
end

#decrypt_windows_password(key_pair_path) ⇒ String

Parameters:

  • key_pair_path (String, Pathname)

Returns:

  • (String)


11
12
13
14
15
16
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/customizations/instance.rb', line 11

def decrypt_windows_password(key_pair_path)
  decoded = Base64.decode64(encrypted_password)
  pem_bytes = File.open(key_pair_path, 'rb') { |f| f.read }
  private_key = OpenSSL::PKey::RSA.new(pem_bytes)
  private_key.private_decrypt(decoded)
end

#delete_tags(options = {}) ⇒ Tag::Collection

Examples:

Request syntax with placeholder values


tag = instance.delete_tags({
  dry_run: false,
  tags: [
    {
      key: "String",
      value: "String",
    },
  ],
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

  • :tags (Array<Types::Tag>)

    The tags to delete. Specify a tag key and an optional tag value to delete specific tags. If you specify a tag key without a tag value, we delete any tag with this key regardless of its value. If you specify a tag key with an empty string as the tag value, we delete the tag only if its value is an empty string.

    If you omit this parameter, we delete all user-defined tags for the specified resources. We do not delete Amazon Web Services-generated tags (tags that have the aws: prefix).

    Constraints: Up to 1000 tags.

Returns:



869
870
871
872
873
874
875
876
877
878
879
880
881
882
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 869

def delete_tags(options = {})
  batch = []
  options = Aws::Util.deep_merge(options, resources: [@id])
  resp = @client.delete_tags(options)
  options[:tags].each do |t|
    batch << Tag.new(
      resource_id: @id,
      key: t[:key],
      value: t[:value],
      client: @client
    )
  end
  Tag::Collection.new([batch], size: batch.size)
end

#describe_attribute(options = {}) ⇒ Types::InstanceAttribute

Examples:

Request syntax with placeholder values


instance.describe_attribute({
  attribute: "instanceType", # required, accepts instanceType, kernel, ramdisk, userData, disableApiTermination, instanceInitiatedShutdownBehavior, rootDeviceName, blockDeviceMapping, productCodes, sourceDestCheck, groupSet, ebsOptimized, sriovNetSupport, enaSupport, enclaveOptions, disableApiStop
  dry_run: false,
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :attribute (required, String)

    The instance attribute.

    Note: The enaSupport attribute is not supported at this time.

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

Returns:



901
902
903
904
905
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 901

def describe_attribute(options = {})
  options = options.merge(instance_id: @id)
  resp = @client.describe_instance_attribute(options)
  resp.data
end

Examples:

Request syntax with placeholder values


instance.detach_classic_link_vpc({
  dry_run: false,
  vpc_id: "VpcId", # required
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

  • :vpc_id (required, String)

    The ID of the VPC to which the instance is linked.

Returns:



922
923
924
925
926
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 922

def detach_classic_link_vpc(options = {})
  options = options.merge(instance_id: @id)
  resp = @client.detach_classic_link_vpc(options)
  resp.data
end

#detach_volume(options = {}) ⇒ Types::VolumeAttachment

Examples:

Request syntax with placeholder values


instance.detach_volume({
  device: "String",
  force: false,
  volume_id: "VolumeId", # required
  dry_run: false,
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :device (String)

    The device name.

  • :force (Boolean)

    Forces detachment if the previous detachment attempt did not occur cleanly (for example, logging into an instance, unmounting the volume, and detaching normally). This option can lead to data loss or a corrupted file system. Use this option only as a last resort to detach a volume from a failed instance. The instance won't have an opportunity to flush file system caches or file system metadata. If you use this option, you must perform file system check and repair procedures.

  • :volume_id (required, String)

    The ID of the volume.

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

Returns:



956
957
958
959
960
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 956

def detach_volume(options = {})
  options = options.merge(instance_id: @id)
  resp = @client.detach_volume(options)
  resp.data
end

#ebs_optimizedBoolean

Indicates whether the instance is optimized for Amazon EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance.

Returns:

  • (Boolean)


195
196
197
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 195

def ebs_optimized
  data[:ebs_optimized]
end

#elastic_gpu_associationsArray<Types::ElasticGpuAssociation>

The Elastic GPU associated with the instance.

Returns:



226
227
228
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 226

def elastic_gpu_associations
  data[:elastic_gpu_associations]
end

#elastic_inference_accelerator_associationsArray<Types::ElasticInferenceAcceleratorAssociation>

The elastic inference accelerator associated with the instance.



232
233
234
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 232

def elastic_inference_accelerator_associations
  data[:elastic_inference_accelerator_associations]
end

#ena_supportBoolean

Specifies whether enhanced networking with ENA is enabled.

Returns:

  • (Boolean)


201
202
203
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 201

def ena_support
  data[:ena_support]
end

#enclave_optionsTypes::EnclaveOptions

Indicates whether the instance is enabled for Amazon Web Services Nitro Enclaves.



337
338
339
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 337

def enclave_options
  data[:enclave_options]
end

#exists?(options = {}) ⇒ Boolean

Returns true if the Instance exists.

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Returns:

  • (Boolean)

    Returns true if the Instance exists.



449
450
451
452
453
454
455
456
457
458
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 449

def exists?(options = {})
  begin
    wait_until_exists(options.merge(max_attempts: 1))
    true
  rescue Aws::Waiters::Errors::UnexpectedError => e
    raise e.error
  rescue Aws::Waiters::Errors::WaiterFailed
    false
  end
end

#hibernation_optionsTypes::HibernationOptions

Indicates whether the instance is enabled for hibernation.



318
319
320
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 318

def hibernation_options
  data[:hibernation_options]
end

#hypervisorString

The hypervisor type of the instance. The value xen is used for both Xen and Nitro hypervisors.

Returns:

  • (String)


208
209
210
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 208

def hypervisor
  data[:hypervisor]
end

#iam_instance_profileTypes::IamInstanceProfile

The IAM instance profile associated with the instance, if applicable.



214
215
216
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 214

def iam_instance_profile
  data[:iam_instance_profile]
end

#idString Also known as: instance_id

Returns:

  • (String)


33
34
35
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 33

def id
  @id
end

#imageImage?

Returns:



1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1425

def image
  if data[:image_id]
    Image.new(
      id: data[:image_id],
      client: @client
    )
  else
    nil
  end
end

#image_idString

The ID of the AMI used to launch the instance.

Returns:

  • (String)


47
48
49
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 47

def image_id
  data[:image_id]
end

#instance_lifecycleString

Indicates whether this is a Spot Instance or a Scheduled Instance.

Returns:

  • (String)


220
221
222
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 220

def instance_lifecycle
  data[:instance_lifecycle]
end

#instance_typeString

The instance type.

Returns:

  • (String)


53
54
55
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 53

def instance_type
  data[:instance_type]
end

#ipv_6_addressString

The IPv6 address assigned to the instance.

Returns:

  • (String)


388
389
390
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 388

def ipv_6_address
  data[:ipv_6_address]
end

#kernel_idString

The kernel associated with this instance, if applicable.

Returns:

  • (String)


59
60
61
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 59

def kernel_id
  data[:kernel_id]
end

#key_nameString

The name of the key pair, if this instance was launched with an associated key pair.

Returns:

  • (String)


66
67
68
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 66

def key_name
  data[:key_name]
end

#key_pairKeyPairInfo?

Returns:



1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1437

def key_pair
  if data[:key_name]
    KeyPairInfo.new(
      name: data[:key_name],
      client: @client
    )
  else
    nil
  end
end

#launch_timeTime

The time the instance was launched.

Returns:

  • (Time)


72
73
74
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 72

def launch_time
  data[:launch_time]
end

#licensesArray<Types::LicenseConfiguration>

The license configurations for the instance.

Returns:



324
325
326
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 324

def licenses
  data[:licenses]
end

#loadself Also known as: reload

Loads, or reloads #data for the current Aws::EC2::Instance. Returns self making it possible to chain methods.

instance.reload.data

Returns:

  • (self)


424
425
426
427
428
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 424

def load
  resp = @client.describe_instances(instance_ids: [@id])
  @data = resp.reservations[0].instances[0]
  self
end

#maintenance_optionsTypes::InstanceMaintenanceOptions

Provides information on the recovery and maintenance options of your instance.



407
408
409
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 407

def maintenance_options
  data[:maintenance_options]
end

#metadata_optionsTypes::InstanceMetadataOptionsResponse

The metadata options for the instance.



330
331
332
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 330

def 
  data[:metadata_options]
end

#modify_attribute(options = {}) ⇒ EmptyStructure

Examples:

Request syntax with placeholder values


instance.modify_attribute({
  source_dest_check: {
    value: false,
  },
  attribute: "instanceType", # accepts instanceType, kernel, ramdisk, userData, disableApiTermination, instanceInitiatedShutdownBehavior, rootDeviceName, blockDeviceMapping, productCodes, sourceDestCheck, groupSet, ebsOptimized, sriovNetSupport, enaSupport, enclaveOptions, disableApiStop
  block_device_mappings: [
    {
      device_name: "String",
      ebs: {
        delete_on_termination: false,
        volume_id: "VolumeId",
      },
      no_device: "String",
      virtual_name: "String",
    },
  ],
  disable_api_termination: {
    value: false,
  },
  dry_run: false,
  ebs_optimized: {
    value: false,
  },
  ena_support: {
    value: false,
  },
  groups: ["SecurityGroupId"],
  instance_initiated_shutdown_behavior: "value", # value <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
  instance_type: "value", # value <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
  kernel: "value", # value <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
  ramdisk: "value", # value <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
  sriov_net_support: "value", # value <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
  user_data: {
    value: "data",
  },
  value: "String",
  disable_api_stop: {
    value: false,
  },
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :source_dest_check (Types::AttributeBooleanValue)

    Enable or disable source/destination checks, which ensure that the instance is either the source or the destination of any traffic that it receives. If the value is true, source/destination checks are enabled; otherwise, they are disabled. The default value is true. You must disable source/destination checks if the instance runs services such as network address translation, routing, or firewalls.

  • :attribute (String)

    The name of the attribute.

  • :block_device_mappings (Array<Types::InstanceBlockDeviceMappingSpecification>)

    Modifies the DeleteOnTermination attribute for volumes that are currently attached. The volume must be owned by the caller. If no value is specified for DeleteOnTermination, the default is true and the volume is deleted when the instance is terminated.

    To add instance store volumes to an Amazon EBS-backed instance, you must add them when you launch the instance. For more information, see Update the block device mapping when launching an instance in the Amazon EC2 User Guide.

  • :disable_api_termination (Types::AttributeBooleanValue)

    If the value is true, you can't terminate the instance using the Amazon EC2 console, CLI, or API; otherwise, you can. You cannot use this parameter for Spot Instances.

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

  • :ebs_optimized (Types::AttributeBooleanValue)

    Specifies whether the instance is optimized for Amazon EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance.

  • :ena_support (Types::AttributeBooleanValue)

    Set to true to enable enhanced networking with ENA for the instance.

    This option is supported only for HVM instances. Specifying this option with a PV instance can make it unreachable.

  • :groups (Array<String>)

    [EC2-VPC] Replaces the security groups of the instance with the specified security groups. You must specify at least one security group, even if it's just the default security group for the VPC. You must specify the security group ID, not the security group name.

  • :instance_initiated_shutdown_behavior (Types::AttributeValue)

    Specifies whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).

  • :instance_type (Types::AttributeValue)

    Changes the instance type to the specified value. For more information, see Instance types in the Amazon EC2 User Guide. If the instance type is not valid, the error returned is InvalidInstanceAttributeValue.

  • :kernel (Types::AttributeValue)

    Changes the instance's kernel to the specified value. We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see PV-GRUB.

  • :ramdisk (Types::AttributeValue)

    Changes the instance's RAM disk to the specified value. We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see PV-GRUB.

  • :sriov_net_support (Types::AttributeValue)

    Set to simple to enable enhanced networking with the Intel 82599 Virtual Function interface for the instance.

    There is no way to disable enhanced networking with the Intel 82599 Virtual Function interface at this time.

    This option is supported only for HVM instances. Specifying this option with a PV instance can make it unreachable.

  • :user_data (Types::BlobAttributeValue)

    Changes the instance's user data to the specified value. If you are using an Amazon Web Services SDK or command line tool, base64-encoding is performed for you, and you can load the text from a file. Otherwise, you must provide base64-encoded text.

  • :value (String)

    A new value for the attribute. Use only with the kernel, ramdisk, userData, disableApiTermination, or instanceInitiatedShutdownBehavior attribute.

  • :disable_api_stop (Types::AttributeBooleanValue)

    Indicates whether an instance is enabled for stop protection. For more information, see Stop Protection.

Returns:

  • (EmptyStructure)


1110
1111
1112
1113
1114
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1110

def modify_attribute(options = {})
  options = options.merge(instance_id: @id)
  resp = @client.modify_instance_attribute(options)
  resp.data
end

#monitor(options = {}) ⇒ Types::MonitorInstancesResult

Examples:

Request syntax with placeholder values


instance.monitor({
  dry_run: false,
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

Returns:



1128
1129
1130
1131
1132
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1128

def monitor(options = {})
  options = Aws::Util.deep_merge(options, instance_ids: [@id])
  resp = @client.monitor_instances(options)
  resp.data
end

#monitoringTypes::Monitoring

The monitoring for the instance.

Returns:



78
79
80
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 78

def monitoring
  data[:monitoring]
end

#network_interfacesNetworkInterface::Collection



1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1449

def network_interfaces
  batch = []
  data[:network_interfaces].each do |d|
    batch << NetworkInterface.new(
      id: d[:network_interface_id],
      data: d,
      client: @client
    )
  end
  NetworkInterface::Collection.new([batch], size: batch.size)
end

#outpost_arnString

The Amazon Resource Name (ARN) of the Outpost.

Returns:

  • (String)


238
239
240
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 238

def outpost_arn
  data[:outpost_arn]
end

#password_data(options = {}) ⇒ Types::GetPasswordDataResult

Examples:

Request syntax with placeholder values


instance.password_data({
  dry_run: false,
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

Returns:



1146
1147
1148
1149
1150
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1146

def password_data(options = {})
  options = options.merge(instance_id: @id)
  resp = @client.get_password_data(options)
  resp.data
end

#placementTypes::Placement

The location where the instance launched, if applicable.

Returns:



84
85
86
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 84

def placement
  data[:placement]
end

#placement_groupPlacementGroup?

Returns:



1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1462

def placement_group
  if data[:placement][:group_name]
    PlacementGroup.new(
      name: data[:placement][:group_name],
      client: @client
    )
  else
    nil
  end
end

#platformString

The value is Windows for Windows instances; otherwise blank.

Returns:

  • (String)


90
91
92
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 90

def platform
  data[:platform]
end

#platform_detailsString

The platform details value for the instance. For more information, see AMI billing information fields in the Amazon EC2 User Guide.

Returns:

  • (String)


359
360
361
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 359

def platform_details
  data[:platform_details]
end

#private_dns_nameString

(IPv4 only) The private DNS hostname name assigned to the instance. This DNS hostname can only be used inside the Amazon EC2 network. This name is not available until the instance enters the running state.

[EC2-VPC] The Amazon-provided DNS server resolves Amazon-provided private DNS hostnames if you've enabled DNS resolution and DNS hostnames in your VPC. If you are not using the Amazon-provided DNS server in your VPC, your custom domain name servers must resolve the hostname as appropriate.

Returns:

  • (String)


104
105
106
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 104

def private_dns_name
  data[:private_dns_name]
end

#private_dns_name_optionsTypes::PrivateDnsNameOptionsResponse

The options for the instance hostname.



382
383
384
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 382

def private_dns_name_options
  data[:private_dns_name_options]
end

#private_ip_addressString

The private IPv4 address assigned to the instance.

Returns:

  • (String)


110
111
112
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 110

def private_ip_address
  data[:private_ip_address]
end

#product_codesArray<Types::ProductCode>

The product codes attached to this instance, if applicable.

Returns:



116
117
118
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 116

def product_codes
  data[:product_codes]
end

#public_dns_nameString

(IPv4 only) The public DNS name assigned to the instance. This name is not available until the instance enters the running state. For EC2-VPC, this name is only available if you've enabled DNS hostnames for your VPC.

Returns:

  • (String)


125
126
127
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 125

def public_dns_name
  data[:public_dns_name]
end

#public_ip_addressString

The public IPv4 address, or the Carrier IP address assigned to the instance, if applicable.

A Carrier IP address only applies to an instance launched in a subnet associated with a Wavelength Zone.

Returns:

  • (String)


135
136
137
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 135

def public_ip_address
  data[:public_ip_address]
end

#ramdisk_idString

The RAM disk associated with this instance, if applicable.

Returns:

  • (String)


141
142
143
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 141

def ramdisk_id
  data[:ramdisk_id]
end

#reboot(options = {}) ⇒ EmptyStructure

Examples:

Request syntax with placeholder values


instance.reboot({
  dry_run: false,
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

Returns:

  • (EmptyStructure)


1164
1165
1166
1167
1168
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1164

def reboot(options = {})
  options = Aws::Util.deep_merge(options, instance_ids: [@id])
  resp = @client.reboot_instances(options)
  resp.data
end

#report_status(options = {}) ⇒ EmptyStructure

Examples:

Request syntax with placeholder values


instance.report_status({
  description: "String",
  dry_run: false,
  end_time: Time.now,
  reason_codes: ["instance-stuck-in-state"], # required, accepts instance-stuck-in-state, unresponsive, not-accepting-credentials, password-not-available, performance-network, performance-instance-store, performance-ebs-volume, performance-other, other
  start_time: Time.now,
  status: "ok", # required, accepts ok, impaired
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :description (String)

    Descriptive text about the health state of your instance.

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

  • :end_time (Time, DateTime, Date, Integer, String)

    The time at which the reported instance health state ended.

  • :reason_codes (required, Array<String>)

    The reason codes that describe the health state of your instance.

    • instance-stuck-in-state: My instance is stuck in a state.

    • unresponsive: My instance is unresponsive.

    • not-accepting-credentials: My instance is not accepting my credentials.

    • password-not-available: A password is not available for my instance.

    • performance-network: My instance is experiencing performance problems that I believe are network related.

    • performance-instance-store: My instance is experiencing performance problems that I believe are related to the instance stores.

    • performance-ebs-volume: My instance is experiencing performance problems that I believe are related to an EBS volume.

    • performance-other: My instance is experiencing performance problems.

    • other: [explain using the description parameter]

  • :start_time (Time, DateTime, Date, Integer, String)

    The time at which the reported instance health state began.

  • :status (required, String)

    The status of all instances listed.

Returns:

  • (EmptyStructure)


1222
1223
1224
1225
1226
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1222

def report_status(options = {})
  options = Aws::Util.deep_merge(options, instances: [@id])
  resp = @client.report_instance_status(options)
  resp.data
end

#reset_attribute(options = {}) ⇒ EmptyStructure

Examples:

Request syntax with placeholder values


instance.reset_attribute({
  attribute: "instanceType", # required, accepts instanceType, kernel, ramdisk, userData, disableApiTermination, instanceInitiatedShutdownBehavior, rootDeviceName, blockDeviceMapping, productCodes, sourceDestCheck, groupSet, ebsOptimized, sriovNetSupport, enaSupport, enclaveOptions, disableApiStop
  dry_run: false,
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :attribute (required, String)

    The attribute to reset.

    You can only reset the following attributes: kernel | ramdisk | sourceDestCheck.

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

Returns:

  • (EmptyStructure)


1246
1247
1248
1249
1250
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1246

def reset_attribute(options = {})
  options = options.merge(instance_id: @id)
  resp = @client.reset_instance_attribute(options)
  resp.data
end

#reset_kernel(options = {}) ⇒ EmptyStructure

Examples:

Request syntax with placeholder values


instance.reset_kernel({
  dry_run: false,
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

Returns:

  • (EmptyStructure)


1264
1265
1266
1267
1268
1269
1270
1271
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1264

def reset_kernel(options = {})
  options = options.merge(
    instance_id: @id,
    attribute: "kernel"
  )
  resp = @client.reset_instance_attribute(options)
  resp.data
end

#reset_ramdisk(options = {}) ⇒ EmptyStructure

Examples:

Request syntax with placeholder values


instance.reset_ramdisk({
  dry_run: false,
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

Returns:

  • (EmptyStructure)


1285
1286
1287
1288
1289
1290
1291
1292
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1285

def reset_ramdisk(options = {})
  options = options.merge(
    instance_id: @id,
    attribute: "ramdisk"
  )
  resp = @client.reset_instance_attribute(options)
  resp.data
end

#reset_source_dest_check(options = {}) ⇒ EmptyStructure

Examples:

Request syntax with placeholder values


instance.reset_source_dest_check({
  dry_run: false,
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

Returns:

  • (EmptyStructure)


1306
1307
1308
1309
1310
1311
1312
1313
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1306

def reset_source_dest_check(options = {})
  options = options.merge(
    instance_id: @id,
    attribute: "sourceDestCheck"
  )
  resp = @client.reset_instance_attribute(options)
  resp.data
end

#root_device_nameString

The device name of the root device volume (for example, /dev/sda1).

Returns:

  • (String)


244
245
246
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 244

def root_device_name
  data[:root_device_name]
end

#root_device_typeString

The root device type used by the AMI. The AMI can use an EBS volume or an instance store volume.

Returns:

  • (String)


251
252
253
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 251

def root_device_type
  data[:root_device_type]
end

#security_groupsArray<Types::GroupIdentifier>

The security groups for the instance.

Returns:



257
258
259
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 257

def security_groups
  data[:security_groups]
end

#source_dest_checkBoolean

Indicates whether source/destination checking is enabled.

Returns:

  • (Boolean)


263
264
265
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 263

def source_dest_check
  data[:source_dest_check]
end

#spot_instance_request_idString

If the request is a Spot Instance request, the ID of the request.

Returns:

  • (String)


269
270
271
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 269

def spot_instance_request_id
  data[:spot_instance_request_id]
end

#sriov_net_supportString

Specifies whether enhanced networking with the Intel 82599 Virtual Function interface is enabled.

Returns:

  • (String)


276
277
278
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 276

def sriov_net_support
  data[:sriov_net_support]
end

#start(options = {}) ⇒ Types::StartInstancesResult

Examples:

Request syntax with placeholder values


instance.start({
  additional_info: "String",
  dry_run: false,
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :additional_info (String)

    Reserved.

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

Returns:



1330
1331
1332
1333
1334
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1330

def start(options = {})
  options = Aws::Util.deep_merge(options, instance_ids: [@id])
  resp = @client.start_instances(options)
  resp.data
end

#stateTypes::InstanceState

The current state of the instance.



147
148
149
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 147

def state
  data[:state]
end

#state_reasonTypes::StateReason

The reason for the most recent state transition.

Returns:



282
283
284
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 282

def state_reason
  data[:state_reason]
end

#state_transition_reasonString

The reason for the most recent state transition. This might be an empty string.

Returns:

  • (String)


154
155
156
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 154

def state_transition_reason
  data[:state_transition_reason]
end

#stop(options = {}) ⇒ Types::StopInstancesResult

Examples:

Request syntax with placeholder values


instance.stop({
  hibernate: false,
  dry_run: false,
  force: false,
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :hibernate (Boolean)

    Hibernates the instance if the instance was enabled for hibernation at launch. If the instance cannot hibernate successfully, a normal shutdown occurs. For more information, see Hibernate your instance in the Amazon EC2 User Guide.

    Default: false

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

  • :force (Boolean)

    Forces the instances to stop. The instances do not have an opportunity to flush file system caches or file system metadata. If you use this option, you must perform file system check and repair procedures. This option is not recommended for Windows instances.

    Default: false

Returns:



1368
1369
1370
1371
1372
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1368

def stop(options = {})
  options = Aws::Util.deep_merge(options, instance_ids: [@id])
  resp = @client.stop_instances(options)
  resp.data
end

#subnetSubnet?

Returns:



1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1474

def subnet
  if data[:subnet_id]
    Subnet.new(
      id: data[:subnet_id],
      client: @client
    )
  else
    nil
  end
end

#subnet_idString

[EC2-VPC] The ID of the subnet in which the instance is running.

Returns:

  • (String)


160
161
162
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 160

def subnet_id
  data[:subnet_id]
end

#tagsArray<Types::Tag>

Any tags assigned to the instance.

Returns:



288
289
290
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 288

def tags
  data[:tags]
end

#terminate(options = {}) ⇒ Types::TerminateInstancesResult

Examples:

Request syntax with placeholder values


instance.terminate({
  dry_run: false,
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

Returns:



1386
1387
1388
1389
1390
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1386

def terminate(options = {})
  options = Aws::Util.deep_merge(options, instance_ids: [@id])
  resp = @client.terminate_instances(options)
  resp.data
end

#tpm_supportString

If the instance is configured for NitroTPM support, the value is v2.0. For more information, see NitroTPM in the Amazon EC2 User Guide.

Returns:

  • (String)


400
401
402
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 400

def tpm_support
  data[:tpm_support]
end

#unmonitor(options = {}) ⇒ Types::UnmonitorInstancesResult

Examples:

Request syntax with placeholder values


instance.unmonitor({
  dry_run: false,
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

Returns:



1404
1405
1406
1407
1408
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1404

def unmonitor(options = {})
  options = Aws::Util.deep_merge(options, instance_ids: [@id])
  resp = @client.unmonitor_instances(options)
  resp.data
end

#usage_operationString

The usage operation value for the instance. For more information, see AMI billing information fields in the Amazon EC2 User Guide.

Returns:

  • (String)


370
371
372
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 370

def usage_operation
  data[:usage_operation]
end

#usage_operation_update_timeTime

The time that the usage operation was last updated.

Returns:

  • (Time)


376
377
378
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 376

def usage_operation_update_time
  data[:usage_operation_update_time]
end

#virtualization_typeString

The virtualization type of the instance.

Returns:

  • (String)


294
295
296
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 294

def virtualization_type
  data[:virtualization_type]
end

#volumes(options = {}) ⇒ Volume::Collection

Examples:

Request syntax with placeholder values


volumes = instance.volumes({
  filters: [
    {
      name: "String",
      values: ["String"],
    },
  ],
  volume_ids: ["VolumeId"],
  dry_run: false,
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :filters (Array<Types::Filter>)

    The filters.

    • attachment.attach-time - The time stamp when the attachment initiated.

    • attachment.delete-on-termination - Whether the volume is deleted on instance termination.

    • attachment.device - The device name specified in the block device mapping (for example, /dev/sda1).

    • attachment.instance-id - The ID of the instance the volume is attached to.

    • attachment.status - The attachment state (attaching | attached | detaching).

    • availability-zone - The Availability Zone in which the volume was created.

    • create-time - The time stamp when the volume was created.

    • encrypted - Indicates whether the volume is encrypted (true | false)

    • multi-attach-enabled - Indicates whether the volume is enabled for Multi-Attach (true | false)

    • fast-restored - Indicates whether the volume was created from a snapshot that is enabled for fast snapshot restore (true | false).

    • size - The size of the volume, in GiB.

    • snapshot-id - The snapshot from which the volume was created.

    • status - The state of the volume (creating | available | in-use | deleting | deleted | error).

    • tag:<key> - The key/value combination of a tag assigned to the resource. Use the tag key in the filter name and the tag value as the filter value. For example, to find all resources that have a tag with the key Owner and the value TeamA, specify tag:Owner for the filter name and TeamA for the filter value.

    • tag-key - The key of a tag assigned to the resource. Use this filter to find all resources assigned a tag with a specific key, regardless of the tag value.

    • volume-id - The volume ID.

    • volume-type - The Amazon EBS volume type (gp2 | gp3 | io1 | io2 | st1 | sc1| standard)

  • :volume_ids (Array<String>)

    The volume IDs.

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

Returns:



1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1560

def volumes(options = {})
  batches = Enumerator.new do |y|
    options = Aws::Util.deep_merge(options, filters: [{
      name: "attachment.instance-id",
      values: [@id]
    }])
    resp = @client.describe_volumes(options)
    resp.each_page do |page|
      batch = []
      page.data.volumes.each do |v|
        batch << Volume.new(
          id: v.volume_id,
          data: v,
          client: @client
        )
      end
      y.yield(batch)
    end
  end
  Volume::Collection.new(batches)
end

#vpcVpc?

Returns:



1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1583

def vpc
  if data[:vpc_id]
    Vpc.new(
      id: data[:vpc_id],
      client: @client
    )
  else
    nil
  end
end

#vpc_addresses(options = {}) ⇒ VpcAddress::Collection

Examples:

Request syntax with placeholder values


vpc_addresses = instance.vpc_addresses({
  filters: [
    {
      name: "String",
      values: ["String"],
    },
  ],
  public_ips: ["String"],
  allocation_ids: ["AllocationId"],
  dry_run: false,
})

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :filters (Array<Types::Filter>)

    One or more filters. Filter names and values are case-sensitive.

    • allocation-id - [EC2-VPC] The allocation ID for the address.

    • association-id - [EC2-VPC] The association ID for the address.

    • domain - Indicates whether the address is for use in EC2-Classic (standard) or in a VPC (vpc).

    • instance-id - The ID of the instance the address is associated with, if any.

    • network-border-group - A unique set of Availability Zones, Local Zones, or Wavelength Zones from where Amazon Web Services advertises IP addresses.

    • network-interface-id - [EC2-VPC] The ID of the network interface that the address is associated with, if any.

    • network-interface-owner-id - The Amazon Web Services account ID of the owner.

    • private-ip-address - [EC2-VPC] The private IP address associated with the Elastic IP address.

    • public-ip - The Elastic IP address, or the carrier IP address.

    • tag:<key> - The key/value combination of a tag assigned to the resource. Use the tag key in the filter name and the tag value as the filter value. For example, to find all resources that have a tag with the key Owner and the value TeamA, specify tag:Owner for the filter name and TeamA for the filter value.

    • tag-key - The key of a tag assigned to the resource. Use this filter to find all resources assigned a tag with a specific key, regardless of the tag value.

  • :public_ips (Array<String>)

    One or more Elastic IP addresses.

    Default: Describes all your Elastic IP addresses.

  • :allocation_ids (Array<String>)

    [EC2-VPC] Information about the allocation IDs.

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

Returns:



1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1657

def vpc_addresses(options = {})
  batches = Enumerator.new do |y|
    batch = []
    options = Aws::Util.deep_merge(options, filters: [{
      name: "instance-id",
      values: [@id]
    }])
    resp = @client.describe_addresses(options)
    resp.data.addresses.each do |a|
      batch << VpcAddress.new(
        allocation_id: a.allocation_id,
        data: a,
        client: @client
      )
    end
    y.yield(batch)
  end
  VpcAddress::Collection.new(batches)
end

#vpc_idString

[EC2-VPC] The ID of the VPC in which the instance is running.

Returns:

  • (String)


166
167
168
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 166

def vpc_id
  data[:vpc_id]
end

#wait_until(options = {}) {|resource| ... } ⇒ Resource

Deprecated.

Use [Aws::EC2::Client] #wait_until instead

Note:

The waiting operation is performed on a copy. The original resource remains unchanged.

Waiter polls an API operation until a resource enters a desired state.

Basic Usage

Waiter will polls until it is successful, it fails by entering a terminal state, or until a maximum number of attempts are made.

# polls in a loop until condition is true
resource.wait_until(options) {|resource| condition}

Example

instance.wait_until(max_attempts:10, delay:5) do |instance|
  instance.state.name == 'running'
end

Configuration

You can configure the maximum number of polling attempts, and the delay (in seconds) between each polling attempt. The waiting condition is set by passing a block to #wait_until:

# poll for ~25 seconds
resource.wait_until(max_attempts:5,delay:5) {|resource|...}

Callbacks

You can be notified before each polling attempt and before each delay. If you throw :success or :failure from these callbacks, it will terminate the waiter.

started_at = Time.now
# poll for 1 hour, instead of a number of attempts
proc = Proc.new do |attempts, response|
  throw :failure if Time.now - started_at > 3600
end

  # disable max attempts
instance.wait_until(before_wait:proc, max_attempts:nil) {...}

Handling Errors

When a waiter is successful, it returns the Resource. When a waiter fails, it raises an error.

begin
  resource.wait_until(...)
rescue Aws::Waiters::Errors::WaiterFailed
  # resource did not enter the desired state in time
end

attempts attempt in seconds invoked before each attempt invoked before each wait

Parameters:

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • :max_attempts (Integer) — default: 10

    Maximum number of

  • :delay (Integer) — default: 10

    Delay between each

  • :before_attempt (Proc) — default: nil

    Callback

  • :before_wait (Proc) — default: nil

    Callback

Yield Parameters:

  • resource (Resource)

    to be used in the waiting condition.

Returns:

  • (Resource)

    if the waiter was successful

Raises:

  • (Aws::Waiters::Errors::FailureStateError)

    Raised when the waiter terminates because the waiter has entered a state that it will not transition out of, preventing success.

    yet successful.

  • (Aws::Waiters::Errors::UnexpectedError)

    Raised when an error is encountered while polling for a resource that is not expected.

  • (NotImplementedError)

    Raised when the resource does not



612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 612

def wait_until(options = {}, &block)
  self_copy = self.dup
  attempts = 0
  options[:max_attempts] = 10 unless options.key?(:max_attempts)
  options[:delay] ||= 10
  options[:poller] = Proc.new do
    attempts += 1
    if block.call(self_copy)
      [:success, self_copy]
    else
      self_copy.reload unless attempts == options[:max_attempts]
      :retry
    end
  end
  Aws::Waiters::Waiter.new(options).wait({})
end

#wait_until_exists(options = {}, &block) ⇒ Instance

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :max_attempts (Integer) — default: 40
  • :delay (Float) — default: 5
  • :before_attempt (Proc)
  • :before_wait (Proc)

Returns:



466
467
468
469
470
471
472
473
474
475
476
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 466

def wait_until_exists(options = {}, &block)
  options, params = separate_params_and_options(options)
  waiter = Waiters::InstanceExists.new(options)
  yield_waiter_and_warn(waiter, &block) if block_given?
  resp = waiter.wait(params.merge(instance_ids: [@id]))
  Instance.new({
    id: @id,
    data: resp.data.reservations[0].instances[0],
    client: @client
  })
end

#wait_until_running(options = {}, &block) ⇒ Instance

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :max_attempts (Integer) — default: 40
  • :delay (Float) — default: 15
  • :before_attempt (Proc)
  • :before_wait (Proc)

Returns:



484
485
486
487
488
489
490
491
492
493
494
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 484

def wait_until_running(options = {}, &block)
  options, params = separate_params_and_options(options)
  waiter = Waiters::InstanceRunning.new(options)
  yield_waiter_and_warn(waiter, &block) if block_given?
  resp = waiter.wait(params.merge(instance_ids: [@id]))
  Instance.new({
    id: @id,
    data: resp.data.reservations[0].instances[0],
    client: @client
  })
end

#wait_until_stopped(options = {}, &block) ⇒ Instance

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :max_attempts (Integer) — default: 40
  • :delay (Float) — default: 15
  • :before_attempt (Proc)
  • :before_wait (Proc)

Returns:



502
503
504
505
506
507
508
509
510
511
512
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 502

def wait_until_stopped(options = {}, &block)
  options, params = separate_params_and_options(options)
  waiter = Waiters::InstanceStopped.new(options)
  yield_waiter_and_warn(waiter, &block) if block_given?
  resp = waiter.wait(params.merge(instance_ids: [@id]))
  Instance.new({
    id: @id,
    data: resp.data.reservations[0].instances[0],
    client: @client
  })
end

#wait_until_terminated(options = {}, &block) ⇒ Instance

Parameters:

  • options (Hash) (defaults to: {})

    ({})

Options Hash (options):

  • :max_attempts (Integer) — default: 40
  • :delay (Float) — default: 15
  • :before_attempt (Proc)
  • :before_wait (Proc)

Returns:



520
521
522
523
524
525
526
527
528
529
530
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 520

def wait_until_terminated(options = {}, &block)
  options, params = separate_params_and_options(options)
  waiter = Waiters::InstanceTerminated.new(options)
  yield_waiter_and_warn(waiter, &block) if block_given?
  resp = waiter.wait(params.merge(instance_ids: [@id]))
  Instance.new({
    id: @id,
    data: resp.data.reservations[0].instances[0],
    client: @client
  })
end