Class: Formatron::CloudFormation::Template::VPC::Subnet::ACL

Inherits:
Object
  • Object
show all
Defined in:
lib/formatron/cloud_formation/template/vpc/subnet/acl.rb

Overview

generates CloudFormation ACL resources rubocop:disable Metrics/ClassLength

Constant Summary collapse

NETWORK_ACL_PREFIX =
'networkAcl'
SUBNET_NETWORK_ACL_ASSOCIATION_PREFIX =
'subnetNetworkAclAssociation'
VPC_INBOUND_NETWORK_ACL_ENTRY_PREFIX =
'vpcInboundNetworkAclEntry'
EXTERNAL_INBOUND_TCP_NETWORK_ACL_ENTRY_PREFIX =
'externalInboundTcpNetworkAclEntry'
EXTERNAL_INBOUND_UDP_NETWORK_ACL_ENTRY_PREFIX =
'externalInboundUdpNetworkAclEntry'
OUTBOUND_NETWORK_ACL_ENTRY_PREFIX =
'outboundNetworkAclEntry'
EXTERNAL_INBOUND_NETWORK_ACL_ENTRY_PREFIX =
'externalInboundNetworkAclEntry'
EPHEMERAL_PORT_START =
1024
EPHEMERAL_PORT_END =
65_535

Instance Method Summary collapse

Constructor Details

#initialize(acl:, subnet_guid:, vpc_guid:, vpc_cidr:) ⇒ ACL

rubocop:disable Metrics/MethodLength



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/formatron/cloud_formation/template/vpc/subnet/acl.rb', line 29

def initialize(acl:, subnet_guid:, vpc_guid:, vpc_cidr:)
  @acl = acl
  @subnet_guid = subnet_guid
  @vpc_guid = vpc_guid
  @vpc_cidr = vpc_cidr
  @network_acl_id = "#{NETWORK_ACL_PREFIX}#{@subnet_guid}"
  @subnet_network_acl_association_id =
    "#{SUBNET_NETWORK_ACL_ASSOCIATION_PREFIX}#{@subnet_guid}"
  @vpc_id = "#{VPC::VPC_PREFIX}#{@vpc_guid}"
  @subnet_id = "#{Subnet::SUBNET_PREFIX}#{@subnet_guid}"
  @network_acl_entry_vpc_inbound_id =
    "#{VPC_INBOUND_NETWORK_ACL_ENTRY_PREFIX}#{@subnet_guid}"
  @network_acl_entry_external_inbound_tcp_id =
    "#{EXTERNAL_INBOUND_TCP_NETWORK_ACL_ENTRY_PREFIX}" \
    "#{@subnet_guid}"
  @network_acl_entry_external_inbound_udp_id =
    "#{EXTERNAL_INBOUND_UDP_NETWORK_ACL_ENTRY_PREFIX}" \
    "#{@subnet_guid}"
  @network_acl_entry_outbound_id =
    "#{OUTBOUND_NETWORK_ACL_ENTRY_PREFIX}#{@subnet_guid}"
  @source_cidrs = @acl.source_cidr
end

Instance Method Details

#merge(resources:) ⇒ Object

rubocop:disable Metrics/MethodLength



54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/formatron/cloud_formation/template/vpc/subnet/acl.rb', line 54

def merge(resources:)
  return if @source_cidrs.length == 0
  resources[@network_acl_id] = Resources::EC2.network_acl(
    vpc: @vpc_id
  )
  resources[@subnet_network_acl_association_id] =
    Resources::EC2.subnet_network_acl_association(
      subnet: @subnet_id,
      network_acl: @network_acl_id
    )
  _add_default_rules resources
  _add_source_cidrs resources
end