Skip to content

Commit 125bf19

Browse files
authored
resource_missing_tags: handle explicit refs to default provider
1 parent 23fbd93 commit 125bf19

File tree

2 files changed

+28
-7
lines changed

2 files changed

+28
-7
lines changed

rules/aws_resource_missing_tags.go

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,10 @@ func (r *AwsResourceMissingTagsRule) getProviderLevelTags(runner tflint.Runner)
8181

8282
// Get provider default tags
8383
allProviderTags := make(map[string][]string)
84-
var providerAlias string
8584
for _, provider := range providerBody.Blocks.OfType(providerAttributeName) {
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 {
85+
// Get the alias attribute. Empty string represents the default provider.
86+
var providerAlias string
87+
if providerAttr, ok := provider.Body.Attributes["alias"]; ok {
9188
err := runner.EvaluateExpr(providerAttr.Expr, func(alias string) error {
9289
logger.Debug("Walk `%s` provider", providerAlias)
9390
providerAlias = alias
@@ -164,7 +161,7 @@ func (r *AwsResourceMissingTagsRule) Check(runner tflint.Runner) error {
164161
}
165162

166163
for _, resource := range resources.Blocks {
167-
providerAlias := "default"
164+
var providerAlias string
168165
// Override the provider alias if defined
169166
if val, ok := resource.Body.Attributes[providerAttributeName]; ok {
170167
provider, diagnostics := aws.DecodeProviderConfigRef(val.Expr, "provider")

rules/aws_resource_missing_tags_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -525,6 +525,30 @@ rule "aws_resource_missing_tags" {
525525
},
526526
},
527527
},
528+
{
529+
Name: "Provider reference without alias (issue #1002)",
530+
Content: `
531+
provider "aws" {
532+
region = "eu-west-1"
533+
default_tags {
534+
tags = {
535+
"layer": "app"
536+
"type": "service"
537+
}
538+
}
539+
}
540+
541+
resource "aws_iam_user" "bedrock" {
542+
provider = aws
543+
name = "test"
544+
}`,
545+
Config: `
546+
rule "aws_resource_missing_tags" {
547+
enabled = true
548+
tags = ["layer", "type"]
549+
}`,
550+
Expected: helper.Issues{},
551+
},
528552
}
529553

530554
rule := NewAwsResourceMissingTagsRule()

0 commit comments

Comments
 (0)