aws_nat_gateway resource
Use the aws_nat_gateway
InSpec audit resource to test the properties of a single AWS NAT gateway.
Syntax
An aws_nat_gateway
resource block declares the tests for a single AWS NAT gateway by id, name, vpc_id or subnet_id.
describe aws_nat_gateway(id: 'nat-abc0123456789deff') do
it { should exist }
end
describe aws_nat_gateway(name: 'my-nat-gateway') do
it { should exist }
end
Multiple parameters can be provided for better granularity.
describe aws_nat_gateway(vpc_id: 'vpc-abc01234', subnet_id: 'subnet-6789deff') do
it { should exist }
end
Parameters
At least one of the following parameters must be provided.
- id
- name
- subnet_id
- vpc_id
id
The value of the nat_gateway_id
assigned by the AWS after the resource has been created.
This should be in the format of nat-
followed by 8 or 17 hexadecimal characters and passed as an id: 'value'
key-value entry in a hash.
name
If a Name
tag is applied to the NAT gateway, this can be used to lookup the resource.
This must be passed as a name: 'value'
key-value entry in a hash.
If there are multiple NAT gateways with the same name, this resource will raise an error.
subnet_id
The ID of the subnet in which the NAT gateway is placed.
This should be in the format of subnet-
followed by 8 or 17 hexadecimal characters and passed as an subnet_id: 'value'
key-value entry in a hash.
vpc_id
The ID of the VPC in which the NAT gateway is located.
This should be in the format of vpc-
followed by 8 or 17 hexadecimal characters and passed as an vpc_id: 'value'
key-value entry in a hash.
Properties
Property | Description |
---|---|
id | The ID of the NAT gateway. |
name | The value of the Name tag. It is nil if not defined. |
vpc_id | The ID of the VPC in which the NAT gateway is located. |
subnet_id | The ID of the subnet in which the NAT gateway is placed. |
tags | A hash, with each key-value pair corresponding to a NAT gateway tag. |
nat_gateway_address_set | A hash of NatGatewayAddress object that gives information about the IP addresses and network interface associated with the NAT gateway. |
state | The sate of the NAT gateway. Valid values are: pending , failed , available , deleting and deleted . |
There are also additional properties available. For a comprehensive list, see the API reference documentation
Examples
Test that the NAT gateway is in available
state
describe aws_nat_gateway(name: 'my-nat-gateway') do
its('state') { should eq 'available' }
end
Test that the ID of the VPC is vpc-1234567890abcdef1
describe aws_nat_gateway(id: 'nat-abc0123456789deff') do
its('vpc_id') { should eq `vpc-1234567890abcdef1` }
end
Test that the NAT gateway has a certain tag
describe aws_nat_gateway(name: 'my-nat-gateway') do
its('tags') { should include('environment' => 'dev') }
its('tags') { should include('delete-at-10-pm') } # Regardless of the value
end
Test that the private IP address is 10.0.1.68
describe aws_nat_gateway(vpc_id: 'vpc-abc01234', subnet_id: 'subnet-12345678') do
its('nat_gateway_address_set') { should include(:private_ip => '10.0.1.68') }
end
For more examples, please check the integration tests.
Matchers
This InSpec audit resource has the following special matcher. For a full list of available matchers, please visit our matchers page.
exist
describe aws_nat_gateway(name: 'my-nat-gateway') do
it { should exist }
end
AWS Permissions
Your Principal will need the ec2:DescribeNatGateways
action set to allow.
You can find detailed documentation at Actions, Resources, and Condition Keys for Amazon EC2, and Actions, Resources, and Condition Keys for Identity And Access Management.