Skip to content

Commit 3d185cd

Browse files
authored
Merge pull request #19 from theonestack/feature/inline-support
adds support for using Fn::Join etc in SG rules
2 parents 74b7cc7 + 321f80b commit 3d185cd

File tree

3 files changed

+38
-4
lines changed

3 files changed

+38
-4
lines changed

aurora-postgres.cfndsl.rb

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,17 @@
9494
ToPort: cluster_port,
9595
}
9696
if rule['security_group_id']
97-
sg_rule['SourceSecurityGroupId'] = FnSub(rule['security_group_id'])
97+
if rule['security_group_id'].is_a?(Hash)
98+
sg_rule['SourceSecurityGroupId'] = rule['security_group_id']
99+
else
100+
sg_rule['SourceSecurityGroupId'] = FnSub(rule['security_group_id'])
101+
end
98102
else
99-
sg_rule['CidrIp'] = FnSub(rule['ip'])
103+
if rule['ip'].is_a?(Hash)
104+
sg_rule['CidrIp'] = rule['ip']
105+
else
106+
sg_rule['CidrIp'] = FnSub(rule['ip'])
107+
end
100108
end
101109
if rule['desc']
102110
sg_rule['Description'] = FnSub(rule['desc'])

spec/security_group_spec.rb

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,14 @@
2929
end
3030

3131
it "to have property SecurityGroupIngress" do
32-
expect(resource["Properties"]["SecurityGroupIngress"]).to eq([{"FromPort"=>5432, "IpProtocol"=>"TCP", "ToPort"=>5432, "SourceSecurityGroupId"=>{"Fn::Sub"=>"sg-328h4242u3h"}, "Description"=>{"Fn::Sub"=>"access from my app"}}, {"FromPort"=>5432, "IpProtocol"=>"TCP", "ToPort"=>5432, "CidrIp"=>{"Fn::Sub"=>"10.0.0.0/16"}, "Description"=>{"Fn::Sub"=>"access from peered vpc"}}])
32+
expect(resource["Properties"]["SecurityGroupIngress"]).to eq([
33+
{"FromPort"=>5432, "IpProtocol"=>"TCP", "ToPort"=>5432, "SourceSecurityGroupId"=>{"Fn::Sub"=>"sg-328h4242u3h"}, "Description"=>{"Fn::Sub"=>"access from my app"}},
34+
{"FromPort"=>5432, "IpProtocol"=>"TCP", "ToPort"=>5432, "CidrIp"=>{"Fn::Sub"=>"10.0.0.0/16"}, "Description"=>{"Fn::Sub"=>"access from peered vpc"}},
35+
{"FromPort"=>5432, "IpProtocol"=>"TCP", "ToPort"=>5432, "CidrIp"=>{"Fn::Sub"=>"${VPCCidr}"}, "Description"=>{"Fn::Sub"=>"access from peered vpc 1"}},
36+
{"FromPort"=>5432, "IpProtocol"=>"TCP", "ToPort"=>5432, "CidrIp"=>{"Fn::Join"=>["", [{"Ref"=>"VPCCidr"}]]}, "Description"=>{"Fn::Sub"=>"access from peered vpc 2"}},
37+
{"FromPort"=>5432, "IpProtocol"=>"TCP", "ToPort"=>5432, "SourceSecurityGroupId"=>{"Fn::Join"=>["", [{"Ref"=>"SGId"}]]}, "Description"=>{"Fn::Sub"=>"access from a external sg"}},
38+
39+
])
3340
end
3441

3542
it "to have property SecurityGroupEgress" do

tests/security_group.test.yaml

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ test_metadata:
33
name: security_group
44
description: set the description for your test
55

6+
test_parameters:
7+
VPCCidr: 10.1.0.0/16
8+
SGId: sg-328h4242u3h
9+
610
family: aurora-postgresql9.6
711
engine_version: 9.6
812
storage_encrypted: true
@@ -13,4 +17,19 @@ security_group_rules:
1317
desc: access from my app
1418
-
1519
ip: 10.0.0.0/16
16-
desc: access from peered vpc
20+
desc: access from peered vpc
21+
-
22+
ip: ${VPCCidr}
23+
desc: access from peered vpc 1
24+
-
25+
ip:
26+
Fn::Join:
27+
- ''
28+
- - Ref: VPCCidr
29+
desc: access from peered vpc 2
30+
-
31+
security_group_id:
32+
Fn::Join:
33+
- ''
34+
- - Ref: SGId
35+
desc: access from a external sg

0 commit comments

Comments
 (0)