@@ -31,13 +31,30 @@ def __init__(self, account_config):
31
31
32
32
# some ARN generation requires custom logic (e.g. an ELB can have 2 different ARNs depending on the ELB type)
33
33
self .custom_generators = {
34
- 'AWS::ElasticLoadBalancingV2::LoadBalancer' : generate_elbv2_load_balancer_arn ,
35
- 'AWS::ElasticLoadBalancingV2::Listener' : generate_elbv2_listener_arn ,
36
- 'AWS::ElasticLoadBalancingV2::TargetGroup' : generate_elbv2_target_group_arn ,
37
- 'AWS::IAM::Role' : generate_role_arn ,
38
- 'AWS::IAM::User' : generate_user_arn ,
39
- 'AWS::IAM::ManagedPolicy' : generate_managed_policy_arn ,
40
- 'AWS::NetworkFirewall::RuleGroup' : generate_network_firewall_rule_group
34
+ 'AWS::ElasticLoadBalancingV2::LoadBalancer' : {
35
+ 'Ref' : generate_elbv2_load_balancer_arn ,
36
+ 'LoadBalancerArn' : generate_elbv2_load_balancer_arn
37
+ },
38
+ 'AWS::ElasticLoadBalancingV2::Listener' : {
39
+ 'Ref' : generate_elbv2_listener_arn
40
+ },
41
+ 'AWS::ElasticLoadBalancingV2::TargetGroup' : {
42
+ 'LoadBalancerArns' : generate_elbv2_target_group_load_balancer_arn
43
+ },
44
+ 'AWS::IAM::Role' : {
45
+ 'Arn' : generate_role_arn
46
+ },
47
+ 'AWS::IAM::User' : {
48
+ 'Arn' : generate_user_arn
49
+ },
50
+ 'AWS::IAM::ManagedPolicy' : {
51
+ 'Ref' : generate_managed_policy_arn ,
52
+ 'PolicyArn' : generate_managed_policy_arn
53
+ },
54
+ 'AWS::NetworkFirewall::RuleGroup' : {
55
+ 'Ref' : generate_network_firewall_rule_group ,
56
+ 'RuleGroupArn' : generate_network_firewall_rule_group
57
+ }
41
58
}
42
59
43
60
def try_generate_arn (self , resource_name , resource , attribute_or_ref , visited_values = None ):
@@ -74,7 +91,7 @@ def try_generate_arn(self, resource_name, resource, attribute_or_ref, visited_va
74
91
# certain CFN types require some additional generation that is specific to the resource type
75
92
# for example, we include the exact path with any roles or users, ALBs and NLBs share the same cfn resource,
76
93
# but have different ARNs
77
- custom_generator = self .custom_generators .get (cfn_type )
94
+ custom_generator = self .custom_generators .get (cfn_type , {}). get ( attribute_or_ref )
78
95
if custom_generator is not None :
79
96
arn_pattern = custom_generator (arn_pattern , resource_name , resource , visited_values )
80
97
@@ -168,7 +185,7 @@ def generate_elbv2_listener_arn(arn_pattern, _, resource, visited_values):
168
185
169
186
170
187
# AWS::ElasticLoadBalancingV2::TargetGroup
171
- def generate_elbv2_target_group_arn (arn_pattern , _ , resource , visited_values ):
188
+ def generate_elbv2_target_group_load_balancer_arn (arn_pattern , _ , resource , visited_values ):
172
189
evaluated_resource = resource .eval (elbv2_target_group_schema , visited_values )
173
190
174
191
properties = evaluated_resource .get ('Properties' , {})
0 commit comments