Class: Aws::EC2::NetworkInterface
- Inherits:
-
Object
- Object
- Aws::EC2::NetworkInterface
- Defined in:
- gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb
Defined Under Namespace
Classes: Collection
Read-Only Attributes collapse
-
#attachment ⇒ Types::NetworkInterfaceAttachment
The network interface attachment.
-
#availability_zone ⇒ String
The Availability Zone.
-
#deny_all_igw_traffic ⇒ Boolean
Indicates whether a network interface with an IPv6 address is unreachable from the public internet.
-
#description ⇒ String
A description.
-
#groups ⇒ Array<Types::GroupIdentifier>
Any security groups for the network interface.
-
#id ⇒ String
(also: #network_interface_id)
-
#interface_type ⇒ String
The type of network interface.
-
#ipv_4_prefixes ⇒ Array<Types::Ipv4PrefixSpecification>
The IPv4 prefixes that are assigned to the network interface.
-
#ipv_6_address ⇒ String
The IPv6 globally unique address associated with the network interface.
-
#ipv_6_addresses ⇒ Array<Types::NetworkInterfaceIpv6Address>
The IPv6 addresses associated with the network interface.
-
#ipv_6_native ⇒ Boolean
Indicates whether this is an IPv6 only network interface.
-
#ipv_6_prefixes ⇒ Array<Types::Ipv6PrefixSpecification>
The IPv6 prefixes that are assigned to the network interface.
-
#mac_address ⇒ String
The MAC address.
-
#outpost_arn ⇒ String
The Amazon Resource Name (ARN) of the Outpost.
-
#owner_id ⇒ String
The Amazon Web Services account ID of the owner of the network interface.
-
#private_dns_name ⇒ String
The private DNS name.
-
#private_ip_address ⇒ String
The IPv4 address of the network interface within the subnet.
-
#private_ip_addresses ⇒ Array<Types::NetworkInterfacePrivateIpAddress>
The private IPv4 addresses associated with the network interface.
-
#requester_id ⇒ String
The alias or Amazon Web Services account ID of the principal or service that created the network interface.
-
#requester_managed ⇒ Boolean
Indicates whether the network interface is being managed by Amazon Web Services.
-
#source_dest_check ⇒ Boolean
Indicates whether source/destination checking is enabled.
-
#status ⇒ String
The status of the network interface.
-
#subnet_id ⇒ String
The ID of the subnet.
-
#tag_set ⇒ Array<Types::Tag>
Any tags assigned to the network interface.
-
#vpc_id ⇒ String
The ID of the VPC.
Actions collapse
-
#assign_private_ip_addresses(options = {}) ⇒ Types::AssignPrivateIpAddressesResult
-
#attach(options = {}) ⇒ Types::AttachNetworkInterfaceResult
-
#create_tags(options = {}) ⇒ Tag::Collection
-
#delete(options = {}) ⇒ EmptyStructure
-
#delete_tags(options = {}) ⇒ Tag::Collection
-
#describe_attribute(options = {}) ⇒ Types::DescribeNetworkInterfaceAttributeResult
-
#detach(options = {}) ⇒ EmptyStructure
-
#modify_attribute(options = {}) ⇒ EmptyStructure
-
#reset_attribute(options = {}) ⇒ EmptyStructure
-
#unassign_private_ip_addresses(options = {}) ⇒ EmptyStructure
Associations collapse
Instance Method Summary collapse
-
#client ⇒ Client
-
#data ⇒ Types::NetworkInterface
Returns the data for this NetworkInterface.
-
#data_loaded? ⇒ Boolean
Returns
true
if this resource is loaded. -
#initialize(*args) ⇒ NetworkInterface
constructor
A new instance of NetworkInterface.
-
#load ⇒ self
(also: #reload)
Loads, or reloads #data for the current NetworkInterface.
-
#wait_until(options = {}) {|resource| ... } ⇒ Resource
deprecated
Deprecated.
Use [Aws::EC2::Client] #wait_until instead
Constructor Details
#initialize(id, options = {}) ⇒ NetworkInterface #initialize(options = {}) ⇒ NetworkInterface
Returns a new instance of NetworkInterface.
22 23 24 25 26 27 28 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.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
#assign_private_ip_addresses(options = {}) ⇒ Types::AssignPrivateIpAddressesResult
358 359 360 361 362 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 358 def assign_private_ip_addresses( = {}) = .merge(network_interface_id: @id) resp = @client.assign_private_ip_addresses() resp.data end |
#association ⇒ NetworkInterfaceAssociation?
644 645 646 647 648 649 650 651 652 653 654 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 644 def association if data[:association][:association_id] NetworkInterfaceAssociation.new( id: data[:association][:association_id], data: data[:association], client: @client ) else nil end end |
#attach(options = {}) ⇒ Types::AttachNetworkInterfaceResult
387 388 389 390 391 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 387 def attach( = {}) = .merge(network_interface_id: @id) resp = @client.attach_network_interface() resp.data end |
#attachment ⇒ Types::NetworkInterfaceAttachment
The network interface attachment.
40 41 42 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 40 def data[:attachment] end |
#availability_zone ⇒ String
The Availability Zone.
46 47 48 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 46 def availability_zone data[:availability_zone] end |
#client ⇒ Client
194 195 196 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 194 def client @client end |
#create_tags(options = {}) ⇒ Tag::Collection
415 416 417 418 419 420 421 422 423 424 425 426 427 428 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 415 def ( = {}) batch = [] = Aws::Util.deep_merge(, resources: [@id]) resp = @client.() [: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 |
#data ⇒ Types::NetworkInterface
Returns the data for this Aws::EC2::NetworkInterface. Calls
Client#describe_network_interfaces if #data_loaded? is false
.
214 215 216 217 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 214 def data load unless @data @data end |
#data_loaded? ⇒ Boolean
222 223 224 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 222 def data_loaded? !!@data end |
#delete(options = {}) ⇒ EmptyStructure
487 488 489 490 491 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 487 def delete( = {}) = .merge(network_interface_id: @id) resp = @client.delete_network_interface() resp.data end |
#delete_tags(options = {}) ⇒ Tag::Collection
460 461 462 463 464 465 466 467 468 469 470 471 472 473 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 460 def ( = {}) batch = [] = Aws::Util.deep_merge(, resources: [@id]) resp = @client.() [: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 |
#deny_all_igw_traffic ⇒ Boolean
Indicates whether a network interface with an IPv6 address is
unreachable from the public internet. If the value is true
, inbound
traffic from the internet is dropped and you cannot assign an elastic
IP address to the network interface. The network interface is
reachable from peered VPCs and resources connected through a transit
gateway, including on-premises networks.
174 175 176 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 174 def deny_all_igw_traffic data[:deny_all_igw_traffic] end |
#describe_attribute(options = {}) ⇒ Types::DescribeNetworkInterfaceAttributeResult
508 509 510 511 512 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 508 def describe_attribute( = {}) = .merge(network_interface_id: @id) resp = @client.describe_network_interface_attribute() resp.data end |
#description ⇒ String
A description.
52 53 54 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 52 def description data[:description] end |
#detach(options = {}) ⇒ EmptyStructure
549 550 551 552 553 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 549 def detach( = {}) = .merge(attachment_id: data[:attachment][:attachment_id]) resp = @client.detach_network_interface() resp.data end |
#groups ⇒ Array<Types::GroupIdentifier>
Any security groups for the network interface.
58 59 60 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 58 def groups data[:groups] end |
#id ⇒ String Also known as: network_interface_id
33 34 35 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 33 def id @id end |
#interface_type ⇒ String
The type of network interface.
64 65 66 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 64 def interface_type data[:interface_type] end |
#ipv_4_prefixes ⇒ Array<Types::Ipv4PrefixSpecification>
The IPv4 prefixes that are assigned to the network interface.
113 114 115 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 113 def ipv_4_prefixes data[:ipv_4_prefixes] end |
#ipv_6_address ⇒ String
The IPv6 globally unique address associated with the network interface.
187 188 189 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 187 def ipv_6_address data[:ipv_6_address] end |
#ipv_6_addresses ⇒ Array<Types::NetworkInterfaceIpv6Address>
The IPv6 addresses associated with the network interface.
70 71 72 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 70 def ipv_6_addresses data[:ipv_6_addresses] end |
#ipv_6_native ⇒ Boolean
Indicates whether this is an IPv6 only network interface.
180 181 182 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 180 def ipv_6_native data[:ipv_6_native] end |
#ipv_6_prefixes ⇒ Array<Types::Ipv6PrefixSpecification>
The IPv6 prefixes that are assigned to the network interface.
119 120 121 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 119 def ipv_6_prefixes data[:ipv_6_prefixes] end |
#load ⇒ self Also known as: reload
Loads, or reloads #data for the current Aws::EC2::NetworkInterface.
Returns self
making it possible to chain methods.
network_interface.reload.data
204 205 206 207 208 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 204 def load resp = @client.describe_network_interfaces(network_interface_ids: [@id]) @data = resp.network_interfaces[0] self end |
#mac_address ⇒ String
The MAC address.
76 77 78 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 76 def mac_address data[:mac_address] end |
#modify_attribute(options = {}) ⇒ EmptyStructure
594 595 596 597 598 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 594 def modify_attribute( = {}) = .merge(network_interface_id: @id) resp = @client.modify_network_interface_attribute() resp.data end |
#outpost_arn ⇒ String
The Amazon Resource Name (ARN) of the Outpost.
82 83 84 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 82 def outpost_arn data[:outpost_arn] end |
#owner_id ⇒ String
The Amazon Web Services account ID of the owner of the network interface.
89 90 91 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 89 def owner_id data[:owner_id] end |
#private_dns_name ⇒ String
The private DNS name.
95 96 97 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 95 def private_dns_name data[:private_dns_name] end |
#private_ip_address ⇒ String
The IPv4 address of the network interface within the subnet.
101 102 103 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 101 def private_ip_address data[:private_ip_address] end |
#private_ip_addresses ⇒ Array<Types::NetworkInterfacePrivateIpAddress>
The private IPv4 addresses associated with the network interface.
107 108 109 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 107 def private_ip_addresses data[:private_ip_addresses] end |
#requester_id ⇒ String
The alias or Amazon Web Services account ID of the principal or service that created the network interface.
126 127 128 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 126 def requester_id data[:requester_id] end |
#requester_managed ⇒ Boolean
Indicates whether the network interface is being managed by Amazon Web Services.
133 134 135 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 133 def requester_managed data[:requester_managed] end |
#reset_attribute(options = {}) ⇒ EmptyStructure
615 616 617 618 619 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 615 def reset_attribute( = {}) = .merge(network_interface_id: @id) resp = @client.reset_network_interface_attribute() resp.data end |
#source_dest_check ⇒ Boolean
Indicates whether source/destination checking is enabled.
139 140 141 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 139 def source_dest_check data[:source_dest_check] end |
#status ⇒ String
The status of the network interface.
145 146 147 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 145 def status data[:status] end |
#subnet ⇒ Subnet?
657 658 659 660 661 662 663 664 665 666 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 657 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.
151 152 153 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 151 def subnet_id data[:subnet_id] end |
#tag_set ⇒ Array<Types::Tag>
Any tags assigned to the network interface.
157 158 159 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 157 def tag_set data[:tag_set] end |
#unassign_private_ip_addresses(options = {}) ⇒ EmptyStructure
635 636 637 638 639 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 635 def unassign_private_ip_addresses( = {}) = .merge(network_interface_id: @id) resp = @client.unassign_private_ip_addresses() resp.data end |
#vpc ⇒ Vpc?
669 670 671 672 673 674 675 676 677 678 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 669 def vpc if data[:vpc_id] Vpc.new( id: data[:vpc_id], client: @client ) else nil end end |
#vpc_id ⇒ String
The ID of the VPC.
163 164 165 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 163 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
306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 |
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 306 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::Waiters::Waiter.new().wait({}) end |