Skip to content

feat: add support for default ecs log driver mode on account level #42418

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .changelog/42418.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:enhancement
resource/aws_ecs_account_setting_default: Add support for `defaultLogDriverMode` value in `Name` argument
```
7 changes: 7 additions & 0 deletions internal/service/ecs/account_setting_default.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
60 changes: 52 additions & 8 deletions internal/service/ecs/account_setting_default_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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),
Expand All @@ -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"
Expand All @@ -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),
Expand Down Expand Up @@ -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),
Expand Down Expand Up @@ -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),
Expand Down Expand Up @@ -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),
Expand Down Expand Up @@ -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
Expand All @@ -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 {
Expand Down
11 changes: 11 additions & 0 deletions website/docs/r/ecs_account_setting_default.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,24 @@ 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"
value = "enabled"
}
```

### 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:
Expand Down
Loading