From e731702b9d7091b7983931a047af4df0c2f462d4 Mon Sep 17 00:00:00 2001 From: Stefan Freitag Date: Tue, 29 Apr 2025 21:22:25 +0200 Subject: [PATCH 1/3] feat: add support for default ecs log driver mode on account level --- .../service/ecs/account_setting_default.go | 7 +++ .../ecs/account_setting_default_test.go | 60 ++++++++++++++++--- 2 files changed, 59 insertions(+), 8 deletions(-) diff --git a/internal/service/ecs/account_setting_default.go b/internal/service/ecs/account_setting_default.go index 88f49c69b210..08626aea07fd 100644 --- a/internal/service/ecs/account_setting_default.go +++ b/internal/service/ecs/account_setting_default.go @@ -117,6 +117,13 @@ func resourceAccountSettingDefaultDelete(ctx context.Context, d *schema.Resource settingValue = fargateTaskRetirementWaitPeriodValue } + if settingName == awstypes.SettingNameDefaultLogDriverMode { + const ( + defaultLogDriverModeValue = "non-blocking" + ) + settingValue = defaultLogDriverModeValue + } + log.Printf("[WARN] Deleting ECS Account Setting Default: %s", settingName) input := &ecs.PutAccountSettingDefaultInput{ Name: settingName, diff --git a/internal/service/ecs/account_setting_default_test.go b/internal/service/ecs/account_setting_default_test.go index 3d600ef0714d..f18b7d4c12cd 100644 --- a/internal/service/ecs/account_setting_default_test.go +++ b/internal/service/ecs/account_setting_default_test.go @@ -25,6 +25,7 @@ func TestAccECSAccountSettingDefault_serial(t *testing.T) { testCases := map[string]func(*testing.T){ "containerInstanceLongARNFormat": testAccAccountSettingDefault_containerInstanceLongARNFormat, + "defaultLogDriverMode": testAccAccountSettingDefault_defaultLogDriverMode, "serviceLongARNFormat": testAccAccountSettingDefault_serviceLongARNFormat, "taskLongARNFormat": testAccAccountSettingDefault_taskLongARNFormat, "vpcTrunking": testAccAccountSettingDefault_vpcTrunking, @@ -47,7 +48,7 @@ func testAccAccountSettingDefault_containerInstanceLongARNFormat(t *testing.T) { CheckDestroy: testAccCheckAccountSettingDefaultDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccAccountSettingDefaultConfig_basic(settingName), + Config: testAccAccountSettingDefaultConfig_basic(settingName, names.AttrEnabled), Check: resource.ComposeTestCheckFunc( testAccCheckAccountSettingDefaultExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrName, settingName), @@ -65,6 +66,45 @@ func testAccAccountSettingDefault_containerInstanceLongARNFormat(t *testing.T) { }) } +func testAccAccountSettingDefault_defaultLogDriverMode(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_ecs_account_setting_default.test" + settingName := string(awstypes.SettingNameDefaultLogDriverMode) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.ECSServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckAccountSettingDefaultDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccAccountSettingDefaultConfig_basic(settingName, "blocking"), + Check: resource.ComposeTestCheckFunc( + testAccCheckAccountSettingDefaultExists(ctx, resourceName), + resource.TestCheckResourceAttr(resourceName, names.AttrName, settingName), + resource.TestCheckResourceAttr(resourceName, names.AttrValue, "blocking"), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, "principal_arn", "iam", regexache.MustCompile("root")), + ), + }, + { + ResourceName: resourceName, + ImportStateId: settingName, + ImportState: true, + ImportStateVerify: true, + }, + { + Config: testAccAccountSettingDefaultConfig_basic(settingName, "non-blocking"), + Check: resource.ComposeTestCheckFunc( + testAccCheckAccountSettingDefaultExists(ctx, resourceName), + resource.TestCheckResourceAttr(resourceName, names.AttrName, settingName), + resource.TestCheckResourceAttr(resourceName, names.AttrValue, "non-blocking"), + acctest.MatchResourceAttrGlobalARN(ctx, resourceName, "principal_arn", "iam", regexache.MustCompile("root")), + ), + }, + }, + }) +} + func testAccAccountSettingDefault_serviceLongARNFormat(t *testing.T) { ctx := acctest.Context(t) resourceName := "aws_ecs_account_setting_default.test" @@ -77,7 +117,7 @@ func testAccAccountSettingDefault_serviceLongARNFormat(t *testing.T) { CheckDestroy: testAccCheckAccountSettingDefaultDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccAccountSettingDefaultConfig_basic(settingName), + Config: testAccAccountSettingDefaultConfig_basic(settingName, names.AttrEnabled), Check: resource.ComposeTestCheckFunc( testAccCheckAccountSettingDefaultExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrName, settingName), @@ -107,7 +147,7 @@ func testAccAccountSettingDefault_taskLongARNFormat(t *testing.T) { CheckDestroy: testAccCheckAccountSettingDefaultDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccAccountSettingDefaultConfig_basic(settingName), + Config: testAccAccountSettingDefaultConfig_basic(settingName, names.AttrEnabled), Check: resource.ComposeTestCheckFunc( testAccCheckAccountSettingDefaultExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrName, settingName), @@ -137,7 +177,7 @@ func testAccAccountSettingDefault_vpcTrunking(t *testing.T) { CheckDestroy: testAccCheckAccountSettingDefaultDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccAccountSettingDefaultConfig_basic(settingName), + Config: testAccAccountSettingDefaultConfig_basic(settingName, names.AttrEnabled), Check: resource.ComposeTestCheckFunc( testAccCheckAccountSettingDefaultExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrName, settingName), @@ -167,7 +207,7 @@ func testAccAccountSettingDefault_containerInsights(t *testing.T) { CheckDestroy: testAccCheckAccountSettingDefaultDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccAccountSettingDefaultConfig_basic(settingName), + Config: testAccAccountSettingDefaultConfig_basic(settingName, names.AttrEnabled), Check: resource.ComposeTestCheckFunc( testAccCheckAccountSettingDefaultExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrName, settingName), @@ -258,6 +298,10 @@ func testAccCheckAccountSettingDefaultDestroy(ctx context.Context) resource.Test if value == "7" { return nil } + case awstypes.SettingNameDefaultLogDriverMode: + if value == "non-blocking" { + return nil + } default: if value == "disabled" { return nil @@ -271,13 +315,13 @@ func testAccCheckAccountSettingDefaultDestroy(ctx context.Context) resource.Test } } -func testAccAccountSettingDefaultConfig_basic(settingName string) string { +func testAccAccountSettingDefaultConfig_basic(settingName, value string) string { return fmt.Sprintf(` resource "aws_ecs_account_setting_default" "test" { name = %[1]q - value = "enabled" + value = %[2]q } -`, settingName) +`, settingName, value) } func testAccAccountSettingDefaultConfig_fargateTaskRetirementWaitPeriod(settingName string) string { From 8c9d555653656ab3db0dfb63200f9d5090f152a0 Mon Sep 17 00:00:00 2001 From: Stefan Freitag Date: Tue, 29 Apr 2025 21:25:52 +0200 Subject: [PATCH 2/3] chore: add changelog --- .changelog/42418.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/42418.txt diff --git a/.changelog/42418.txt b/.changelog/42418.txt new file mode 100644 index 000000000000..dba03cb9d16c --- /dev/null +++ b/.changelog/42418.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/aws_ecs_account_setting_default: Add support for `defaultLogDriverMode` value in `Name` argument +``` \ No newline at end of file From 1366cf98eabded24a55a89ae4085b0106d7a5d36 Mon Sep 17 00:00:00 2001 From: Stefan Freitag Date: Tue, 29 Apr 2025 22:02:35 +0200 Subject: [PATCH 3/3] docs: add example for setting defaultLogDriverMode --- .../docs/r/ecs_account_setting_default.html.markdown | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/website/docs/r/ecs_account_setting_default.html.markdown b/website/docs/r/ecs_account_setting_default.html.markdown index bcdbe8c927cb..5e77bb4f95c8 100644 --- a/website/docs/r/ecs_account_setting_default.html.markdown +++ b/website/docs/r/ecs_account_setting_default.html.markdown @@ -16,6 +16,8 @@ Provides an ECS default account setting for a specific ECS Resource name within ## Example Usage +### Enable the long task ARN format + ```terraform resource "aws_ecs_account_setting_default" "test" { name = "taskLongArnFormat" @@ -23,6 +25,15 @@ resource "aws_ecs_account_setting_default" "test" { } ``` +### Set the default log driver mode to non-blocking + +```terraform +resource "aws_ecs_account_setting_default" "test" { + name = "defaultLogDriverMode" + value = "non-blocking" +} +``` + ## Argument Reference This resource supports the following arguments: