Skip to content

Commit 101895e

Browse files
authored
Merge pull request #43183 from robsonpiere/fix/query-definition-bug
Fix: add ARN support in log_group_names for aws_cloudwatch_query_definition
2 parents c8ec68a + 70dce86 commit 101895e

File tree

3 files changed

+79
-16
lines changed

3 files changed

+79
-16
lines changed

.changelog/43183.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:bug
2+
resource/aws_cloudwatch_query_definition: Support ARNs as valid values for `log_group_names`
3+
```

internal/service/logs/query_definition.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,11 @@ func resourceQueryDefinition() *schema.Resource {
5151
Type: schema.TypeList,
5252
Optional: true,
5353
Elem: &schema.Schema{
54-
Type: schema.TypeString,
55-
ValidateFunc: validLogGroupName,
54+
Type: schema.TypeString,
55+
ValidateFunc: validation.Any(
56+
validLogGroupName,
57+
verify.ValidARN,
58+
),
5659
},
5760
},
5861
"query_definition_id": {

internal/service/logs/query_definition_test.go

Lines changed: 71 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -60,20 +60,6 @@ func TestAccLogsQueryDefinition_basic(t *testing.T) {
6060
})
6161
}
6262

63-
func testAccQueryDefinitionImportStateID(ctx context.Context, v *types.QueryDefinition) resource.ImportStateIdFunc {
64-
return func(*terraform.State) (string, error) {
65-
id := arn.ARN{
66-
AccountID: acctest.AccountID(ctx),
67-
Partition: acctest.Partition(),
68-
Region: acctest.Region(),
69-
Service: "logs",
70-
Resource: fmt.Sprintf("query-definition:%s", aws.ToString(v.QueryDefinitionId)),
71-
}
72-
73-
return id.String(), nil
74-
}
75-
}
76-
7763
func TestAccLogsQueryDefinition_disappears(t *testing.T) {
7864
ctx := acctest.Context(t)
7965
var v types.QueryDefinition
@@ -176,6 +162,52 @@ func TestAccLogsQueryDefinition_logGroups(t *testing.T) {
176162
})
177163
}
178164

165+
func TestAccLogsQueryDefinition_logGroupARNs(t *testing.T) {
166+
ctx := acctest.Context(t)
167+
var v types.QueryDefinition
168+
resourceName := "aws_cloudwatch_query_definition.test"
169+
queryName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix)
170+
171+
resource.ParallelTest(t, resource.TestCase{
172+
PreCheck: func() { acctest.PreCheck(ctx, t) },
173+
ErrorCheck: acctest.ErrorCheck(t, names.LogsServiceID),
174+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories,
175+
CheckDestroy: testAccCheckQueryDefinitionDestroy(ctx),
176+
Steps: []resource.TestStep{
177+
{
178+
Config: testAccQueryDefinitionConfig_logGroupARNs(queryName),
179+
Check: resource.ComposeTestCheckFunc(
180+
testAccCheckQueryDefinitionExists(ctx, resourceName, &v),
181+
resource.TestCheckResourceAttr(resourceName, names.AttrName, queryName),
182+
resource.TestCheckResourceAttr(resourceName, "log_group_names.#", "2"),
183+
resource.TestCheckResourceAttrPair(resourceName, "log_group_names.0", "aws_cloudwatch_log_group.test.0", names.AttrARN),
184+
resource.TestCheckResourceAttrPair(resourceName, "log_group_names.1", "aws_cloudwatch_log_group.test.1", names.AttrARN),
185+
),
186+
},
187+
{
188+
ResourceName: resourceName,
189+
ImportState: true,
190+
ImportStateVerify: true,
191+
ImportStateIdFunc: testAccQueryDefinitionImportStateID(ctx, &v),
192+
},
193+
},
194+
})
195+
}
196+
197+
func testAccQueryDefinitionImportStateID(ctx context.Context, v *types.QueryDefinition) resource.ImportStateIdFunc {
198+
return func(*terraform.State) (string, error) {
199+
id := arn.ARN{
200+
AccountID: acctest.AccountID(ctx),
201+
Partition: acctest.Partition(),
202+
Region: acctest.Region(),
203+
Service: "logs",
204+
Resource: fmt.Sprintf("query-definition:%s", aws.ToString(v.QueryDefinitionId)),
205+
}
206+
207+
return id.String(), nil
208+
}
209+
}
210+
179211
func testAccCheckQueryDefinitionExists(ctx context.Context, n string, v *types.QueryDefinition) resource.TestCheckFunc {
180212
return func(s *terraform.State) error {
181213
rs, ok := s.RootModule().Resources[n]
@@ -258,3 +290,28 @@ resource "aws_cloudwatch_log_group" "test" {
258290
}
259291
`, rName, count)
260292
}
293+
294+
func testAccQueryDefinitionConfig_logGroupARNs(rName string) string {
295+
return fmt.Sprintf(`
296+
resource "aws_cloudwatch_query_definition" "test" {
297+
name = %[1]q
298+
299+
log_group_names = [
300+
aws_cloudwatch_log_group.test[0].arn,
301+
aws_cloudwatch_log_group.test[1].arn,
302+
]
303+
304+
query_string = <<EOF
305+
fields @timestamp, @message
306+
| sort @timestamp desc
307+
| limit 20
308+
EOF
309+
}
310+
311+
resource "aws_cloudwatch_log_group" "test" {
312+
count = 2
313+
314+
name = "%[1]s-${count.index}"
315+
}
316+
`, rName)
317+
}

0 commit comments

Comments
 (0)