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)


373
374
375
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 373

def ami_launch_index
  data[:ami_launch_index]
end

#architectureString

The architecture of the image.

Returns:

  • (String)


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

def architecture
  data[:architecture]
end

Examples:

Request syntax with placeholder values


instance.attach_classic_link_vpc({
  dry_run: false,
  vpc_id: "VpcId", # required
  groups: ["SecurityGroupId"], # 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 ClassicLink-enabled VPC.

  • :groups (required, Array<String>)

    The IDs of the security groups. You cannot specify security groups from a different VPC.

Returns:



707
708
709
710
711
712
713
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 707

def attach_classic_link_vpc(options = {})
  options = options.merge(instance_id: @id)
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.attach_classic_link_vpc(options)
  end
  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:



734
735
736
737
738
739
740
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 734

def attach_volume(options = {})
  options = options.merge(instance_id: @id)
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.attach_volume(options)
  end
  resp.data
end

#block_device_mappingsArray<Types::InstanceBlockDeviceMapping>

Any block device mapping entries for the instance.



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

def block_device_mappings
  data[:block_device_mappings]
end

#boot_modeString

The boot mode that was specified by the AMI. If the value is uefi-preferred, the AMI supports both UEFI and Legacy BIOS. The currentInstanceBootMode parameter is the boot mode that is used to boot the instance at launch or start.

The operating system contained in the AMI must be configured to support the specified boot mode.

For more information, see Boot modes in the Amazon EC2 User Guide.

Returns:

  • (String)


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

def boot_mode
  data[:boot_mode]
end

#capacity_reservation_idString

The ID of the Capacity Reservation.

Returns:

  • (String)


182
183
184
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 182

def capacity_reservation_id
  data[:capacity_reservation_id]
end

#capacity_reservation_specificationTypes::CapacityReservationSpecificationResponse

Information about the Capacity Reservation targeting option.



188
189
190
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 188

def capacity_reservation_specification
  data[:capacity_reservation_specification]
end

#classic_addressClassicAddress?

Returns:



1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1540

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

#clientClient

Returns:



459
460
461
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 459

def client
  @client
end

#client_tokenString

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

Returns:

  • (String)


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

def client_token
  data[:client_token]
end

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

Examples:

Request syntax with placeholder values


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

Parameters:

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

    ({})

Options Hash (options):

  • :latest (Boolean)

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

    Default: disabled (false)

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the operation, 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:



759
760
761
762
763
764
765
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 759

def console_output(options = {})
  options = options.merge(instance_id: @id)
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.get_console_output(options)
  end
  resp.data
end

#cpu_optionsTypes::CpuOptions

The CPU options for the instance.

Returns:



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

def cpu_options
  data[:cpu_options]
end

#create_image(options = {}) ⇒ Image

Examples:

Request syntax with placeholder values


image = instance.create_image({
  tag_specifications: [
    {
      resource_type: "capacity-reservation", # accepts capacity-reservation, client-vpn-endpoint, customer-gateway, carrier-gateway, coip-pool, declarative-policies-report, 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-connection, vpc-endpoint-service, vpc-endpoint-service-permission, vpc-peering-connection, vpn-connection, vpn-gateway, vpc-flow-log, capacity-reservation-fleet, traffic-mirror-filter-rule, vpc-endpoint-connection-device-type, verified-access-instance, verified-access-group, verified-access-endpoint, verified-access-policy, verified-access-trust-provider, vpn-connection-device-type, vpc-block-public-access-exclusion, ipam-resource-discovery, ipam-resource-discovery-association, instance-connect-endpoint, verified-access-endpoint-target, ipam-external-resource-verification-token
      tags: [
        {
          key: "String",
          value: "String",
        },
      ],
    },
  ],
  dry_run: false,
  name: "String", # required
  description: "String",
  no_reboot: false,
  block_device_mappings: [
    {
      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",
      device_name: "String",
      virtual_name: "String",
    },
  ],
})

Parameters:

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

    ({})

Options Hash (options):

  • :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.

  • :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(_)

  • :description (String)

    A description for the new image.

  • :no_reboot (Boolean)

    Indicates whether or not the instance should be automatically rebooted before creating the image. Specify one of the following values:

    • true - The instance is not rebooted before creating the image. This creates crash-consistent snapshots that include only the data that has been written to the volumes at the time the snapshots are created. Buffered data and data in memory that has not yet been written to the volumes is not included in the snapshots.

    • false - The instance is rebooted before creating the image. This ensures that all buffered data and data in memory is written to the volumes before the snapshots are created.

    Default: false

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

    The block device mappings.

    When using the CreateImage action:

    • You can't change the volume size using the VolumeSize parameter. If you want a different volume size, you must first change the volume size of the source instance.

    • You can't modify the encryption status of existing volumes or snapshots. To create an AMI with volumes or snapshots that have a different encryption status (for example, where the source volume and snapshots are unencrypted, and you want to create an AMI with encrypted volumes or snapshots), use the CopyImage action.

    • The only option that can be changed for existing mappings or snapshots is DeleteOnTermination.

Returns:



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

def create_image(options = {})
  options = options.merge(instance_id: @id)
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.create_image(options)
  end
  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:



903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 903

def create_tags(options = {})
  batch = []
  options = Aws::Util.deep_merge(options, resources: [@id])
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.create_tags(options)
  end
  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

#current_instance_boot_modeString

The boot mode that is used to boot the instance at launch or start. For more information, see Boot modes in the Amazon EC2 User Guide.

Returns:

  • (String)


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

def current_instance_boot_mode
  data[:current_instance_boot_mode]
end

#dataTypes::Instance

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

Returns:



481
482
483
484
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 481

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.



489
490
491
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 489

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:



950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 950

def delete_tags(options = {})
  batch = []
  options = Aws::Util.deep_merge(options, resources: [@id])
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.delete_tags(options)
  end
  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({
  dry_run: false,
  attribute: "instanceType", # required, accepts instanceType, kernel, ramdisk, userData, disableApiTermination, instanceInitiatedShutdownBehavior, rootDeviceName, blockDeviceMapping, productCodes, sourceDestCheck, groupSet, ebsOptimized, sriovNetSupport, enaSupport, enclaveOptions, disableApiStop
})

Parameters:

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

    ({})

Options Hash (options):

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the operation, 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.

  • :attribute (required, String)

    The instance attribute.

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

Returns:



984
985
986
987
988
989
990
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 984

def describe_attribute(options = {})
  options = options.merge(instance_id: @id)
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.describe_instance_attribute(options)
  end
  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:



1007
1008
1009
1010
1011
1012
1013
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1007

def detach_classic_link_vpc(options = {})
  options = options.merge(instance_id: @id)
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.detach_classic_link_vpc(options)
  end
  resp.data
end

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

Examples:

Request syntax with placeholder values


instance.detach_volume({
  device: "String",
  force: false,
  volume_id: "VolumeIdWithResolver", # 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:



1043
1044
1045
1046
1047
1048
1049
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1043

def detach_volume(options = {})
  options = options.merge(instance_id: @id)
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.detach_volume(options)
  end
  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)


63
64
65
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 63

def ebs_optimized
  data[:ebs_optimized]
end

#elastic_gpu_associationsArray<Types::ElasticGpuAssociation>

Deprecated.

Amazon Elastic Graphics reached end of life on January 8, 2024.

Returns:



98
99
100
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 98

def elastic_gpu_associations
  data[:elastic_gpu_associations]
end

#elastic_inference_accelerator_associationsArray<Types::ElasticInferenceAcceleratorAssociation>

Deprecated

Amazon Elastic Inference is no longer available.



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

def elastic_inference_accelerator_associations
  data[:elastic_inference_accelerator_associations]
end

#ena_supportBoolean

Specifies whether enhanced networking with ENA is enabled.

Returns:

  • (Boolean)


69
70
71
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 69

def ena_support
  data[:ena_support]
end

#enclave_optionsTypes::EnclaveOptions

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



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

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.



496
497
498
499
500
501
502
503
504
505
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 496

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.



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

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)


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

def hypervisor
  data[:hypervisor]
end

#iam_instance_profileTypes::IamInstanceProfile

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



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

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:



1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1552

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)


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

def image_id
  data[:image_id]
end

#instance_lifecycleString

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

Returns:

  • (String)


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

def instance_lifecycle
  data[:instance_lifecycle]
end

#instance_typeString

The instance type.

Returns:

  • (String)


385
386
387
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 385

def instance_type
  data[:instance_type]
end

#ipv_6_addressString

The IPv6 address assigned to the instance.

Returns:

  • (String)


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

def ipv_6_address
  data[:ipv_6_address]
end

#kernel_idString

The kernel associated with this instance, if applicable.

Returns:

  • (String)


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

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)


366
367
368
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 366

def key_name
  data[:key_name]
end

#key_pairKeyPairInfo?

Returns:



1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1564

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

#launch_timeTime

The time that the instance was last launched. To determine the time that instance was first launched, see the attachment time for the primary network interface.

Returns:

  • (Time)


393
394
395
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 393

def launch_time
  data[:launch_time]
end

#licensesArray<Types::LicenseConfiguration>

The license configurations for the instance.

Returns:



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

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)


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

def load
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.describe_instances(instance_ids: [@id])
  end
  @data = resp.reservations[0].instances[0]
  self
end

#maintenance_optionsTypes::InstanceMaintenanceOptions

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



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

def maintenance_options
  data[:maintenance_options]
end

#metadata_optionsTypes::InstanceMetadataOptionsResponse

The metadata options for the instance.



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

def 
  data[:metadata_options]
end

#modify_attribute(options = {}) ⇒ EmptyStructure

Examples:

Request syntax with placeholder values


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

  • :disable_api_stop (Types::AttributeBooleanValue)

    Indicates whether an instance is enabled for stop protection. For more information, see Enable stop protection for your instance.

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the operation, 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.

  • :attribute (String)

    The name of the attribute to modify.

    You can modify the following attributes only: disableApiTermination | instanceType | kernel | ramdisk | instanceInitiatedShutdownBehavior | blockDeviceMapping | userData | sourceDestCheck | groupSet | ebsOptimized | sriovNetSupport | enaSupport | nvmeSupport | disableApiStop | enclaveOptions

  • :value (String)

    A new value for the attribute. Use only with the kernel, ramdisk, userData, disableApiTermination, or instanceInitiatedShutdownBehavior 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. You can't modify the DeleteOnTermination attribute for volumes that are attached to Fargate tasks.

    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.

  • :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.

  • :user_data (Types::BlobAttributeValue)

    Changes the instance's user data to the specified value. User data must be base64-encoded. Depending on the tool or SDK that you're using, the base64-encoding might be performed for you. For more information, see Work with instance user data.

  • :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).

  • :groups (Array<String>)

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

  • :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.

  • :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.

  • :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.

Returns:

  • (EmptyStructure)


1211
1212
1213
1214
1215
1216
1217
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1211

def modify_attribute(options = {})
  options = options.merge(instance_id: @id)
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.modify_instance_attribute(options)
  end
  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 operation, 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:



1231
1232
1233
1234
1235
1236
1237
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1231

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

#monitoringTypes::Monitoring

The monitoring for the instance.

Returns:



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

def monitoring
  data[:monitoring]
end

#network_interfacesNetworkInterface::Collection



1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1576

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

#network_performance_optionsTypes::InstanceNetworkPerformanceOptions

Contains settings for the network performance options for your instance.



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

def network_performance_options
  data[:network_performance_options]
end

#operatorTypes::OperatorResponse

The service provider that manages the instance.



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

def operator
  data[:operator]
end

#outpost_arnString

The Amazon Resource Name (ARN) of the Outpost.

Returns:

  • (String)


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

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 operation, 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:



1251
1252
1253
1254
1255
1256
1257
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1251

def password_data(options = {})
  options = options.merge(instance_id: @id)
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.get_password_data(options)
  end
  resp.data
end

#placementTypes::Placement

The location where the instance launched, if applicable.

Returns:



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

def placement
  data[:placement]
end

#placement_groupPlacementGroup?

Returns:



1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1589

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

#platformString

The platform. This value is windows for Windows instances; otherwise, it is empty.

Returns:

  • (String)


418
419
420
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 418

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)


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

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.

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)


344
345
346
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 344

def private_dns_name
  data[:private_dns_name]
end

#private_dns_name_optionsTypes::PrivateDnsNameOptionsResponse

The options for the instance hostname.



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

def private_dns_name_options
  data[:private_dns_name_options]
end

#private_ip_addressString

The private IPv4 address assigned to the instance.

Returns:

  • (String)


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

def private_ip_address
  data[:private_ip_address]
end

#product_codesArray<Types::ProductCode>

The product codes attached to this instance, if applicable.

Returns:



379
380
381
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 379

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. This name is only available if you've enabled DNS hostnames for your VPC.

Returns:

  • (String)


352
353
354
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 352

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)


452
453
454
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 452

def public_ip_address
  data[:public_ip_address]
end

#ramdisk_idString

The RAM disk associated with this instance, if applicable.

Returns:

  • (String)


411
412
413
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 411

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 operation, 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)


1271
1272
1273
1274
1275
1276
1277
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1271

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

#report_status(options = {}) ⇒ EmptyStructure

Examples:

Request syntax with placeholder values


instance.report_status({
  dry_run: false,
  status: "ok", # required, accepts ok, impaired
  start_time: Time.now,
  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
  description: "ReportInstanceStatusRequestDescription",
})

Parameters:

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

    ({})

Options Hash (options):

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the operation, 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.

  • :status (required, String)

    The status of all instances listed.

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

    The time at which the reported instance health state began.

  • :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]

  • :description (String)

    Descriptive text about the health state of your instance.

Returns:

  • (EmptyStructure)


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

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

#reset_attribute(options = {}) ⇒ EmptyStructure

Examples:

Request syntax with placeholder values


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

Parameters:

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

    ({})

Options Hash (options):

  • :dry_run (Boolean)

    Checks whether you have the required permissions for the operation, 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.

  • :attribute (required, String)

    The attribute to reset.

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

Returns:

  • (EmptyStructure)


1357
1358
1359
1360
1361
1362
1363
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1357

def reset_attribute(options = {})
  options = options.merge(instance_id: @id)
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.reset_instance_attribute(options)
  end
  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 operation, 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)


1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1377

def reset_kernel(options = {})
  options = options.merge(
    instance_id: @id,
    attribute: "kernel"
  )
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.reset_instance_attribute(options)
  end
  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 operation, 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)


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

def reset_ramdisk(options = {})
  options = options.merge(
    instance_id: @id,
    attribute: "ramdisk"
  )
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.reset_instance_attribute(options)
  end
  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 operation, 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)


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

def reset_source_dest_check(options = {})
  options = options.merge(
    instance_id: @id,
    attribute: "sourceDestCheck"
  )
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.reset_instance_attribute(options)
  end
  resp.data
end

#root_device_nameString

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

Returns:

  • (String)


120
121
122
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 120

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)


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

def root_device_type
  data[:root_device_type]
end

#security_groupsArray<Types::GroupIdentifier>

The security groups for the instance.

Returns:



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

def security_groups
  data[:security_groups]
end

#source_dest_checkBoolean

Indicates whether source/destination checking is enabled.

Returns:

  • (Boolean)


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

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)


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

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)


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

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 operation, 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:



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

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

#stateTypes::InstanceState

The current state of the instance.



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

def state
  data[:state]
end

#state_reasonTypes::StateReason

The reason for the most recent state transition.

Returns:



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

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)


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

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 operation, 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:



1489
1490
1491
1492
1493
1494
1495
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1489

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

#subnetSubnet?

Returns:



1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1601

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

#subnet_idString

The ID of the subnet in which the instance is running.

Returns:

  • (String)


430
431
432
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 430

def subnet_id
  data[:subnet_id]
end

#tagsArray<Types::Tag>

Any tags assigned to the instance.

Returns:



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

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 operation, 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:



1509
1510
1511
1512
1513
1514
1515
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1509

def terminate(options = {})
  options = Aws::Util.deep_merge(options, instance_ids: [@id])
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.terminate_instances(options)
  end
  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)


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

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 operation, 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:



1529
1530
1531
1532
1533
1534
1535
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1529

def unmonitor(options = {})
  options = Aws::Util.deep_merge(options, instance_ids: [@id])
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.unmonitor_instances(options)
  end
  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)


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

def usage_operation
  data[:usage_operation]
end

#usage_operation_update_timeTime

The time that the usage operation was last updated.

Returns:

  • (Time)


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

def usage_operation_update_time
  data[:usage_operation_update_time]
end

#virtualization_typeString

The virtualization type of the instance.

Returns:

  • (String)


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

def virtualization_type
  data[:virtualization_type]
end

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

Examples:

Request syntax with placeholder values


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

Parameters:

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

    ({})

Options Hash (options):

  • :volume_ids (Array<String>)

    The volume IDs. If not specified, then all volumes are included in the response.

  • :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.

  • :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)

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

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

    • operator.managed - A Boolean that indicates whether this is a managed volume.

    • operator.principal - The principal that manages the volume. Only valid for managed volumes, where managed is true.

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

Returns:



1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1694

def volumes(options = {})
  batches = Enumerator.new do |y|
    options = Aws::Util.deep_merge(options, filters: [{
      name: "attachment.instance-id",
      values: [@id]
    }])
    resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
      @client.describe_volumes(options)
    end
    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:



1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1719

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({
  public_ips: ["String"],
  dry_run: false,
  filters: [
    {
      name: "String",
      values: ["String"],
    },
  ],
  allocation_ids: ["AllocationId"],
})

Parameters:

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

    ({})

Options Hash (options):

  • :public_ips (Array<String>)

    One or more Elastic IP addresses.

    Default: Describes all your Elastic IP addresses.

  • :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.

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

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

    • allocation-id - The allocation ID for the address.

    • association-id - The association ID for the address.

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

  • :allocation_ids (Array<String>)

    Information about the allocation IDs.

Returns:



1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1790

def vpc_addresses(options = {})
  batches = Enumerator.new do |y|
    batch = []
    options = Aws::Util.deep_merge(options, filters: [{
      name: "instance-id",
      values: [@id]
    }])
    resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
      @client.describe_addresses(options)
    end
    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

The ID of the VPC in which the instance is running.

Returns:

  • (String)


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

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



667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 667

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::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    Aws::Waiters::Waiter.new(options).wait({})
  end
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:



513
514
515
516
517
518
519
520
521
522
523
524
525
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 513

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 = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    waiter.wait(params.merge(instance_ids: [@id]))
  end
  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:



533
534
535
536
537
538
539
540
541
542
543
544
545
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 533

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 = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    waiter.wait(params.merge(instance_ids: [@id]))
  end
  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:



553
554
555
556
557
558
559
560
561
562
563
564
565
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 553

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 = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    waiter.wait(params.merge(instance_ids: [@id]))
  end
  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:



573
574
575
576
577
578
579
580
581
582
583
584
585
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 573

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 = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    waiter.wait(params.merge(instance_ids: [@id]))
  end
  Instance.new({
    id: @id,
    data: resp.data.reservations[0].instances[0],
    client: @client
  })
end