From 1003bafc95d356d5e28a60a6306cbc729c5d7f10 Mon Sep 17 00:00:00 2001 From: drfaust92 Date: Sat, 18 Mar 2023 23:00:01 +0200 Subject: [PATCH 1/9] feature group - table format --- internal/service/sagemaker/feature_group.go | 6 ++ .../service/sagemaker/feature_group_test.go | 65 +++++++++++++++++++ .../r/sagemaker_feature_group.html.markdown | 1 + 3 files changed, 72 insertions(+) diff --git a/internal/service/sagemaker/feature_group.go b/internal/service/sagemaker/feature_group.go index fccb73ee40fd..af4704f725f2 100644 --- a/internal/service/sagemaker/feature_group.go +++ b/internal/service/sagemaker/feature_group.go @@ -158,6 +158,12 @@ func ResourceFeatureGroup() *schema.Resource { Type: schema.TypeBool, Optional: true, }, + "table_format": { + Type: schema.TypeString, + Optional: true, + Default: sagemaker.TableFormatGlue, + ValidateFunc: validation.StringInSlice(sagemaker.TableFormat_Values(), false), + }, }, }, }, diff --git a/internal/service/sagemaker/feature_group_test.go b/internal/service/sagemaker/feature_group_test.go index 0124ed319873..4f548dce574f 100644 --- a/internal/service/sagemaker/feature_group_test.go +++ b/internal/service/sagemaker/feature_group_test.go @@ -236,6 +236,41 @@ func testAccFeatureGroup_offlineConfig_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "offline_store_config.0.s3_storage_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "offline_store_config.0.s3_storage_config.0.s3_uri", fmt.Sprintf("s3://%s/prefix/", rName)), resource.TestCheckResourceAttr(resourceName, "offline_store_config.0.data_catalog_config.#", "0"), + resource.TestCheckResourceAttr(resourceName, "offline_store_config.0.table_format", "Glue"), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +func testAccFeatureGroup_offlineConfig_format(t *testing.T) { + ctx := acctest.Context(t) + var featureGroup sagemaker.DescribeFeatureGroupOutput + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_sagemaker_feature_group.test" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, sagemaker.EndpointsID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckFeatureGroupDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccFeatureGroupConfig_offlineTableFormat(rName, "Iceberg"), + Check: resource.ComposeTestCheckFunc( + testAccCheckFeatureGroupExists(ctx, resourceName, &featureGroup), + resource.TestCheckResourceAttr(resourceName, "feature_group_name", rName), + resource.TestCheckResourceAttr(resourceName, "offline_store_config.#", "1"), + resource.TestCheckResourceAttr(resourceName, "offline_store_config.0.disable_glue_table_creation", "true"), + resource.TestCheckResourceAttr(resourceName, "offline_store_config.0.s3_storage_config.#", "1"), + resource.TestCheckResourceAttr(resourceName, "offline_store_config.0.s3_storage_config.0.s3_uri", fmt.Sprintf("s3://%s/prefix/", rName)), + resource.TestCheckResourceAttr(resourceName, "offline_store_config.0.data_catalog_config.#", "0"), + resource.TestCheckResourceAttr(resourceName, "offline_store_config.0.table_format", "Iceberg"), ), }, { @@ -577,6 +612,36 @@ resource "aws_sagemaker_feature_group" "test" { `, rName)) } +func testAccFeatureGroupConfig_offlineTableFormat(rName, format string) string { + return acctest.ConfigCompose( + testAccFeatureGroupBaseConfig(rName), + testAccFeatureGroupOfflineBaseConfig(rName), + fmt.Sprintf(` +resource "aws_sagemaker_feature_group" "test" { + feature_group_name = %[1]q + record_identifier_feature_name = %[1]q + event_time_feature_name = %[1]q + role_arn = aws_iam_role.test.arn + + feature_definition { + feature_name = %[1]q + feature_type = "String" + } + + offline_store_config { + disable_glue_table_creation = true + table_format = %[2]q + + s3_storage_config { + s3_uri = "s3://${aws_s3_bucket.test.bucket}/prefix/" + } + } + + depends_on = [aws_iam_role_policy_attachment.test] +} +`, rName, format)) +} + func testAccFeatureGroupConfig_offlineCreateGlueCatalog(rName string) string { return acctest.ConfigCompose( testAccFeatureGroupBaseConfig(rName), diff --git a/website/docs/r/sagemaker_feature_group.html.markdown b/website/docs/r/sagemaker_feature_group.html.markdown index 2eb71947f313..f9e89393bfbd 100644 --- a/website/docs/r/sagemaker_feature_group.html.markdown +++ b/website/docs/r/sagemaker_feature_group.html.markdown @@ -56,6 +56,7 @@ The following arguments are supported: * `enable_online_store` - (Optional) Set to `true` to disable the automatic creation of an AWS Glue table when configuring an OfflineStore. * `s3_storage_config` - (Required) The Amazon Simple Storage (Amazon S3) location of OfflineStore. See [S3 Storage Config](#s3-storage-config) Below. * `data_catalog_config` - (Optional) The meta data of the Glue table that is autogenerated when an OfflineStore is created. See [Data Catalog Config](#data-catalog-config) Below. +* `table_format` - (Optional) Format for the offline store table. Supported formats are `Glue` (Default) and Apache `Iceberg` (https://iceberg.apache.org/). ### Online Store Config From f5f22f576ccfceaf723a8889c1860ea9d7a06c02 Mon Sep 17 00:00:00 2001 From: drfaust92 Date: Sat, 18 Mar 2023 23:01:55 +0200 Subject: [PATCH 2/9] test --- internal/service/sagemaker/feature_group_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/service/sagemaker/feature_group_test.go b/internal/service/sagemaker/feature_group_test.go index 4f548dce574f..a30352a90592 100644 --- a/internal/service/sagemaker/feature_group_test.go +++ b/internal/service/sagemaker/feature_group_test.go @@ -25,6 +25,7 @@ func TestAccSageMakerFeatureGroup_serial(t *testing.T) { "disappears": TestAccSageMakerFeatureGroup_disappears, "multipleFeatures": testAccFeatureGroup_multipleFeatures, "offlineConfig_basic": testAccFeatureGroup_offlineConfig_basic, + "offlineConfig_format": testAccFeatureGroup_offlineConfig_format, "offlineConfig_createCatalog": testAccFeatureGroup_offlineConfig_createCatalog, "offlineConfig_providedCatalog": TestAccSageMakerFeatureGroup_Offline_providedCatalog, "onlineConfigSecurityConfig": testAccFeatureGroup_onlineConfigSecurityConfig, From 22a860e39df85d921e63202088a9c233b18ff74a Mon Sep 17 00:00:00 2001 From: drfaust92 Date: Sat, 18 Mar 2023 23:02:46 +0200 Subject: [PATCH 3/9] changelog --- .changelog/30118.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/30118.txt diff --git a/.changelog/30118.txt b/.changelog/30118.txt new file mode 100644 index 000000000000..a4965afd7098 --- /dev/null +++ b/.changelog/30118.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/aws_sagemaker_feature_group: add table_format argument +``` \ No newline at end of file From 378079e22c054cda54d59e57305964d9f86c4b7b Mon Sep 17 00:00:00 2001 From: drfaust92 Date: Sat, 18 Mar 2023 23:10:18 +0200 Subject: [PATCH 4/9] fmt --- internal/service/sagemaker/feature_group_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/service/sagemaker/feature_group_test.go b/internal/service/sagemaker/feature_group_test.go index a30352a90592..e6e9d7348cf2 100644 --- a/internal/service/sagemaker/feature_group_test.go +++ b/internal/service/sagemaker/feature_group_test.go @@ -631,7 +631,7 @@ resource "aws_sagemaker_feature_group" "test" { offline_store_config { disable_glue_table_creation = true - table_format = %[2]q + table_format = %[2]q s3_storage_config { s3_uri = "s3://${aws_s3_bucket.test.bucket}/prefix/" From 62fdbd83f21d0ba3f5156c708c2684d5bb1c452b Mon Sep 17 00:00:00 2001 From: drfaust92 Date: Mon, 27 Mar 2023 09:08:21 +0300 Subject: [PATCH 5/9] acutally add format --- internal/service/sagemaker/feature_group.go | 5 +++++ internal/service/sagemaker/feature_group_test.go | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/internal/service/sagemaker/feature_group.go b/internal/service/sagemaker/feature_group.go index af4704f725f2..b3c93c76b1aa 100644 --- a/internal/service/sagemaker/feature_group.go +++ b/internal/service/sagemaker/feature_group.go @@ -478,6 +478,10 @@ func expandFeatureGroupOfflineStoreConfig(l []interface{}) *sagemaker.OfflineSto config.DisableGlueTableCreation = aws.Bool(v) } + if v, ok := m["table_format"].(string); ok { + config.TableFormat = aws.String(v) + } + return config } @@ -488,6 +492,7 @@ func flattenFeatureGroupOfflineStoreConfig(config *sagemaker.OfflineStoreConfig) m := map[string]interface{}{ "disable_glue_table_creation": aws.BoolValue(config.DisableGlueTableCreation), + "table_format": aws.StringValue(config.TableFormat), } if config.DataCatalogConfig != nil { diff --git a/internal/service/sagemaker/feature_group_test.go b/internal/service/sagemaker/feature_group_test.go index e6e9d7348cf2..9d29d5afeaf1 100644 --- a/internal/service/sagemaker/feature_group_test.go +++ b/internal/service/sagemaker/feature_group_test.go @@ -267,7 +267,7 @@ func testAccFeatureGroup_offlineConfig_format(t *testing.T) { testAccCheckFeatureGroupExists(ctx, resourceName, &featureGroup), resource.TestCheckResourceAttr(resourceName, "feature_group_name", rName), resource.TestCheckResourceAttr(resourceName, "offline_store_config.#", "1"), - resource.TestCheckResourceAttr(resourceName, "offline_store_config.0.disable_glue_table_creation", "true"), + resource.TestCheckResourceAttr(resourceName, "offline_store_config.0.disable_glue_table_creation", "false"), resource.TestCheckResourceAttr(resourceName, "offline_store_config.0.s3_storage_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "offline_store_config.0.s3_storage_config.0.s3_uri", fmt.Sprintf("s3://%s/prefix/", rName)), resource.TestCheckResourceAttr(resourceName, "offline_store_config.0.data_catalog_config.#", "0"), @@ -630,7 +630,7 @@ resource "aws_sagemaker_feature_group" "test" { } offline_store_config { - disable_glue_table_creation = true + disable_glue_table_creation = false table_format = %[2]q s3_storage_config { From cb1519713df7f1445e290bc2a4654551ebd5f66a Mon Sep 17 00:00:00 2001 From: drfaust92 Date: Mon, 27 Mar 2023 09:39:00 +0300 Subject: [PATCH 6/9] acutally add format --- internal/service/sagemaker/feature_group_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/service/sagemaker/feature_group_test.go b/internal/service/sagemaker/feature_group_test.go index 9d29d5afeaf1..e10075180401 100644 --- a/internal/service/sagemaker/feature_group_test.go +++ b/internal/service/sagemaker/feature_group_test.go @@ -270,7 +270,7 @@ func testAccFeatureGroup_offlineConfig_format(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "offline_store_config.0.disable_glue_table_creation", "false"), resource.TestCheckResourceAttr(resourceName, "offline_store_config.0.s3_storage_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "offline_store_config.0.s3_storage_config.0.s3_uri", fmt.Sprintf("s3://%s/prefix/", rName)), - resource.TestCheckResourceAttr(resourceName, "offline_store_config.0.data_catalog_config.#", "0"), + resource.TestCheckResourceAttr(resourceName, "offline_store_config.0.data_catalog_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "offline_store_config.0.table_format", "Iceberg"), ), }, From ca6001b0d4ce62739508856c33e80d187dc11eb2 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Thu, 30 Mar 2023 15:13:53 -0400 Subject: [PATCH 7/9] Tweak CHANGELOG entry. --- .changelog/30118.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changelog/30118.txt b/.changelog/30118.txt index a4965afd7098..7d73c69707dd 100644 --- a/.changelog/30118.txt +++ b/.changelog/30118.txt @@ -1,3 +1,3 @@ ```release-note:enhancement -resource/aws_sagemaker_feature_group: add table_format argument +resource/aws_sagemaker_feature_group: Add `table_format` to the `offline_store_config` configuration block ``` \ No newline at end of file From 768afdcc270dc0c143b7172789e7a25c87c5a037 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Thu, 30 Mar 2023 15:16:07 -0400 Subject: [PATCH 8/9] r/aws_sagemaker_feature_group: Alphabetize attributes. --- internal/service/sagemaker/feature_group.go | 80 ++++++++++----------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/internal/service/sagemaker/feature_group.go b/internal/service/sagemaker/feature_group.go index b3c93c76b1aa..9cdf33efd0fe 100644 --- a/internal/service/sagemaker/feature_group.go +++ b/internal/service/sagemaker/feature_group.go @@ -35,25 +35,11 @@ func ResourceFeatureGroup() *schema.Resource { Type: schema.TypeString, Computed: true, }, - "feature_group_name": { - Type: schema.TypeString, - Required: true, - ForceNew: true, - ValidateFunc: validation.All( - validation.StringLenBetween(1, 64), - validation.StringMatch(regexp.MustCompile(`^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,63}`), - "Must start and end with an alphanumeric character and Can only contain alphanumeric character and hyphens. Spaces are not allowed."), - ), - }, - "record_identifier_feature_name": { - Type: schema.TypeString, - Required: true, - ForceNew: true, - ValidateFunc: validation.All( - validation.StringLenBetween(1, 64), - validation.StringMatch(regexp.MustCompile(`^[a-zA-Z0-9]([-_]*[a-zA-Z0-9]){0,63}`), - "Must start and end with an alphanumeric character and Can only contains alphanumeric characters, hyphens, underscores. Spaces are not allowed."), - ), + "description": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + ValidateFunc: validation.StringLenBetween(0, 128), }, "event_time_feature_name": { Type: schema.TypeString, @@ -65,18 +51,6 @@ func ResourceFeatureGroup() *schema.Resource { "Must start and end with an alphanumeric character and Can only contains alphanumeric characters, hyphens, underscores. Spaces are not allowed."), ), }, - "description": { - Type: schema.TypeString, - Optional: true, - ForceNew: true, - ValidateFunc: validation.StringLenBetween(0, 128), - }, - "role_arn": { - Type: schema.TypeString, - Required: true, - ForceNew: true, - ValidateFunc: verify.ValidARN, - }, "feature_definition": { Type: schema.TypeList, Required: true, @@ -103,6 +77,16 @@ func ResourceFeatureGroup() *schema.Resource { }, }, }, + "feature_group_name": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + ValidateFunc: validation.All( + validation.StringLenBetween(1, 64), + validation.StringMatch(regexp.MustCompile(`^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,63}`), + "Must start and end with an alphanumeric character and Can only contain alphanumeric character and hyphens. Spaces are not allowed."), + ), + }, "offline_store_config": { Type: schema.TypeList, Optional: true, @@ -136,6 +120,10 @@ func ResourceFeatureGroup() *schema.Resource { }, }, }, + "disable_glue_table_creation": { + Type: schema.TypeBool, + Optional: true, + }, "s3_storage_config": { Type: schema.TypeList, Required: true, @@ -154,10 +142,6 @@ func ResourceFeatureGroup() *schema.Resource { }, }, }, - "disable_glue_table_creation": { - Type: schema.TypeBool, - Optional: true, - }, "table_format": { Type: schema.TypeString, Optional: true, @@ -175,6 +159,11 @@ func ResourceFeatureGroup() *schema.Resource { AtLeastOneOf: []string{"offline_store_config", "online_store_config"}, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ + "enable_online_store": { + Type: schema.TypeBool, + Optional: true, + Default: false, + }, "security_config": { Type: schema.TypeList, Optional: true, @@ -189,14 +178,25 @@ func ResourceFeatureGroup() *schema.Resource { }, }, }, - "enable_online_store": { - Type: schema.TypeBool, - Optional: true, - Default: false, - }, }, }, }, + "record_identifier_feature_name": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + ValidateFunc: validation.All( + validation.StringLenBetween(1, 64), + validation.StringMatch(regexp.MustCompile(`^[a-zA-Z0-9]([-_]*[a-zA-Z0-9]){0,63}`), + "Must start and end with an alphanumeric character and Can only contains alphanumeric characters, hyphens, underscores. Spaces are not allowed."), + ), + }, + "role_arn": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + ValidateFunc: verify.ValidARN, + }, "tags": tftags.TagsSchema(), "tags_all": tftags.TagsSchemaComputed(), }, From fd83365345e2adf8a96058bea34abd8b81b63fae Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Thu, 30 Mar 2023 15:18:49 -0400 Subject: [PATCH 9/9] r/aws_sagemaker_feature_group: Remove 'aws_s3_bucket_acl' resources from acceptance test configurations. --- .../service/sagemaker/feature_group_test.go | 37 ++++++++----------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/internal/service/sagemaker/feature_group_test.go b/internal/service/sagemaker/feature_group_test.go index e10075180401..aec0a603c7d0 100644 --- a/internal/service/sagemaker/feature_group_test.go +++ b/internal/service/sagemaker/feature_group_test.go @@ -431,7 +431,7 @@ func testAccCheckFeatureGroupExists(ctx context.Context, n string, v *sagemaker. } } -func testAccFeatureGroupBaseConfig(rName string) string { +func testAccFeatureGroupConfig_base(rName string) string { return fmt.Sprintf(` data "aws_partition" "current" {} @@ -454,18 +454,13 @@ data "aws_iam_policy_document" "test" { `, rName) } -func testAccFeatureGroupOfflineBaseConfig(rName string) string { +func testAccFeatureGroupConfig_baseOffline(rName string) string { return fmt.Sprintf(` resource "aws_s3_bucket" "test" { bucket = %[1]q force_destroy = true } -resource "aws_s3_bucket_acl" "test" { - bucket = aws_s3_bucket.test.id - acl = "private" -} - resource "aws_iam_role_policy_attachment" "test" { role = aws_iam_role.test.name policy_arn = aws_iam_policy.test.arn @@ -490,7 +485,7 @@ resource "aws_iam_policy" "test" { } func testAccFeatureGroupConfig_basic(rName string) string { - return acctest.ConfigCompose(testAccFeatureGroupBaseConfig(rName), fmt.Sprintf(` + return acctest.ConfigCompose(testAccFeatureGroupConfig_base(rName), fmt.Sprintf(` resource "aws_sagemaker_feature_group" "test" { feature_group_name = %[1]q record_identifier_feature_name = %[1]q @@ -510,7 +505,7 @@ resource "aws_sagemaker_feature_group" "test" { } func testAccFeatureGroupConfig_description(rName string) string { - return acctest.ConfigCompose(testAccFeatureGroupBaseConfig(rName), fmt.Sprintf(` + return acctest.ConfigCompose(testAccFeatureGroupConfig_base(rName), fmt.Sprintf(` resource "aws_sagemaker_feature_group" "test" { feature_group_name = %[1]q record_identifier_feature_name = %[1]q @@ -531,7 +526,7 @@ resource "aws_sagemaker_feature_group" "test" { } func testAccFeatureGroupConfig_multi(rName string) string { - return acctest.ConfigCompose(testAccFeatureGroupBaseConfig(rName), fmt.Sprintf(` + return acctest.ConfigCompose(testAccFeatureGroupConfig_base(rName), fmt.Sprintf(` resource "aws_sagemaker_feature_group" "test" { feature_group_name = %[1]q record_identifier_feature_name = %[1]q @@ -556,7 +551,7 @@ resource "aws_sagemaker_feature_group" "test" { } func testAccFeatureGroupConfig_onlineSecurity(rName string) string { - return acctest.ConfigCompose(testAccFeatureGroupBaseConfig(rName), fmt.Sprintf(` + return acctest.ConfigCompose(testAccFeatureGroupConfig_base(rName), fmt.Sprintf(` resource "aws_kms_key" "test" { description = %[1]q deletion_window_in_days = 7 @@ -586,8 +581,8 @@ resource "aws_sagemaker_feature_group" "test" { func testAccFeatureGroupConfig_offlineBasic(rName string) string { return acctest.ConfigCompose( - testAccFeatureGroupBaseConfig(rName), - testAccFeatureGroupOfflineBaseConfig(rName), + testAccFeatureGroupConfig_base(rName), + testAccFeatureGroupConfig_baseOffline(rName), fmt.Sprintf(` resource "aws_sagemaker_feature_group" "test" { feature_group_name = %[1]q @@ -615,8 +610,8 @@ resource "aws_sagemaker_feature_group" "test" { func testAccFeatureGroupConfig_offlineTableFormat(rName, format string) string { return acctest.ConfigCompose( - testAccFeatureGroupBaseConfig(rName), - testAccFeatureGroupOfflineBaseConfig(rName), + testAccFeatureGroupConfig_base(rName), + testAccFeatureGroupConfig_baseOffline(rName), fmt.Sprintf(` resource "aws_sagemaker_feature_group" "test" { feature_group_name = %[1]q @@ -645,8 +640,8 @@ resource "aws_sagemaker_feature_group" "test" { func testAccFeatureGroupConfig_offlineCreateGlueCatalog(rName string) string { return acctest.ConfigCompose( - testAccFeatureGroupBaseConfig(rName), - testAccFeatureGroupOfflineBaseConfig(rName), + testAccFeatureGroupConfig_base(rName), + testAccFeatureGroupConfig_baseOffline(rName), fmt.Sprintf(` resource "aws_sagemaker_feature_group" "test" { feature_group_name = %[1]q @@ -674,8 +669,8 @@ resource "aws_sagemaker_feature_group" "test" { func testAccFeatureGroupConfig_offlineCreateGlueCatalogProvidedCatalog(rName string) string { return acctest.ConfigCompose( - testAccFeatureGroupBaseConfig(rName), - testAccFeatureGroupOfflineBaseConfig(rName), + testAccFeatureGroupConfig_base(rName), + testAccFeatureGroupConfig_baseOffline(rName), fmt.Sprintf(` resource "aws_glue_catalog_database" "test" { name = %[1]q @@ -717,7 +712,7 @@ resource "aws_sagemaker_feature_group" "test" { } func testAccFeatureGroupConfig_tags1(rName, tag1Key, tag1Value string) string { - return acctest.ConfigCompose(testAccFeatureGroupBaseConfig(rName), fmt.Sprintf(` + return acctest.ConfigCompose(testAccFeatureGroupConfig_base(rName), fmt.Sprintf(` resource "aws_sagemaker_feature_group" "test" { feature_group_name = %[1]q record_identifier_feature_name = %[1]q @@ -741,7 +736,7 @@ resource "aws_sagemaker_feature_group" "test" { } func testAccFeatureGroupConfig_tags2(rName, tag1Key, tag1Value, tag2Key, tag2Value string) string { - return acctest.ConfigCompose(testAccFeatureGroupBaseConfig(rName), fmt.Sprintf(` + return acctest.ConfigCompose(testAccFeatureGroupConfig_base(rName), fmt.Sprintf(` resource "aws_sagemaker_feature_group" "test" { feature_group_name = %[1]q record_identifier_feature_name = %[1]q