Class: Aws::EC2::NetworkInterface

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

Defined Under Namespace

Classes: Collection

Read-Only Attributes collapse

Actions collapse

Associations collapse

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of NetworkInterface.

Overloads:

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

    Parameters:

    • id (String)

    Options Hash (options):

  • #initialize(options = {}) ⇒ NetworkInterface

    Options Hash (options):

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


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

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

Instance Method Details

#assign_private_ip_addresses(options = {}) ⇒ Types::AssignPrivateIpAddressesResult

Examples:

Request syntax with placeholder values


network_interface.assign_private_ip_addresses({
  allow_reassignment: false,
  private_ip_addresses: ["String"],
  secondary_private_ip_address_count: 1,
})

Parameters:

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

    ({})

Options Hash (options):

  • :allow_reassignment (Boolean)

    Indicates whether to allow an IP address that is already assigned to another network interface or instance to be reassigned to the specified network interface.

  • :private_ip_addresses (Array<String>)

    One or more IP addresses to be assigned as a secondary private IP address to the network interface. You can't specify this parameter when also specifying a number of secondary IP addresses.

    If you don't specify an IP address, Amazon EC2 automatically selects an IP address within the subnet range.

  • :secondary_private_ip_address_count (Integer)

    The number of secondary IP addresses to assign to the network interface. You can't specify this parameter when also specifying private IP addresses.

Returns:



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

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

#associationNetworkInterfaceAssociation?

Returns:



595
596
597
598
599
600
601
602
603
604
605
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 595

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

Examples:

Request syntax with placeholder values


network_interface.attach({
  device_index: 1, # required
  dry_run: false,
  instance_id: "InstanceId", # required
  network_card_index: 1,
})

Parameters:

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

    ({})

Options Hash (options):

  • :device_index (required, Integer)

    The index of the device for the network interface attachment.

  • :dry_run (Boolean)

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

  • :instance_id (required, String)

    The ID of the instance.

  • :network_card_index (Integer)

    The index of the network card. Some instance types support multiple network cards. The primary network interface must be assigned to network card index 0. The default is network card index 0.

Returns:



340
341
342
343
344
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 340

def attach(options = {})
  options = options.merge(network_interface_id: @id)
  resp = @client.attach_network_interface(options)
  resp.data
end

#attachmentTypes::NetworkInterfaceAttachment

The network interface attachment.



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

def attachment
  data[:attachment]
end

#availability_zoneString

The Availability Zone.

Returns:

  • (String)


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

def availability_zone
  data[:availability_zone]
end

#clientClient

Returns:



156
157
158
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 156

def client
  @client
end

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

Examples:

Request syntax with placeholder values


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

Parameters:

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

    ({})

Options Hash (options):

  • :dry_run (Boolean)

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

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

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

Returns:



368
369
370
371
372
373
374
375
376
377
378
379
380
381
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 368

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

#dataTypes::NetworkInterface

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

Returns:



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

def data
  load unless @data
  @data
end

#data_loaded?Boolean

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

Returns:

  • (Boolean)

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



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

def data_loaded?
  !!@data
end

#delete(options = {}) ⇒ EmptyStructure

Examples:

Request syntax with placeholder values


network_interface.delete({
  dry_run: false,
})

Parameters:

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

    ({})

Options Hash (options):

  • :dry_run (Boolean)

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

Returns:

  • (EmptyStructure)


438
439
440
441
442
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 438

def delete(options = {})
  options = options.merge(network_interface_id: @id)
  resp = @client.delete_network_interface(options)
  resp.data
end

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

Examples:

Request syntax with placeholder values


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

Parameters:

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

    ({})

Options Hash (options):

  • :dry_run (Boolean)

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

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

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

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

Returns:



411
412
413
414
415
416
417
418
419
420
421
422
423
424
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 411

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

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

Examples:

Request syntax with placeholder values


network_interface.describe_attribute({
  attribute: "description", # accepts description, groupSet, sourceDestCheck, attachment
  dry_run: false,
})

Parameters:

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

    ({})

Options Hash (options):

  • :attribute (String)

    The attribute of the network interface. This parameter is required.

  • :dry_run (Boolean)

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

Returns:



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

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

#descriptionString

A description.

Returns:

  • (String)


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

Examples:

Request syntax with placeholder values


network_interface.detach({
  dry_run: false,
  force: false,
})

Parameters:

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

    ({})

Options Hash (options):

  • :dry_run (Boolean)

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

  • :force (Boolean)

    Specifies whether to force a detachment.

    * Use the Force parameter only as a last resort to detach a network interface from a failed instance.

    • If you use the Force parameter to detach a network interface, you might not be able to attach a different network interface to the same index on the instance without first stopping and starting the instance.

    • If you force the detachment of a network interface, the instance metadata might not get updated. This means that the attributes associated with the detached network interface might still be visible. The instance metadata will get updated when you stop and start the instance.

Returns:

  • (EmptyStructure)


500
501
502
503
504
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 500

def detach(options = {})
  options = options.merge(attachment_id: data[:attachment][:attachment_id])
  resp = @client.detach_network_interface(options)
  resp.data
end

#groupsArray<Types::GroupIdentifier>

Any security groups for the network interface.

Returns:



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

def groups
  data[:groups]
end

#idString Also known as: network_interface_id

Returns:

  • (String)


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

def id
  @id
end

#interface_typeString

The type of network interface.

Returns:

  • (String)


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_6_addressesArray<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

#loadself 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

Returns:

  • (self)


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

def load
  resp = @client.describe_network_interfaces(network_interface_ids: [@id])
  @data = resp.network_interfaces[0]
  self
end

#mac_addressString

The MAC address.

Returns:

  • (String)


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

Examples:

Request syntax with placeholder values


network_interface.modify_attribute({
  attachment: {
    attachment_id: "NetworkInterfaceAttachmentId",
    delete_on_termination: false,
  },
  description: "value", # value <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
  dry_run: false,
  groups: ["SecurityGroupId"],
  source_dest_check: {
    value: false,
  },
})

Parameters:

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

    ({})

Options Hash (options):

  • :attachment (Types::NetworkInterfaceAttachmentChanges)

    Information about the interface attachment. If modifying the 'delete on termination' attribute, you must specify the ID of the interface attachment.

  • :description (Types::AttributeValue)

    A description for the network interface.

  • :dry_run (Boolean)

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

  • :groups (Array<String>)

    Changes the security groups for the network interface. The new set of groups you specify replaces the current set. You must specify at least one group, even if it's just the default security group in the VPC. You must specify the ID of the security group, not the name.

  • :source_dest_check (Types::AttributeBooleanValue)

    Indicates whether source/destination checking is enabled. A value of true means checking is enabled, and false means checking is disabled. This value must be false for a NAT instance to perform NAT. For more information, see NAT Instances in the Amazon Virtual Private Cloud User Guide.

Returns:

  • (EmptyStructure)


548
549
550
551
552
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 548

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

#outpost_arnString

The Amazon Resource Name (ARN) of the Outpost.

Returns:

  • (String)


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_idString

The AWS account ID of the owner of the network interface.

Returns:

  • (String)


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

def owner_id
  data[:owner_id]
end

#private_dns_nameString

The private DNS name.

Returns:

  • (String)


94
95
96
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 94

def private_dns_name
  data[:private_dns_name]
end

#private_ip_addressString

The IPv4 address of the network interface within the subnet.

Returns:

  • (String)


100
101
102
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 100

def private_ip_address
  data[:private_ip_address]
end

#private_ip_addressesArray<Types::NetworkInterfacePrivateIpAddress>

The private IPv4 addresses associated with the network interface.



106
107
108
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 106

def private_ip_addresses
  data[:private_ip_addresses]
end

#requester_idString

The ID of the entity that launched the instance on your behalf (for example, AWS Management Console or Auto Scaling).

Returns:

  • (String)


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

def requester_id
  data[:requester_id]
end

#requester_managedBoolean

Indicates whether the network interface is being managed by AWS.

Returns:

  • (Boolean)


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

def requester_managed
  data[:requester_managed]
end

#reset_attribute(options = {}) ⇒ EmptyStructure

Examples:

Request syntax with placeholder values


network_interface.reset_attribute({
  dry_run: false,
  source_dest_check: "String",
})

Parameters:

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

    ({})

Options Hash (options):

  • :dry_run (Boolean)

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

  • :source_dest_check (String)

    The source/destination checking attribute. Resets the value to true.

Returns:

  • (EmptyStructure)


569
570
571
572
573
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 569

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

#source_dest_checkBoolean

Indicates whether traffic to or from the instance is validated.

Returns:

  • (Boolean)


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

def source_dest_check
  data[:source_dest_check]
end

#statusString

The status of the network interface.

Returns:

  • (String)


131
132
133
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 131

def status
  data[:status]
end

#subnetSubnet?

Returns:



608
609
610
611
612
613
614
615
616
617
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 608

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

#subnet_idString

The ID of the subnet.

Returns:

  • (String)


137
138
139
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 137

def subnet_id
  data[:subnet_id]
end

#tag_setArray<Types::Tag>

Any tags assigned to the network interface.

Returns:



143
144
145
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 143

def tag_set
  data[:tag_set]
end

#unassign_private_ip_addresses(options = {}) ⇒ EmptyStructure

Examples:

Request syntax with placeholder values


network_interface.unassign_private_ip_addresses({
  private_ip_addresses: ["String"], # required
})

Parameters:

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

    ({})

Options Hash (options):

  • :private_ip_addresses (required, Array<String>)

    The secondary private IP addresses to unassign from the network interface. You can specify this option multiple times to unassign more than one IP address.

Returns:

  • (EmptyStructure)


586
587
588
589
590
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 586

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

#vpcVpc?

Returns:



620
621
622
623
624
625
626
627
628
629
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 620

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

#vpc_idString

The ID of the VPC.

Returns:

  • (String)


149
150
151
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 149

def vpc_id
  data[:vpc_id]
end

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

Deprecated.

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

Note:

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

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

Basic Usage

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

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

Example

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

Configuration

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

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

Callbacks

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

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

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

Handling Errors

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

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

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

Parameters:

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

    a customizable set of options

Options Hash (options):

  • :max_attempts (Integer) — default: 10

    Maximum number of

  • :delay (Integer) — default: 10

    Delay between each

  • :before_attempt (Proc) — default: nil

    Callback

  • :before_wait (Proc) — default: nil

    Callback

Yield Parameters:

  • resource (Resource)

    to be used in the waiting condition.

Returns:

  • (Resource)

    if the waiter was successful

Raises:

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

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

    yet successful.

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

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

  • (NotImplementedError)

    Raised when the resource does not



268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/network_interface.rb', line 268

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