Class: Aws::EC2::NatGateway

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

Defined Under Namespace

Classes: Collection

Read-Only Attributes collapse

Actions collapse

Associations collapse

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of NatGateway.

Overloads:

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

    Parameters:

    • id (String)

    Options Hash (options):

  • #initialize(options = {}) ⇒ NatGateway

    Options Hash (options):

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


22
23
24
25
26
27
28
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/nat_gateway.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

#addressVpcAddress?

Returns:



470
471
472
473
474
475
476
477
478
479
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/nat_gateway.rb', line 470

def address
  if data[:allocation_id]
    VpcAddress.new(
      allocation_id: data[:allocation_id],
      client: @client
    )
  else
    nil
  end
end

#attached_appliancesArray<Types::NatGatewayAttachedAppliance>

The proxy appliances attached to the NAT Gateway for filtering and inspecting traffic to prevent data exfiltration.



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

def attached_appliances
  data[:attached_appliances]
end

#auto_provision_zonesString

For regional NAT gateways only: Indicates whether Amazon Web Services automatically manages AZ coverage. When enabled, the NAT gateway associates EIPs in all AZs where your VPC has subnets to handle outbound NAT traffic, expands to new AZs when you create subnets there, and retracts from AZs where you've removed all subnets. When disabled, you must manually manage which AZs the NAT gateway supports and their corresponding EIPs.

A regional NAT gateway is a single NAT Gateway that works across multiple availability zones (AZs) in your VPC, providing redundancy, scalability and availability across all the AZs in a Region.

For more information, see Regional NAT gateways for automatic multi-AZ expansion in the Amazon VPC User Guide.

Returns:

  • (String)


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

def auto_provision_zones
  data[:auto_provision_zones]
end

#auto_scaling_ipsString

For regional NAT gateways only: Indicates whether Amazon Web Services automatically allocates additional Elastic IP addresses (EIPs) in an AZ when the NAT gateway needs more ports due to increased concurrent connections to a single destination from that AZ.

For more information, see Regional NAT gateways for automatic multi-AZ expansion in the Amazon VPC User Guide.

Returns:

  • (String)


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

def auto_scaling_ips
  data[:auto_scaling_ips]
end

#availability_modeString

Indicates whether this is a zonal (single-AZ) or regional (multi-AZ) NAT gateway.

A zonal NAT gateway is a NAT Gateway that provides redundancy and scalability within a single availability zone. A regional NAT gateway is a single NAT Gateway that works across multiple availability zones (AZs) in your VPC, providing redundancy, scalability and availability across all the AZs in a Region.

For more information, see Regional NAT gateways for automatic multi-AZ expansion in the Amazon VPC User Guide.

Returns:

  • (String)


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

def availability_mode
  data[:availability_mode]
end

#clientClient

Returns:



226
227
228
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/nat_gateway.rb', line 226

def client
  @client
end

#connectivity_typeString

Indicates whether the NAT gateway supports public or private connectivity.

Returns:

  • (String)


147
148
149
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/nat_gateway.rb', line 147

def connectivity_type
  data[:connectivity_type]
end

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

Examples:

Request syntax with placeholder values


tag = nat_gateway.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:



383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/nat_gateway.rb', line 383

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

#create_timeTime

The date and time the NAT gateway was created.

Returns:

  • (Time)


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

def create_time
  data[:create_time]
end

#dataTypes::NatGateway

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

Returns:



248
249
250
251
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/nat_gateway.rb', line 248

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.



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

def data_loaded?
  !!@data
end

#delete(options = {}) ⇒ Types::DeleteNatGatewayResult

Examples:

Request syntax with placeholder values


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



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

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

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

Examples:

Request syntax with placeholder values


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

Parameters:

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

    ({})

Options Hash (options):

  • :dry_run (Boolean)

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

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

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

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

    Constraints: Up to 1000 tags.

Returns:



430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/nat_gateway.rb', line 430

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

#delete_timeTime

The date and time the NAT gateway was deleted, if applicable.

Returns:

  • (Time)


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

def delete_time
  data[:delete_time]
end

#failure_codeString

If the NAT gateway could not be created, specifies the error code for the failure. (InsufficientFreeAddressesInSubnet | Gateway.NotAttached | InvalidAllocationID.NotFound | Resource.AlreadyAssociated | InternalError | InvalidSubnetID.NotFound)

Returns:

  • (String)


56
57
58
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/nat_gateway.rb', line 56

def failure_code
  data[:failure_code]
end

#failure_messageString

If the NAT gateway could not be created, specifies the error message for the failure, that corresponds to the error code.

  • For InsufficientFreeAddressesInSubnet: "Subnet has insufficient free addresses to create this NAT gateway"

  • For Gateway.NotAttached: "Network vpc-xxxxxxxx has no Internet gateway attached"

  • For InvalidAllocationID.NotFound: "Elastic IP address eipalloc-xxxxxxxx could not be associated with this NAT gateway"

  • For Resource.AlreadyAssociated: "Elastic IP address eipalloc-xxxxxxxx is already associated"

  • For InternalError: "Network interface eni-xxxxxxxx, created and used internally by this NAT gateway is in an invalid state. Please try again."

  • For InvalidSubnetID.NotFound: "The specified subnet subnet-xxxxxxxx does not exist or could not be found."

Returns:

  • (String)


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

def failure_message
  data[:failure_message]
end

#idString Also known as: nat_gateway_id

Returns:

  • (String)


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

def id
  @id
end

#loadself Also known as: reload

Loads, or reloads #data for the current Aws::EC2::NatGateway. Returns self making it possible to chain methods.

nat_gateway.reload.data

Returns:

  • (self)


236
237
238
239
240
241
242
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/nat_gateway.rb', line 236

def load
  resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
    @client.describe_nat_gateways(nat_gateway_ids: [@id])
  end
  @data = resp.nat_gateways[0]
  self
end

#nat_gateway_addressesArray<Types::NatGatewayAddress>

Information about the IP addresses and network interface associated with the NAT gateway.

Returns:



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

def nat_gateway_addresses
  data[:nat_gateway_addresses]
end

#provisioned_bandwidthTypes::ProvisionedBandwidth

Reserved. If you need to sustain traffic greater than the documented limits, contact Amazon Web Services Support.



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

def provisioned_bandwidth
  data[:provisioned_bandwidth]
end

#route_table_idString

For regional NAT gateways only, this is the ID of the NAT gateway.

Returns:

  • (String)


219
220
221
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/nat_gateway.rb', line 219

def route_table_id
  data[:route_table_id]
end

#stateString

The state of the NAT gateway.

  • pending: The NAT gateway is being created and is not ready to process traffic.

  • failed: The NAT gateway could not be created. Check the failureCode and failureMessage fields for the reason.

  • available: The NAT gateway is able to process traffic. This status remains until you delete the NAT gateway, and does not indicate the health of the NAT gateway.

  • deleting: The NAT gateway is in the process of being terminated and may still be processing traffic.

  • deleted: The NAT gateway has been terminated and is no longer processing traffic.

Returns:

  • (String)


122
123
124
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/nat_gateway.rb', line 122

def state
  data[:state]
end

#subnetSubnet?

Returns:



482
483
484
485
486
487
488
489
490
491
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/nat_gateway.rb', line 482

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

#subnet_idString

The ID of the subnet in which the NAT gateway is located.

Returns:

  • (String)


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

def subnet_id
  data[:subnet_id]
end

#tagsArray<Types::Tag>

The tags for the NAT gateway.

Returns:



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

def tags
  data[:tags]
end

#vpc_idString

The ID of the VPC in which the NAT gateway is located.

Returns:

  • (String)


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

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



340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
# File 'gems/aws-sdk-ec2/lib/aws-sdk-ec2/nat_gateway.rb', line 340

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