@@ -83,8 +83,24 @@ func (r *AwsResourceMissingTagsRule) getProviderLevelTags(runner tflint.Runner)
83
83
allProviderTags := make (map [string ]map [string ]string )
84
84
var providerAlias string
85
85
for _ , provider := range providerBody .Blocks .OfType (providerAttributeName ) {
86
- providerTags := make (map [string ]string )
86
+ // Get the alias attribute, in terraform when there is a single aws provider its called "default"
87
+ providerAttr , ok := provider .Body .Attributes ["alias" ]
88
+ if ! ok {
89
+ providerAlias = "default"
90
+ } else {
91
+ err := runner .EvaluateExpr (providerAttr .Expr , func (alias string ) error {
92
+ providerAlias = alias
93
+ // Init the provider reference even if it doesn't have tags
94
+ allProviderTags [alias ] = nil
95
+ return nil
96
+ }, nil )
97
+ if err != nil {
98
+ return nil , err
99
+ }
100
+ }
101
+
87
102
for _ , block := range provider .Body .Blocks {
103
+ providerTags := make (map [string ]string )
88
104
attr , ok := block .Body .Attributes [tagsAttributeName ]
89
105
if ! ok {
90
106
continue
@@ -99,22 +115,7 @@ func (r *AwsResourceMissingTagsRule) getProviderLevelTags(runner tflint.Runner)
99
115
return nil , err
100
116
}
101
117
102
- // Get the alias attribute, in terraform when there is a single aws provider its called "default"
103
- providerAttr , ok := provider .Body .Attributes ["alias" ]
104
- if ! ok {
105
- providerAlias = "default"
106
- allProviderTags [providerAlias ] = providerTags
107
- } else {
108
- err := runner .EvaluateExpr (providerAttr .Expr , func (alias string ) error {
109
- providerAlias = alias
110
- return nil
111
- }, nil )
112
- // Assign default provider
113
- allProviderTags [providerAlias ] = providerTags
114
- if err != nil {
115
- return nil , err
116
- }
117
- }
118
+ allProviderTags [providerAlias ] = providerTags
118
119
}
119
120
}
120
121
return allProviderTags , nil
0 commit comments