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_block_id ⇒ String
The ID of the Capacity Block.
-
#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
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.
389 390 391 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 389 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
723 724 725 726 727 728 729 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 723 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
750 751 752 753 754 755 756 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 750 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.
245 246 247 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 245 def boot_mode data[:boot_mode] end |
#capacity_block_id ⇒ String
The ID of the Capacity Block.
187 188 189 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 187 def capacity_block_id data[:capacity_block_id] end |
#capacity_reservation_id ⇒ String
The ID of the Capacity Reservation.
193 194 195 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 193 def capacity_reservation_id data[:capacity_reservation_id] end |
#capacity_reservation_specification ⇒ Types::CapacityReservationSpecificationResponse
Information about the Capacity Reservation targeting option.
199 200 201 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 199 def capacity_reservation_specification data[:capacity_reservation_specification] end |
#classic_address ⇒ ClassicAddress?
1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1617 def classic_address if data[:public_ip_address] ClassicAddress.new( public_ip: data[:public_ip_address], client: @client ) else nil end end |
#client ⇒ Client
475 476 477 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 475 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
775 776 777 778 779 780 781 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 775 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
905 906 907 908 909 910 911 912 913 914 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 905 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
938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 938 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.
316 317 318 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 316 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
.
497 498 499 500 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 497 def data load unless @data @data end |
#data_loaded? ⇒ Boolean
505 506 507 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 505 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
985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 985 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
1019 1020 1021 1022 1023 1024 1025 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1019 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
1042 1043 1044 1045 1046 1047 1048 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1042 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
1078 1079 1080 1081 1082 1083 1084 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1078 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.
224 225 226 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 224 def data[:enclave_options] end |
#exists?(options = {}) ⇒ Boolean
Returns true
if the Instance exists.
512 513 514 515 516 517 518 519 520 521 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 512 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.
205 206 207 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 205 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?
1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1629 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.
335 336 337 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 335 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.
401 402 403 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 401 def instance_type data[:instance_type] end |
#ipv_6_address ⇒ String
The IPv6 address assigned to the instance.
285 286 287 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 285 def ipv_6_address data[:ipv_6_address] end |
#kernel_id ⇒ String
The kernel associated with this instance, if applicable.
421 422 423 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 421 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.
382 383 384 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 382 def key_name data[:key_name] end |
#key_pair ⇒ KeyPairInfo?
1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1641 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.
409 410 411 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 409 def launch_time data[:launch_time] end |
#licenses ⇒ Array<Types::LicenseConfiguration>
The license configurations for the instance.
211 212 213 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 211 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
485 486 487 488 489 490 491 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 485 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.
304 305 306 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 304 def data[:maintenance_options] end |
#metadata_options ⇒ Types::InstanceMetadataOptionsResponse
The metadata options for the instance.
217 218 219 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 217 def data[:metadata_options] end |
#modify_attribute(options = {}) ⇒ EmptyStructure
1255 1256 1257 1258 1259 1260 1261 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1255 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
1275 1276 1277 1278 1279 1280 1281 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1275 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.
440 441 442 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 440 def monitoring data[:monitoring] end |
#network_interfaces ⇒ NetworkInterface::Collection
1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1653 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.
323 324 325 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 323 def data[:network_performance_options] end |
#operator ⇒ Types::OperatorResponse
The service provider that manages the instance.
329 330 331 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 329 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
1295 1296 1297 1298 1299 1300 1301 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1295 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.
415 416 417 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 415 def placement data[:placement] end |
#placement_group ⇒ PlacementGroup?
1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1666 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.
434 435 436 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 434 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.
256 257 258 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 256 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.
355 356 357 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 355 def private_dns_name data[:private_dns_name] end |
#private_dns_name_options ⇒ Types::PrivateDnsNameOptionsResponse
The options for the instance hostname.
279 280 281 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 279 def data[:private_dns_name_options] end |
#private_ip_address ⇒ String
The private IPv4 address assigned to the instance.
458 459 460 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 458 def private_ip_address data[:private_ip_address] end |
#product_codes ⇒ Array<Types::ProductCode>
The product codes attached to this instance, if applicable.
395 396 397 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 395 def product_codes data[:product_codes] end |
#public_dns_name ⇒ String
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. The
format of this name depends on the public hostname type.
368 369 370 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 368 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.
468 469 470 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 468 def public_ip_address data[:public_ip_address] end |
#ramdisk_id ⇒ String
The RAM disk associated with this instance, if applicable.
427 428 429 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 427 def ramdisk_id data[:ramdisk_id] end |
#reboot(options = {}) ⇒ EmptyStructure
1315 1316 1317 1318 1319 1320 1321 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1315 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
1375 1376 1377 1378 1379 1380 1381 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1375 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
1401 1402 1403 1404 1405 1406 1407 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1401 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
1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1421 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
1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1444 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
1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1467 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
1493 1494 1495 1496 1497 1498 1499 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1493 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.
341 342 343 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 341 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.
375 376 377 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 375 def state_transition_reason data[:state_transition_reason] end |
#stop(options = {}) ⇒ Types::StopInstancesResult
1553 1554 1555 1556 1557 1558 1559 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1553 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?
1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1678 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.
446 447 448 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 446 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
1586 1587 1588 1589 1590 1591 1592 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1586 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.
297 298 299 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 297 def tpm_support data[:tpm_support] end |
#unmonitor(options = {}) ⇒ Types::UnmonitorInstancesResult
1606 1607 1608 1609 1610 1611 1612 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1606 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.
267 268 269 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 267 def usage_operation data[:usage_operation] end |
#usage_operation_update_time ⇒ Time
The time that the usage operation was last updated.
273 274 275 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 273 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
1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1771 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?
1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1796 def vpc if data[:vpc_id] Vpc.new( id: data[:vpc_id], client: @client ) else nil end end |
#vpc_addresses(options = {}) ⇒ VpcAddress::Collection
1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 1867 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.
452 453 454 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 452 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
683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 683 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
529 530 531 532 533 534 535 536 537 538 539 540 541 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 529 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
549 550 551 552 553 554 555 556 557 558 559 560 561 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 549 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
569 570 571 572 573 574 575 576 577 578 579 580 581 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 569 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
589 590 591 592 593 594 595 596 597 598 599 600 601 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/instance.rb', line 589 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 |