Class: Aws::EC2::Instance
- Inherits:
-
Object
- Object
- Aws::EC2::Instance
- 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
-
#ami_launch_index ⇒ Integer
The AMI launch index, which can be used to find this instance in the launch group.
-
#architecture ⇒ String
The architecture of the image.
-
#block_device_mappings ⇒ Array<Types::InstanceBlockDeviceMapping>
Any block device mapping entries for the instance.
-
#boot_mode ⇒ String
The boot mode that was specified by the AMI.
-
#capacity_reservation_id ⇒ String
The ID of the Capacity Reservation.
-
#capacity_reservation_specification ⇒ Types::CapacityReservationSpecificationResponse
Information about the Capacity Reservation targeting option.
-
#client_token ⇒ String
The idempotency token you provided when you launched the instance, if applicable.
-
#cpu_options ⇒ Types::CpuOptions
The CPU options for the instance.
-
#current_instance_boot_mode ⇒ String
The boot mode that is used to boot the instance at launch or start.
-
#ebs_optimized ⇒ Boolean
Indicates whether the instance is optimized for Amazon EBS I/O.
-
#elastic_gpu_associations ⇒ Array<Types::ElasticGpuAssociation>
Deprecated.
-
#elastic_inference_accelerator_associations ⇒ Array<Types::ElasticInferenceAcceleratorAssociation>
Deprecated.
-
#ena_support ⇒ Boolean
Specifies whether enhanced networking with ENA is enabled.
-
#enclave_options ⇒ Types::EnclaveOptions
Indicates whether the instance is enabled for Amazon Web Services Nitro Enclaves.
-
#hibernation_options ⇒ Types::HibernationOptions
Indicates whether the instance is enabled for hibernation.
-
#hypervisor ⇒ String
The hypervisor type of the instance.
-
#iam_instance_profile ⇒ Types::IamInstanceProfile
The IAM instance profile associated with the instance, if applicable.
-
#id ⇒ String
(also: #instance_id)
-
#image_id ⇒ String
The ID of the AMI used to launch the instance.
-
#instance_lifecycle ⇒ String
Indicates whether this is a Spot Instance or a Scheduled Instance.
-
#instance_type ⇒ String
The instance type.
-
#ipv_6_address ⇒ String
The IPv6 address assigned to the instance.
-
#kernel_id ⇒ String
The kernel associated with this instance, if applicable.
-
#key_name ⇒ String
The name of the key pair, if this instance was launched with an associated key pair.
-
#launch_time ⇒ Time
The time that the instance was last launched.
-
#licenses ⇒ Array<Types::LicenseConfiguration>
The license configurations for the instance.
-
#maintenance_options ⇒ Types::InstanceMaintenanceOptions
Provides information on the recovery and maintenance options of your instance.
-
#metadata_options ⇒ Types::InstanceMetadataOptionsResponse
The metadata options for the instance.
-
#monitoring ⇒ Types::Monitoring
The monitoring for the instance.
-
#network_performance_options ⇒ Types::InstanceNetworkPerformanceOptions
Contains settings for the network performance options for your instance.
-
#operator ⇒ Types::OperatorResponse
The service provider that manages the instance.
-
#outpost_arn ⇒ String
The Amazon Resource Name (ARN) of the Outpost.
-
#placement ⇒ Types::Placement
The location where the instance launched, if applicable.
-
#platform ⇒ String
The platform.
-
#platform_details ⇒ String
The platform details value for the instance.
-
#private_dns_name ⇒ String
[IPv4 only] The private DNS hostname name assigned to the instance.
-
#private_dns_name_options ⇒ Types::PrivateDnsNameOptionsResponse
The options for the instance hostname.
-
#private_ip_address ⇒ String
The private IPv4 address assigned to the instance.
-
#product_codes ⇒ Array<Types::ProductCode>
The product codes attached to this instance, if applicable.
-
#public_dns_name ⇒ String
[IPv4 only] The public DNS name assigned to the instance.
-
#public_ip_address ⇒ String
The public IPv4 address, or the Carrier IP address assigned to the instance, if applicable.
-
#ramdisk_id ⇒ String
The RAM disk associated with this instance, if applicable.
-
#root_device_name ⇒ String
The device name of the root device volume (for example,
/dev/sda1
). -
#root_device_type ⇒ String
The root device type used by the AMI.
-
#security_groups ⇒ Array<Types::GroupIdentifier>
The security groups for the instance.
-
#source_dest_check ⇒ Boolean
Indicates whether source/destination checking is enabled.
-
#spot_instance_request_id ⇒ String
If the request is a Spot Instance request, the ID of the request.
-
#sriov_net_support ⇒ String
Specifies whether enhanced networking with the Intel 82599 Virtual Function interface is enabled.
-
#state ⇒ Types::InstanceState
The current state of the instance.
-
#state_reason ⇒ Types::StateReason
The reason for the most recent state transition.
-
#state_transition_reason ⇒ String
The reason for the most recent state transition.
-
#subnet_id ⇒ String
The ID of the subnet in which the instance is running.
-
#tags ⇒ Array<Types::Tag>
Any tags assigned to the instance.
-
#tpm_support ⇒ String
If the instance is configured for NitroTPM support, the value is
v2.0
. -
#usage_operation ⇒ String
The usage operation value for the instance.
-
#usage_operation_update_time ⇒ Time
The time that the usage operation was last updated.
-
#virtualization_type ⇒ String
The virtualization type of the instance.
-
#vpc_id ⇒ String
The ID of the VPC in which the instance is running.
Actions collapse
-
#attach_classic_link_vpc(options = {}) ⇒ Types::AttachClassicLinkVpcResult
-
#attach_volume(options = {}) ⇒ Types::VolumeAttachment
-
#console_output(options = {}) ⇒ Types::GetConsoleOutputResult
-
#create_image(options = {}) ⇒ Image
-
#create_tags(options = {}) ⇒ Tag::Collection
-
#delete_tags(options = {}) ⇒ Tag::Collection
-
#describe_attribute(options = {}) ⇒ Types::InstanceAttribute
-
#detach_classic_link_vpc(options = {}) ⇒ Types::DetachClassicLinkVpcResult
-
#detach_volume(options = {}) ⇒ Types::VolumeAttachment
-
#modify_attribute(options = {}) ⇒ EmptyStructure
-
#monitor(options = {}) ⇒ Types::MonitorInstancesResult
-
#password_data(options = {}) ⇒ Types::GetPasswordDataResult
-
#reboot(options = {}) ⇒ EmptyStructure
-
#report_status(options = {}) ⇒ EmptyStructure
-
#reset_attribute(options = {}) ⇒ EmptyStructure
-
#reset_kernel(options = {}) ⇒ EmptyStructure
-
#reset_ramdisk(options = {}) ⇒ EmptyStructure
-
#reset_source_dest_check(options = {}) ⇒ EmptyStructure
-
#start(options = {}) ⇒ Types::StartInstancesResult
-
#stop(options = {}) ⇒ Types::StopInstancesResult
-
#terminate(options = {}) ⇒ Types::TerminateInstancesResult
-
#unmonitor(options = {}) ⇒ Types::UnmonitorInstancesResult
Associations collapse
-
#classic_address ⇒ ClassicAddress?
-
#image ⇒ Image?
-
#key_pair ⇒ KeyPairInfo?
-
#network_interfaces ⇒ NetworkInterface::Collection
-
#placement_group ⇒ PlacementGroup?
-
#subnet ⇒ Subnet?
-
#volumes(options = {}) ⇒ Volume::Collection
-
#vpc ⇒ Vpc?
-
#vpc_addresses(options = {}) ⇒ VpcAddress::Collection
Instance Method Summary collapse
-
#client ⇒ Client
-
#data ⇒ Types::Instance
Returns the data for this Instance.
-
#data_loaded? ⇒ Boolean
Returns
true
if this resource is loaded. -
#decrypt_windows_password(key_pair_path) ⇒ String
-
#exists?(options = {}) ⇒ Boolean
Returns
true
if the Instance exists. -
#initialize(*args) ⇒ Instance
constructor
A new instance of Instance.
- #load ⇒ self (also: #reload)
-
#wait_until(options = {}) {|resource| ... } ⇒ Resource
deprecated
Deprecated.
Use [Aws::EC2::Client] #wait_until instead
-
#wait_until_exists(options = {}, &block) ⇒ Instance
-
#wait_until_running(options = {}, &block) ⇒ Instance
-
#wait_until_stopped(options = {}, &block) ⇒ Instance
-
#wait_until_terminated(options = {}, &block) ⇒ Instance
Constructor Details
#initialize(id, options = {}) ⇒ Instance #initialize(options = {}) ⇒ Instance
Returns a new instance of Instance.
22 23 24 25 26 27 28 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 22 def initialize(*args) = Hash === args.last ? args.pop.dup : {} @id = extract_id(args, ) @data = .delete(:data) @client = .delete(:client) || Client.new() @waiter_block_warned = false end |
Instance Method Details
#ami_launch_index ⇒ Integer
The AMI launch index, which can be used to find this instance in the launch group.
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 |
#architecture ⇒ String
The architecture of the image.
40 41 42 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 40 def architecture data[:architecture] end |
#attach_classic_link_vpc(options = {}) ⇒ Types::AttachClassicLinkVpcResult
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( = {}) = .merge(instance_id: @id) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.attach_classic_link_vpc() end resp.data end |
#attach_volume(options = {}) ⇒ Types::VolumeAttachment
734 735 736 737 738 739 740 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 734 def attach_volume( = {}) = .merge(instance_id: @id) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.attach_volume() end resp.data end |
#block_device_mappings ⇒ Array<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_mode ⇒ String
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.
For more information, see Boot modes in the Amazon EC2 User Guide.
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_id ⇒ String
The ID of the Capacity Reservation.
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_specification ⇒ Types::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_address ⇒ ClassicAddress?
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 |
#client ⇒ Client
459 460 461 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 459 def client @client end |
#client_token ⇒ String
The idempotency token you provided when you launched the instance, if applicable.
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
759 760 761 762 763 764 765 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 759 def console_output( = {}) = .merge(instance_id: @id) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.get_console_output() end resp.data end |
#cpu_options ⇒ Types::CpuOptions
The CPU options for the instance.
176 177 178 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 176 def data[:cpu_options] end |
#create_image(options = {}) ⇒ Image
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( = {}) = .merge(instance_id: @id) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.create_image() end Image.new( id: resp.data.image_id, client: @client ) end |
#create_tags(options = {}) ⇒ Tag::Collection
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 ( = {}) batch = [] = Aws::Util.deep_merge(, resources: [@id]) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.() end [: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_mode ⇒ String
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.
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 |
#data ⇒ Types::Instance
Returns the data for this Aws::EC2::Instance. Calls
Client#describe_instances if #data_loaded? is false
.
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
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
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
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 ( = {}) batch = [] = Aws::Util.deep_merge(, resources: [@id]) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.() end [: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
984 985 986 987 988 989 990 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 984 def describe_attribute( = {}) = .merge(instance_id: @id) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.describe_instance_attribute() end resp.data end |
#detach_classic_link_vpc(options = {}) ⇒ Types::DetachClassicLinkVpcResult
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( = {}) = .merge(instance_id: @id) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.detach_classic_link_vpc() end resp.data end |
#detach_volume(options = {}) ⇒ Types::VolumeAttachment
1043 1044 1045 1046 1047 1048 1049 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1043 def detach_volume( = {}) = .merge(instance_id: @id) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.detach_volume() end resp.data end |
#ebs_optimized ⇒ Boolean
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.
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_associations ⇒ Array<Types::ElasticGpuAssociation>
Deprecated.
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_associations ⇒ Array<Types::ElasticInferenceAcceleratorAssociation>
Deprecated
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_support ⇒ Boolean
Specifies whether enhanced networking with ENA is enabled.
69 70 71 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 69 def ena_support data[:ena_support] end |
#enclave_options ⇒ Types::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 data[:enclave_options] end |
#exists?(options = {}) ⇒ 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?( = {}) begin wait_until_exists(.merge(max_attempts: 1)) true rescue Aws::Waiters::Errors::UnexpectedError => e raise e.error rescue Aws::Waiters::Errors::WaiterFailed false end end |
#hibernation_options ⇒ Types::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 data[:hibernation_options] end |
#hypervisor ⇒ String
The hypervisor type of the instance. The value xen
is used for both
Xen and Nitro hypervisors.
76 77 78 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 76 def hypervisor data[:hypervisor] end |
#iam_instance_profile ⇒ Types::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 |
#id ⇒ String Also known as: instance_id
33 34 35 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 33 def id @id end |
#image ⇒ Image?
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_id ⇒ String
The ID of the AMI used to launch the instance.
324 325 326 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 324 def image_id data[:image_id] end |
#instance_lifecycle ⇒ String
Indicates whether this is a Spot Instance or a Scheduled Instance.
88 89 90 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 88 def instance_lifecycle data[:instance_lifecycle] end |
#instance_type ⇒ String
The instance type.
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_address ⇒ String
The IPv6 address assigned to the instance.
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_id ⇒ String
The kernel associated with this instance, if applicable.
405 406 407 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 405 def kernel_id data[:kernel_id] end |
#key_name ⇒ String
The name of the key pair, if this instance was launched with an associated key pair.
366 367 368 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 366 def key_name data[:key_name] end |
#key_pair ⇒ KeyPairInfo?
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_time ⇒ Time
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.
393 394 395 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 393 def launch_time data[:launch_time] end |
#licenses ⇒ Array<Types::LicenseConfiguration>
The license configurations for the instance.
200 201 202 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 200 def licenses data[:licenses] end |
#load ⇒ self 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
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_options ⇒ Types::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 data[:maintenance_options] end |
#metadata_options ⇒ Types::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
1211 1212 1213 1214 1215 1216 1217 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1211 def modify_attribute( = {}) = .merge(instance_id: @id) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.modify_instance_attribute() end resp.data end |
#monitor(options = {}) ⇒ Types::MonitorInstancesResult
1231 1232 1233 1234 1235 1236 1237 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1231 def monitor( = {}) = Aws::Util.deep_merge(, instance_ids: [@id]) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.monitor_instances() end resp.data end |
#monitoring ⇒ Types::Monitoring
The monitoring for the instance.
424 425 426 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 424 def monitoring data[:monitoring] end |
#network_interfaces ⇒ NetworkInterface::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_options ⇒ Types::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 data[:network_performance_options] end |
#operator ⇒ Types::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_arn ⇒ String
The Amazon Resource Name (ARN) of the Outpost.
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
1251 1252 1253 1254 1255 1256 1257 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1251 def password_data( = {}) = .merge(instance_id: @id) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.get_password_data() end resp.data end |
#placement ⇒ Types::Placement
The location where the instance launched, if applicable.
399 400 401 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 399 def placement data[:placement] end |
#placement_group ⇒ PlacementGroup?
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 |
#platform ⇒ String
The platform. This value is windows
for Windows instances;
otherwise, it is empty.
418 419 420 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 418 def platform data[:platform] end |
#platform_details ⇒ String
The platform details value for the instance. For more information, see AMI billing information fields in the Amazon EC2 User Guide.
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_name ⇒ String
[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.
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_options ⇒ Types::PrivateDnsNameOptionsResponse
The options for the instance hostname.
268 269 270 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 268 def data[:private_dns_name_options] end |
#private_ip_address ⇒ String
The private IPv4 address assigned to the instance.
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_codes ⇒ Array<Types::ProductCode>
The product codes attached to this instance, if applicable.
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_name ⇒ String
[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.
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_address ⇒ String
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.
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_id ⇒ String
The RAM disk associated with this instance, if applicable.
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
1271 1272 1273 1274 1275 1276 1277 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1271 def reboot( = {}) = Aws::Util.deep_merge(, instance_ids: [@id]) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.reboot_instances() end resp.data end |
#report_status(options = {}) ⇒ EmptyStructure
1331 1332 1333 1334 1335 1336 1337 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1331 def report_status( = {}) = Aws::Util.deep_merge(, instances: [@id]) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.report_instance_status() end resp.data end |
#reset_attribute(options = {}) ⇒ EmptyStructure
1357 1358 1359 1360 1361 1362 1363 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1357 def reset_attribute( = {}) = .merge(instance_id: @id) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.reset_instance_attribute() end resp.data end |
#reset_kernel(options = {}) ⇒ 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( = {}) = .merge( instance_id: @id, attribute: "kernel" ) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.reset_instance_attribute() end resp.data end |
#reset_ramdisk(options = {}) ⇒ 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( = {}) = .merge( instance_id: @id, attribute: "ramdisk" ) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.reset_instance_attribute() end resp.data end |
#reset_source_dest_check(options = {}) ⇒ 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( = {}) = .merge( instance_id: @id, attribute: "sourceDestCheck" ) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.reset_instance_attribute() end resp.data end |
#root_device_name ⇒ String
The device name of the root device volume (for example, /dev/sda1
).
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_type ⇒ String
The root device type used by the AMI. The AMI can use an EBS volume or an instance store volume.
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_groups ⇒ Array<Types::GroupIdentifier>
The security groups for the instance.
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_check ⇒ Boolean
Indicates whether source/destination checking is enabled.
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_id ⇒ String
If the request is a Spot Instance request, the ID of the request.
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_support ⇒ String
Specifies whether enhanced networking with the Intel 82599 Virtual Function interface is enabled.
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
1449 1450 1451 1452 1453 1454 1455 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1449 def start( = {}) = Aws::Util.deep_merge(, instance_ids: [@id]) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.start_instances() end resp.data end |
#state ⇒ Types::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_reason ⇒ Types::StateReason
The reason for the most recent state transition.
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_reason ⇒ String
The reason for the most recent state transition. This might be an empty 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
1489 1490 1491 1492 1493 1494 1495 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1489 def stop( = {}) = Aws::Util.deep_merge(, instance_ids: [@id]) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.stop_instances() end resp.data end |
#subnet ⇒ Subnet?
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_id ⇒ String
The ID of the subnet in which the instance is running.
430 431 432 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 430 def subnet_id data[:subnet_id] end |
#tags ⇒ Array<Types::Tag>
Any tags assigned to the instance.
164 165 166 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 164 def data[:tags] end |
#terminate(options = {}) ⇒ Types::TerminateInstancesResult
1509 1510 1511 1512 1513 1514 1515 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1509 def terminate( = {}) = Aws::Util.deep_merge(, instance_ids: [@id]) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.terminate_instances() end resp.data end |
#tpm_support ⇒ String
If the instance is configured for NitroTPM support, the value is
v2.0
. For more information, see NitroTPM in the Amazon EC2
User Guide.
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
1529 1530 1531 1532 1533 1534 1535 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1529 def unmonitor( = {}) = Aws::Util.deep_merge(, instance_ids: [@id]) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.unmonitor_instances() end resp.data end |
#usage_operation ⇒ String
The usage operation value for the instance. For more information, see AMI billing information fields in the Amazon EC2 User Guide.
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_time ⇒ Time
The time that the usage operation was last updated.
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_type ⇒ String
The virtualization type of the instance.
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
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( = {}) batches = Enumerator.new do |y| = Aws::Util.deep_merge(, filters: [{ name: "attachment.instance-id", values: [@id] }]) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.describe_volumes() 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 |
#vpc ⇒ Vpc?
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
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( = {}) batches = Enumerator.new do |y| batch = [] = Aws::Util.deep_merge(, filters: [{ name: "instance-id", values: [@id] }]) resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do @client.describe_addresses() 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_id ⇒ String
The ID of the VPC in which the instance is running.
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
Use [Aws::EC2::Client] #wait_until instead
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() {|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
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( = {}, &block) self_copy = self.dup attempts = 0 [:max_attempts] = 10 unless .key?(:max_attempts) [:delay] ||= 10 [:poller] = Proc.new do attempts += 1 if block.call(self_copy) [:success, self_copy] else self_copy.reload unless attempts == [:max_attempts] :retry end end Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do Aws::Waiters::Waiter.new().wait({}) end end |
#wait_until_exists(options = {}, &block) ⇒ Instance
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( = {}, &block) , params = () waiter = Waiters::InstanceExists.new() 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
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( = {}, &block) , params = () waiter = Waiters::InstanceRunning.new() 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
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( = {}, &block) , params = () waiter = Waiters::InstanceStopped.new() 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
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( = {}, &block) , params = () waiter = Waiters::InstanceTerminated.new() 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 |