From 6a031515b532c29aadaa84a9722d0e2e7a58dbdf Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Wed, 28 Aug 2024 09:35:22 -0400 Subject: [PATCH 1/6] Add 'TestAccSSMParameter_importByARN'. # Conflicts: # internal/service/ssm/parameter_test.go --- internal/service/ssm/parameter_test.go | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/internal/service/ssm/parameter_test.go b/internal/service/ssm/parameter_test.go index ee8616e558d..0426b982e14 100644 --- a/internal/service/ssm/parameter_test.go +++ b/internal/service/ssm/parameter_test.go @@ -1053,6 +1053,40 @@ func TestAccSSMParameter_Secure_keyUpdate(t *testing.T) { }) } +func TestAccSSMParameter_importByARN(t *testing.T) { + ctx := acctest.Context(t) + var param awstypes.Parameter + name := fmt.Sprintf("%s_%s", t.Name(), sdkacctest.RandString(10)) + resourceName := "aws_ssm_parameter.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.SSMServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckParameterDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccParameterConfig_basic(name, "String", "test2"), + Check: resource.ComposeTestCheckFunc( + testAccCheckParameterExists(ctx, resourceName, ¶m), + ), + }, + // Test import by ARN. + // https://github.com/hashicorp/terraform-provider-aws/issues/39050. + { + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: func(*terraform.State) (string, error) { + return aws.ToString(param.ARN), nil + }, + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: names.AttrName, + ImportStateVerifyIgnore: []string{names.AttrID, "overwrite"}, + }, + }, + }) +} + func testAccCheckParameterRecreated(t *testing.T, before, after *awstypes.Parameter) resource.TestCheckFunc { return func(s *terraform.State) error { if *before.Name == *after.Name { From 921f2fcea456e812302d98eb72c5761cd0573b18 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Wed, 28 Aug 2024 09:58:36 -0400 Subject: [PATCH 2/6] r/aws_ssm_parameter: Use 'name' as argument to 'DeleteParameter'. --- internal/service/ssm/parameter.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/service/ssm/parameter.go b/internal/service/ssm/parameter.go index 082353da5e2..a5fe04fa270 100644 --- a/internal/service/ssm/parameter.go +++ b/internal/service/ssm/parameter.go @@ -337,7 +337,8 @@ func resourceParameterDelete(ctx context.Context, d *schema.ResourceData, meta i log.Printf("[DEBUG] Deleting SSM Parameter: %s", d.Id()) _, err := conn.DeleteParameter(ctx, &ssm.DeleteParameterInput{ - Name: aws.String(d.Id()), + // Use "name" instead of "id" in case the resource was imported by ARN. + Name: aws.String(d.Get(names.AttrName).(string)), }) if errs.IsA[*awstypes.ParameterNotFound](err) { From 12e7ad471490da3375efc5c9ae8e5f1d746c9bc9 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Wed, 28 Aug 2024 10:00:26 -0400 Subject: [PATCH 3/6] Add CHANGELOG entry. --- .changelog/#####.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/#####.txt diff --git a/.changelog/#####.txt b/.changelog/#####.txt new file mode 100644 index 00000000000..be2d8804fd3 --- /dev/null +++ b/.changelog/#####.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_ssm_parameter: Fix `ValidationException: Parameter ARN is not supported for this operation` errors when deleting resources imported by ARN +``` \ No newline at end of file From 626e13f5bdc2efeabfdcd0a9827e7b90838c1d6d Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Wed, 28 Aug 2024 10:02:43 -0400 Subject: [PATCH 4/6] Correct CHANGELOG entry file name. --- .changelog/{#####.txt => 39067.txt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .changelog/{#####.txt => 39067.txt} (100%) diff --git a/.changelog/#####.txt b/.changelog/39067.txt similarity index 100% rename from .changelog/#####.txt rename to .changelog/39067.txt From 4ba9ee6d8fc7928cab11ecbc7ec4f14c5c41fe10 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Wed, 28 Aug 2024 10:36:38 -0400 Subject: [PATCH 5/6] Fix providerlint 'AT002: acceptance test function name should not include import'. --- internal/service/ssm/parameter_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/service/ssm/parameter_test.go b/internal/service/ssm/parameter_test.go index 0426b982e14..74dfb916f5c 100644 --- a/internal/service/ssm/parameter_test.go +++ b/internal/service/ssm/parameter_test.go @@ -1053,7 +1053,7 @@ func TestAccSSMParameter_Secure_keyUpdate(t *testing.T) { }) } -func TestAccSSMParameter_importByARN(t *testing.T) { +func TestAccSSMParameter_importByARN(t *testing.T) { //lintignore:AT002 ctx := acctest.Context(t) var param awstypes.Parameter name := fmt.Sprintf("%s_%s", t.Name(), sdkacctest.RandString(10)) From 62a4543ee9d7514329d6b67c2762db8cb31d1492 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Wed, 28 Aug 2024 10:48:45 -0400 Subject: [PATCH 6/6] Fix providerlint 'AT002: acceptance test function name should not include import'. --- internal/service/ssm/parameter_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/service/ssm/parameter_test.go b/internal/service/ssm/parameter_test.go index 74dfb916f5c..57a8117cf3d 100644 --- a/internal/service/ssm/parameter_test.go +++ b/internal/service/ssm/parameter_test.go @@ -1053,7 +1053,8 @@ func TestAccSSMParameter_Secure_keyUpdate(t *testing.T) { }) } -func TestAccSSMParameter_importByARN(t *testing.T) { //lintignore:AT002 +// lintignore:AT002 +func TestAccSSMParameter_importByARN(t *testing.T) { ctx := acctest.Context(t) var param awstypes.Parameter name := fmt.Sprintf("%s_%s", t.Name(), sdkacctest.RandString(10))