diff --git a/.changelog/37018.txt b/.changelog/37018.txt new file mode 100644 index 000000000000..2f34b11a9efd --- /dev/null +++ b/.changelog/37018.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/aws_ecs_account_setting_default: Add support for `fargateTaskRetirementWaitPeriod` value in `Name` argument +``` \ No newline at end of file diff --git a/internal/service/ecs/account_setting_default.go b/internal/service/ecs/account_setting_default.go index a62fca13d663..9f324d029bdc 100644 --- a/internal/service/ecs/account_setting_default.go +++ b/internal/service/ecs/account_setting_default.go @@ -147,11 +147,17 @@ func resourceAccountSettingDefaultDelete(ctx context.Context, d *schema.Resource conn := meta.(*conns.AWSClient).ECSConn(ctx) settingName := d.Get(names.AttrName).(string) + settingValue := "disabled" + + //Default value: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-maintenance.html#task-retirement-change + if settingName == ecs.SettingNameFargateTaskRetirementWaitPeriod { + settingValue = fargateTaskRetirementWaitPeriodValue + } log.Printf("[WARN] Disabling ECS Account Setting Default %s", settingName) input := ecs.PutAccountSettingDefaultInput{ Name: aws.String(settingName), - Value: aws.String("disabled"), + Value: aws.String(settingValue), } _, err := conn.PutAccountSettingDefaultWithContext(ctx, &input) diff --git a/internal/service/ecs/account_setting_default_test.go b/internal/service/ecs/account_setting_default_test.go index 8b651450c859..f664a3e58cf2 100644 --- a/internal/service/ecs/account_setting_default_test.go +++ b/internal/service/ecs/account_setting_default_test.go @@ -23,11 +23,12 @@ func TestAccECSAccountSettingDefault_serial(t *testing.T) { t.Parallel() testCases := map[string]func(*testing.T){ - "containerInstanceLongARNFormat": testAccAccountSettingDefault_containerInstanceLongARNFormat, - "serviceLongARNFormat": testAccAccountSettingDefault_serviceLongARNFormat, - "taskLongARNFormat": testAccAccountSettingDefault_taskLongARNFormat, - "vpcTrunking": testAccAccountSettingDefault_vpcTrunking, - "containerInsights": testAccAccountSettingDefault_containerInsights, + "containerInstanceLongARNFormat": testAccAccountSettingDefault_containerInstanceLongARNFormat, + "serviceLongARNFormat": testAccAccountSettingDefault_serviceLongARNFormat, + "taskLongARNFormat": testAccAccountSettingDefault_taskLongARNFormat, + "vpcTrunking": testAccAccountSettingDefault_vpcTrunking, + "containerInsights": testAccAccountSettingDefault_containerInsights, + "fargateTaskRetirementWaitPeriod": testAccAccountSettingDefault_fargateTaskRetirementWaitPeriod, } acctest.RunSerialTests1Level(t, testCases, 0) @@ -178,6 +179,35 @@ func testAccAccountSettingDefault_containerInsights(t *testing.T) { }) } +func testAccAccountSettingDefault_fargateTaskRetirementWaitPeriod(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_ecs_account_setting_default.test" + settingName := ecs.SettingNameFargateTaskRetirementWaitPeriod + + 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_fargateTaskRetirementWaitPeriod(settingName), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr(resourceName, names.AttrName, "fargateTaskRetirementWaitPeriod"), + resource.TestCheckResourceAttr(resourceName, names.AttrValue, "14"), + acctest.MatchResourceAttrGlobalARN(resourceName, "principal_arn", "iam", regexache.MustCompile("root")), + ), + }, + { + ResourceName: resourceName, + ImportStateId: "fargateTaskRetirementWaitPeriod", + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + func testAccCheckAccountSettingDefaultDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { conn := acctest.Provider.Meta().(*conns.AWSClient).ECSConn(ctx) @@ -205,7 +235,7 @@ func testAccCheckAccountSettingDefaultDestroy(ctx context.Context) resource.Test } for _, value := range resp.Settings { - if aws.StringValue(value.Value) != "disabled" { + if aws.StringValue(value.Value) != "disabled" && aws.StringValue(value.Value) != "7" { switch name { case ecs.SettingNameContainerInstanceLongArnFormat: return nil @@ -232,3 +262,12 @@ resource "aws_ecs_account_setting_default" "test" { } `, settingName) } + +func testAccAccountSettingDefaultConfig_fargateTaskRetirementWaitPeriod(settingName string) string { + return fmt.Sprintf(` +resource "aws_ecs_account_setting_default" "test" { + name = %[1]q + value = "14" +} +`, settingName) +} diff --git a/internal/service/ecs/consts.go b/internal/service/ecs/consts.go index 51cea2cb9aec..fe9075359588 100644 --- a/internal/service/ecs/consts.go +++ b/internal/service/ecs/consts.go @@ -17,3 +17,7 @@ const ( clusterStatusInactive = "INACTIVE" clusterStatusProvisioning = "PROVISIONING" ) + +const ( + fargateTaskRetirementWaitPeriodValue = "7" +)