From eb95c0a27f55a19559805ba33983b26849aa2159 Mon Sep 17 00:00:00 2001 From: Gavin Williams Date: Thu, 12 Jan 2023 09:43:02 +0000 Subject: [PATCH 001/118] Ensure required values are set when changing `storage_type`. As observed in #28589, if changing the `storage_type` additional fields need to be set if required. For example, `gp3` storage requires that the `allocated_storage` and `iops` params are supplied if the volume size is `>=400G`. Added a new test case to try and exercise this behaviour, and also tweaked a couple of existing tests to exercise the `gp3` tiering behaviour. **N.B** I've not been able to run these acceptance tests locally yet. Fixes #28589 --- internal/service/rds/instance.go | 6 ++ internal/service/rds/instance_test.go | 89 ++++++++++++++++++++++++--- 2 files changed, 87 insertions(+), 8 deletions(-) diff --git a/internal/service/rds/instance.go b/internal/service/rds/instance.go index 977cebc7c8d..6a96504c798 100644 --- a/internal/service/rds/instance.go +++ b/internal/service/rds/instance.go @@ -2069,6 +2069,12 @@ func dbInstancePopulateModify(input *rds_sdkv2.ModifyDBInstanceInput, d *schema. if aws.StringValue(input.StorageType) == storageTypeIO1 { input.Iops = aws.Int32(int32(d.Get("iops").(int))) } + + // Need to send the iops and allocated_size if migrating to a gp3 volume that's larger than the threshold. + if aws.StringValue(input.StorageType) == storageTypeGP3 && !isStorageTypeGP3BelowAllocatedStorageThreshold(d) { + input.AllocatedStorage = aws.Int32(int32(d.Get("allocated_storage").(int))) + input.Iops = aws.Int32(int32(d.Get("iops").(int))) + } } if d.HasChange("vpc_security_group_ids") { diff --git a/internal/service/rds/instance_test.go b/internal/service/rds/instance_test.go index 0e754767618..e2c01f1116c 100644 --- a/internal/service/rds/instance_test.go +++ b/internal/service/rds/instance_test.go @@ -4806,12 +4806,12 @@ func TestAccRDSInstance_gp3MySQL(t *testing.T) { }, }, { - Config: testAccInstanceConfig_gp3(rName, testAccInstanceConfig_orderableClassMySQLGP3, 300), + Config: testAccInstanceConfig_gp3(rName, testAccInstanceConfig_orderableClassMySQLGP3, 400), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckInstanceExists(resourceName, &v), - resource.TestCheckResourceAttr(resourceName, "allocated_storage", "300"), - resource.TestCheckResourceAttr(resourceName, "iops", "3000"), - resource.TestCheckResourceAttr(resourceName, "storage_throughput", "125"), + resource.TestCheckResourceAttr(resourceName, "allocated_storage", "400"), + resource.TestCheckResourceAttr(resourceName, "iops", "12000"), + resource.TestCheckResourceAttr(resourceName, "storage_throughput", "500"), resource.TestCheckResourceAttr(resourceName, "storage_type", "gp3"), ), }, @@ -4858,12 +4858,12 @@ func TestAccRDSInstance_gp3Postgres(t *testing.T) { }, }, { - Config: testAccInstanceConfig_gp3(rName, testAccInstanceConfig_orderableClassPostgresGP3, 300), + Config: testAccInstanceConfig_gp3(rName, testAccInstanceConfig_orderableClassPostgresGP3, 400), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckInstanceExists(resourceName, &v), - resource.TestCheckResourceAttr(resourceName, "allocated_storage", "300"), - resource.TestCheckResourceAttr(resourceName, "iops", "3000"), - resource.TestCheckResourceAttr(resourceName, "storage_throughput", "125"), + resource.TestCheckResourceAttr(resourceName, "allocated_storage", "400"), + resource.TestCheckResourceAttr(resourceName, "iops", "12000"), + resource.TestCheckResourceAttr(resourceName, "storage_throughput", "500"), resource.TestCheckResourceAttr(resourceName, "storage_type", "gp3"), ), }, @@ -4973,6 +4973,54 @@ func TestAccRDSInstance_storageThroughput(t *testing.T) { }) } +func TestAccRDSInstance_storageIO(t *testing.T) { + if testing.Short() { + t.Skip("skipping long-running test in short mode") + } + + var v rds.DBInstance + resourceName := "aws_db_instance.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(t) }, + ErrorCheck: acctest.ErrorCheck(t, rds.EndpointsID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckInstanceDestroy, + Steps: []resource.TestStep{ + { + Config: testAccInstanceConfig_storageIO(rName, 12000), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckInstanceExists(resourceName, &v), + resource.TestCheckResourceAttr(resourceName, "iops", "12000"), + resource.TestCheckResourceAttr(resourceName, "storage_type", "gp3"), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "apply_immediately", + "final_snapshot_identifier", + "password", + "skip_final_snapshot", + "delete_automated_backups", + "blue_green_update", + }, + }, + { + Config: testAccInstanceConfig_storageIO(rName, 14000), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckInstanceExists(resourceName, &v), + resource.TestCheckResourceAttr(resourceName, "iops", "14000"), + resource.TestCheckResourceAttr(resourceName, "storage_type", "gp3"), + ), + }, + }, + }) +} + func TestAccRDSInstance_storageTypePostgres(t *testing.T) { if testing.Short() { t.Skip("skipping long-running test in short mode") @@ -10051,6 +10099,31 @@ resource "aws_db_instance" "test" { `, rName, iops, throughput)) } +func testAccInstanceConfig_storageIO(rName string, iops int) string { + return acctest.ConfigCompose( + testAccInstanceConfig_orderableClassMySQLGP3(), + fmt.Sprintf(` +resource "aws_db_instance" "test" { + identifier = %[1]q + engine = data.aws_rds_engine_version.default.engine + engine_version = data.aws_rds_engine_version.default.version + instance_class = data.aws_rds_orderable_db_instance.test.instance_class + db_name = "test" + password = "avoid-plaintext-passwords" + username = "tfacctest" + parameter_group_name = "default.${data.aws_rds_engine_version.default.parameter_group_family}" + skip_final_snapshot = true + + apply_immediately = true + + storage_type = data.aws_rds_orderable_db_instance.test.storage_type + allocated_storage = 400 + + iops = %[2]d +} +`, rName, iops)) +} + func testAccInstanceConfig_storageTypePostgres(rName string, storageType string, allocatedStorage int) string { return fmt.Sprintf(` data "aws_rds_engine_version" "default" { From 720451d00e778a1bff6fd1cbe3323adf07964348 Mon Sep 17 00:00:00 2001 From: Nate Henjes Date: Fri, 3 May 2024 10:20:32 -0400 Subject: [PATCH 002/118] Fix RDS instance bug where switching to IO2 needs the allocated storage parameter passed --- internal/service/rds/instance.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/service/rds/instance.go b/internal/service/rds/instance.go index 4474b4863d2..072234f2f60 100644 --- a/internal/service/rds/instance.go +++ b/internal/service/rds/instance.go @@ -2409,6 +2409,7 @@ func dbInstancePopulateModify(input *rds_sdkv2.ModifyDBInstanceInput, d *schema. if slices.Contains([]string{storageTypeIO1, storageTypeIO2}, aws.StringValue(input.StorageType)) { input.Iops = aws.Int32(int32(d.Get(names.AttrIOPS).(int))) + input.AllocatedStorage = aws.Int32(int32(d.Get("allocated_storage").(int))) } } From 4641aba608a5e412fa9bfabd199a02d297a409a4 Mon Sep 17 00:00:00 2001 From: Nate Henjes Date: Fri, 17 May 2024 10:18:06 -0400 Subject: [PATCH 003/118] Add tests that switch from GP3 to IO2 --- internal/service/rds/cluster_test.go | 45 ++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/internal/service/rds/cluster_test.go b/internal/service/rds/cluster_test.go index ad35436d156..21438d7d59c 100644 --- a/internal/service/rds/cluster_test.go +++ b/internal/service/rds/cluster_test.go @@ -508,15 +508,14 @@ func TestAccRDSCluster_storageTypeIo1(t *testing.T) { }) } -func TestAccRDSCluster_storageTypeIo2(t *testing.T) { +func TestAccRDSCluster_storageTypeGeneralPurposeToProvisionedIops(t *testing.T) { + ctx := acctest.Context(t) if testing.Short() { t.Skip("skipping long-running test in short mode") } - ctx := acctest.Context(t) - var dbCluster rds.DBCluster rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) - resourceName := "aws_rds_cluster.test" + resourceName := "aws_db_instance.test" resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, @@ -525,9 +524,14 @@ func TestAccRDSCluster_storageTypeIo2(t *testing.T) { CheckDestroy: testAccCheckClusterDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccClusterConfig_storageType(rName, "io2"), + Config: testAccClusterConfig_storageChange(rName, "gp3"), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr(resourceName, "storage_type", "gp3"), + ), + }, + { + Config: testAccClusterConfig_storageChange(rName, "io2"), Check: resource.ComposeTestCheckFunc( - testAccCheckClusterExists(ctx, resourceName, &dbCluster), resource.TestCheckResourceAttr(resourceName, names.AttrStorageType, "io2"), ), }, @@ -3138,6 +3142,35 @@ resource "aws_rds_cluster" "test" { `, tfrds.ClusterEngineMySQL, mainInstanceClasses, rName, sType)) } +func testAccClusterConfig_storageChange(rName string, sType string) string { + return acctest.ConfigCompose( + testAccConfig_ClusterSubnetGroup(rName), + fmt.Sprintf(` +data "aws_rds_orderable_db_instance" "test" { + engine = %[1]q + engine_latest_version = true + preferred_instance_classes = [%[2]s] + storage_type = %[4]q + supports_iops = true + supports_clusters = true +} + +resource "aws_db_instance" "test" { + apply_immediately = true + instance_class = data.aws_rds_orderable_db_instance.test.instance_class + db_subnet_group_name = aws_db_subnet_group.test.name + engine = data.aws_rds_orderable_db_instance.test.engine + engine_version = data.aws_rds_orderable_db_instance.test.engine_version + storage_type = data.aws_rds_orderable_db_instance.test.storage_type + allocated_storage = 400 + iops = 12000 + password = "mustbeeightcharaters" + username = "test" + skip_final_snapshot = true +} +`, tfrds.ClusterEnginePostgres, mainInstanceClasses, rName, sType)) +} + func testAccClusterConfig_allocatedStorage(rName string) string { return acctest.ConfigCompose( testAccConfig_ClusterSubnetGroup(rName), From 2ca05fd0890038394980bc7d9e40978ac5637e08 Mon Sep 17 00:00:00 2001 From: Nate Henjes Date: Fri, 17 May 2024 10:28:52 -0400 Subject: [PATCH 004/118] Fix merge issues --- internal/service/rds/cluster_test.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/internal/service/rds/cluster_test.go b/internal/service/rds/cluster_test.go index 21438d7d59c..ef545e400a5 100644 --- a/internal/service/rds/cluster_test.go +++ b/internal/service/rds/cluster_test.go @@ -508,6 +508,33 @@ func TestAccRDSCluster_storageTypeIo1(t *testing.T) { }) } +func TestAccRDSCluster_storageTypeIo2(t *testing.T) { + if testing.Short() { + t.Skip("skipping long-running test in short mode") + } + + ctx := acctest.Context(t) + var dbCluster rds.DBCluster + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_rds_cluster.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.RDSServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckClusterDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccClusterConfig_storageType(rName, "io2"), + Check: resource.ComposeTestCheckFunc( + testAccCheckClusterExists(ctx, resourceName, &dbCluster), + resource.TestCheckResourceAttr(resourceName, names.AttrStorageType, "io2"), + ), + }, + }, + }) +} + func TestAccRDSCluster_storageTypeGeneralPurposeToProvisionedIops(t *testing.T) { ctx := acctest.Context(t) if testing.Short() { From b76c2ad1d15d893b8dbd890e41d254ffe8e8ceac Mon Sep 17 00:00:00 2001 From: Alex Bacchin Date: Mon, 18 Nov 2024 08:25:04 +1100 Subject: [PATCH 005/118] initial commit --- internal/acctest/acctest.go | 22 ++ internal/service/iam/organization_features.go | 238 ++++++++++++++++++ .../service/iam/organization_features_test.go | 143 +++++++++++ internal/service/iam/service_package_gen.go | 4 + 4 files changed, 407 insertions(+) create mode 100644 internal/service/iam/organization_features.go create mode 100644 internal/service/iam/organization_features_test.go diff --git a/internal/acctest/acctest.go b/internal/acctest/acctest.go index 36ad7252c0a..da1c45902f0 100644 --- a/internal/acctest/acctest.go +++ b/internal/acctest/acctest.go @@ -34,6 +34,7 @@ import ( iamtypes "github.com/aws/aws-sdk-go-v2/service/iam/types" "github.com/aws/aws-sdk-go-v2/service/inspector2" inspector2types "github.com/aws/aws-sdk-go-v2/service/inspector2/types" + "github.com/aws/aws-sdk-go-v2/service/organizations" organizationstypes "github.com/aws/aws-sdk-go-v2/service/organizations/types" "github.com/aws/aws-sdk-go-v2/service/outposts" "github.com/aws/aws-sdk-go-v2/service/pinpoint" @@ -1102,6 +1103,27 @@ func PreCheckOrganizationsEnabled(ctx context.Context, t *testing.T) *organizati return PreCheckOrganizationsEnabledWithProvider(ctx, t, func() *schema.Provider { return Provider }) } +func PreCheckOrganizationsAWSServiceAccess(ctx context.Context, t *testing.T, servicePrincipal string) { + t.Helper() + + conn := Provider.Meta().(*conns.AWSClient).OrganizationsClient(ctx) + + paginator := organizations.NewListAWSServiceAccessForOrganizationPaginator(conn, &organizations.ListAWSServiceAccessForOrganizationInput{}) + for paginator.HasMorePages() { + page, err := paginator.NextPage(ctx) + if err != nil { + t.Fatalf("Listing AWS Organization Service Access: %s", err) + } + + for _, service := range page.EnabledServicePrincipals { + if aws.ToString(service.ServicePrincipal) == servicePrincipal { + return + } + } + } + t.Skipf("skipping tests; The AWS Organization service %s must be enabled on AWS Organization", servicePrincipal) +} + func PreCheckOrganizationsEnabledWithProvider(ctx context.Context, t *testing.T, providerF ProviderFunc) *organizationstypes.Organization { t.Helper() diff --git a/internal/service/iam/organization_features.go b/internal/service/iam/organization_features.go new file mode 100644 index 00000000000..3ddfdf94910 --- /dev/null +++ b/internal/service/iam/organization_features.go @@ -0,0 +1,238 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package iam + +import ( + "context" + "slices" + + "github.com/aws/aws-sdk-go-v2/service/iam" + awstypes "github.com/aws/aws-sdk-go-v2/service/iam/types" + "github.com/hashicorp/terraform-plugin-framework-validators/setvalidator" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" + + "github.com/hashicorp/terraform-provider-aws/internal/create" + "github.com/hashicorp/terraform-provider-aws/internal/enum" + + "github.com/hashicorp/terraform-provider-aws/internal/framework" + "github.com/hashicorp/terraform-provider-aws/internal/framework/flex" + "github.com/hashicorp/terraform-provider-aws/names" +) + +// Function annotations are used for resource registration to the Provider. DO NOT EDIT. +// @FrameworkResource("aws_iam_organization_features", name="Organization Features") +func newResourceOrganizationFeatures(_ context.Context) (resource.ResourceWithConfigure, error) { + r := &resourceOrganizationFeatures{} + return r, nil +} + +const ( + ResNameOrganizationFeatures = "IAM Organization Features" +) + +type resourceOrganizationFeatures struct { + framework.ResourceWithConfigure +} + +func (r *resourceOrganizationFeatures) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = "aws_iam_organization_features" +} + +func (r *resourceOrganizationFeatures) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + names.AttrID: schema.StringAttribute{ + Computed: true, + }, + "features": schema.SetAttribute{ + ElementType: types.StringType, + Required: true, + Validators: []validator.Set{ + setvalidator.ValueStringsAre( + enum.FrameworkValidate[awstypes.FeatureType](), + ), + }, + }, + }, + } +} + +func (r *resourceOrganizationFeatures) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + conn := r.Meta().IAMClient(ctx) + + var plan resourceOrganizationFeaturesModel + resp.Diagnostics.Append(req.Plan.Get(ctx, &plan)...) + if resp.Diagnostics.HasError() { + return + } + + var planFeatures []string + resp.Diagnostics.Append(plan.EnabledFeatures.ElementsAs(ctx, &planFeatures, false)...) + if resp.Diagnostics.HasError() { + return + } + + out, err := manageOrganizationFeatures(ctx, conn, planFeatures, []string{}) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.IAM, create.ErrActionCreating, ResNameOrganizationFeatures, plan.OrganizationId.String(), err), + err.Error(), + ) + return + } + + resp.Diagnostics.Append(flex.Flatten(ctx, out, &plan)...) + if resp.Diagnostics.HasError() { + return + } + + resp.Diagnostics.Append(resp.State.Set(ctx, plan)...) +} + +func (r *resourceOrganizationFeatures) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + conn := r.Meta().IAMClient(ctx) + + var state resourceOrganizationFeaturesModel + resp.Diagnostics.Append(req.State.Get(ctx, &state)...) + if resp.Diagnostics.HasError() { + return + } + + var input iam.ListOrganizationsFeaturesInput + out, err := conn.ListOrganizationsFeatures(ctx, &input) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.IAM, create.ErrActionReading, ResNameOrganizationFeatures, "", err), + err.Error(), + ) + return + } + + resp.Diagnostics.Append(flex.Flatten(ctx, out, &state)...) + if resp.Diagnostics.HasError() { + return + } + + resp.Diagnostics.Append(resp.State.Set(ctx, &state)...) +} + +func (r *resourceOrganizationFeatures) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + conn := r.Meta().IAMClient(ctx) + + var plan, state resourceOrganizationFeaturesModel + resp.Diagnostics.Append(req.Plan.Get(ctx, &plan)...) + resp.Diagnostics.Append(req.State.Get(ctx, &state)...) + if resp.Diagnostics.HasError() { + return + } + + var stateFeatures, planFeatures []string + resp.Diagnostics.Append(plan.EnabledFeatures.ElementsAs(ctx, &planFeatures, false)...) + if resp.Diagnostics.HasError() { + return + } + resp.Diagnostics.Append(state.EnabledFeatures.ElementsAs(ctx, &stateFeatures, false)...) + if resp.Diagnostics.HasError() { + return + } + + _, err := manageOrganizationFeatures(ctx, conn, planFeatures, stateFeatures) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.IAM, create.ErrActionCreating, ResNameOrganizationFeatures, plan.OrganizationId.String(), err), + err.Error(), + ) + return + } + + resp.Diagnostics.Append(resp.State.Set(ctx, &plan)...) +} + +func (r *resourceOrganizationFeatures) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + conn := r.Meta().IAMClient(ctx) + + var state resourceOrganizationFeaturesModel + resp.Diagnostics.Append(req.State.Get(ctx, &state)...) + if resp.Diagnostics.HasError() { + return + } + var stateFeatures []string + resp.Diagnostics.Append(state.EnabledFeatures.ElementsAs(ctx, &stateFeatures, false)...) + if resp.Diagnostics.HasError() { + return + } + _, err := manageOrganizationFeatures(ctx, conn, []string{}, stateFeatures) + if err != nil { + resp.Diagnostics.AddError( + create.ProblemStandardMessage(names.IAM, create.ErrActionDeleting, ResNameOrganizationFeatures, state.OrganizationId.String(), err), + err.Error(), + ) + return + } + +} + +func (r *resourceOrganizationFeatures) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + resource.ImportStatePassthroughID(ctx, path.Root("id"), req, resp) +} + +type resourceOrganizationFeaturesModel struct { + OrganizationId types.String `tfsdk:"id"` + EnabledFeatures types.Set `tfsdk:"features"` +} + +func manageOrganizationFeatures(ctx context.Context, conn *iam.Client, planFeatures, stateFeatures []string) (*iam.ListOrganizationsFeaturesOutput, error) { + + var featuresToEnable, featuresToDisable []string + for _, feature := range planFeatures { + if !slices.Contains(stateFeatures, feature) { + featuresToEnable = append(featuresToEnable, feature) + } + } + for _, feature := range stateFeatures { + if !slices.Contains(planFeatures, feature) { + featuresToDisable = append(featuresToDisable, feature) + } + } + + if slices.Contains(featuresToEnable, string(awstypes.FeatureTypeRootCredentialsManagement)) { + var input iam.EnableOrganizationsRootCredentialsManagementInput + _, err := conn.EnableOrganizationsRootCredentialsManagement(ctx, &input) + if err != nil { + return nil, err + } + } + if slices.Contains(featuresToEnable, string(awstypes.FeatureTypeRootSessions)) { + var input iam.EnableOrganizationsRootSessionsInput + _, err := conn.EnableOrganizationsRootSessions(ctx, &input) + if err != nil { + return nil, err + } + } + if slices.Contains(featuresToDisable, string(awstypes.FeatureTypeRootCredentialsManagement)) { + var input iam.DisableOrganizationsRootCredentialsManagementInput + _, err := conn.DisableOrganizationsRootCredentialsManagement(ctx, &input) + if err != nil { + return nil, err + } + } + if slices.Contains(featuresToDisable, string(awstypes.FeatureTypeRootSessions)) { + var input iam.DisableOrganizationsRootSessionsInput + _, err := conn.DisableOrganizationsRootSessions(ctx, &input) + if err != nil { + return nil, err + } + } + var input iam.ListOrganizationsFeaturesInput + out, err := conn.ListOrganizationsFeatures(ctx, &input) + if err != nil { + return nil, err + } + return out, nil +} diff --git a/internal/service/iam/organization_features_test.go b/internal/service/iam/organization_features_test.go new file mode 100644 index 00000000000..debf1da3e8f --- /dev/null +++ b/internal/service/iam/organization_features_test.go @@ -0,0 +1,143 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package iam_test + +import ( + "context" + "errors" + "fmt" + "strings" + "testing" + + "github.com/aws/aws-sdk-go-v2/service/iam" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/terraform" + "github.com/hashicorp/terraform-provider-aws/internal/acctest" + "github.com/hashicorp/terraform-provider-aws/internal/conns" + "github.com/hashicorp/terraform-provider-aws/internal/create" + "github.com/hashicorp/terraform-provider-aws/names" + + // TIP: You will often need to import the package that this test file lives + // in. Since it is in the "test" context, it must import the package to use + // any normal context constants, variables, or functions. + tfiam "github.com/hashicorp/terraform-provider-aws/internal/service/iam" +) + +// TIP: ==== ACCEPTANCE TESTS ==== +// This is an example of a basic acceptance test. This should test as much of +// standard functionality of the resource as possible, and test importing, if +// applicable. We prefix its name with "TestAcc", the service, and the +// resource name. +// +// Acceptance test access AWS and cost money to run. +func TestAccIAMOrganizationFeatures_basic(t *testing.T) { + ctx := acctest.Context(t) + var organizationfeatures iam.ListOrganizationsFeaturesOutput + resourceName := "aws_iam_organization_features.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckOrganizationsEnabled(ctx, t) + acctest.PreCheckOrganizationsAWSServiceAccess(ctx, t, "iam.amazonaws.com") + }, + ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckOrganizationFeaturesDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccOrganizationFeaturesConfig_basic([]string{"RootCredentialsManagement", "RootSessions"}), + Check: resource.ComposeTestCheckFunc( + testAccCheckOrganizationFeaturesExists(ctx, resourceName, &organizationfeatures), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: false, + }, + }, + }) +} + +func TestAccIAMOrganizationFeatures_disappears(t *testing.T) { + ctx := acctest.Context(t) + if testing.Short() { + t.Skip("skipping long-running test in short mode") + } + + var organizationfeatures iam.ListOrganizationsFeaturesOutput + resourceName := "aws_iam_organization_features.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckOrganizationsEnabled(ctx, t) + acctest.PreCheckOrganizationsAWSServiceAccess(ctx, t, "iam.amazonaws.com") + }, + ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckOrganizationFeaturesDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccOrganizationFeaturesConfig_basic([]string{"RootCredentialsManagement", "RootSessions"}), + Check: resource.ComposeTestCheckFunc( + testAccCheckOrganizationFeaturesExists(ctx, resourceName, &organizationfeatures), + ), + ExpectNonEmptyPlan: true, + }, + }, + }) +} + +func testAccCheckOrganizationFeaturesDestroy(ctx context.Context) resource.TestCheckFunc { + return func(s *terraform.State) error { + conn := acctest.Provider.Meta().(*conns.AWSClient).IAMClient(ctx) + + for _, rs := range s.RootModule().Resources { + if rs.Type != "aws_iam_organization_features" { + continue + } + + out, err := conn.ListOrganizationsFeatures(ctx, &iam.ListOrganizationsFeaturesInput{}) + if err != nil { + return create.Error(names.IAM, create.ErrActionCheckingDestroyed, tfiam.ResNameOrganizationFeatures, rs.Primary.Attributes["organization_id"], err) + } + if len(out.EnabledFeatures) == 0 { + return nil + } + + return create.Error(names.IAM, create.ErrActionCheckingDestroyed, tfiam.ResNameOrganizationFeatures, rs.Primary.Attributes["organization_id"], errors.New("not destroyed")) + } + + return nil + } +} + +func testAccCheckOrganizationFeaturesExists(ctx context.Context, name string, organizationfeatures *iam.ListOrganizationsFeaturesOutput) resource.TestCheckFunc { + return func(s *terraform.State) error { + rs, ok := s.RootModule().Resources[name] + if !ok { + return create.Error(names.IAM, create.ErrActionCheckingExistence, tfiam.ResNameOrganizationFeatures, name, errors.New("not found")) + } + + conn := acctest.Provider.Meta().(*conns.AWSClient).IAMClient(ctx) + resp, err := conn.ListOrganizationsFeatures(ctx, &iam.ListOrganizationsFeaturesInput{}) + if err != nil { + return create.Error(names.IAM, create.ErrActionCheckingExistence, tfiam.ResNameOrganizationFeatures, rs.Primary.Attributes["organization_id"], err) + } + + *organizationfeatures = *resp + + return nil + } +} + +func testAccOrganizationFeaturesConfig_basic(features []string) string { + return fmt.Sprintf(` +resource "aws_iam_organization_features" "test" { + features = [%[1]s] +} +`, fmt.Sprintf(`"%s"`, strings.Join(features, `", "`))) +} diff --git a/internal/service/iam/service_package_gen.go b/internal/service/iam/service_package_gen.go index 8029167973b..1f2f876168c 100644 --- a/internal/service/iam/service_package_gen.go +++ b/internal/service/iam/service_package_gen.go @@ -28,6 +28,10 @@ func (p *servicePackage) FrameworkResources(ctx context.Context) []*types.Servic Factory: newResourceGroupPolicyAttachmentsExclusive, Name: "Group Policy Attachments Exclusive", }, + { + Factory: newResourceOrganizationFeatures, + Name: "Organization Features", + }, { Factory: newResourceRolePoliciesExclusive, Name: "Role Policies Exclusive", From aaea0ba6c5de7893429cb98e461ee8e09e4b29b5 Mon Sep 17 00:00:00 2001 From: Alex Bacchin Date: Mon, 18 Nov 2024 20:53:45 +1100 Subject: [PATCH 006/118] fixed update, documentation and changelog --- .changelog/40164.txt | 3 + internal/acctest/acctest.go | 2 +- internal/service/iam/organization_features.go | 11 +--- .../service/iam/organization_features_test.go | 41 +------------ .../r/iam_organization_features.html.markdown | 58 +++++++++++++++++++ 5 files changed, 68 insertions(+), 47 deletions(-) create mode 100644 .changelog/40164.txt create mode 100644 website/docs/r/iam_organization_features.html.markdown diff --git a/.changelog/40164.txt b/.changelog/40164.txt new file mode 100644 index 00000000000..80ec3b01777 --- /dev/null +++ b/.changelog/40164.txt @@ -0,0 +1,3 @@ +```release-note:new-resource +aws_iam_organization_features +``` diff --git a/internal/acctest/acctest.go b/internal/acctest/acctest.go index da1c45902f0..a71c7351764 100644 --- a/internal/acctest/acctest.go +++ b/internal/acctest/acctest.go @@ -1103,7 +1103,7 @@ func PreCheckOrganizationsEnabled(ctx context.Context, t *testing.T) *organizati return PreCheckOrganizationsEnabledWithProvider(ctx, t, func() *schema.Provider { return Provider }) } -func PreCheckOrganizationsAWSServiceAccess(ctx context.Context, t *testing.T, servicePrincipal string) { +func PreCheckOrganizationsTrustedServicePrincipalAccess(ctx context.Context, t *testing.T, servicePrincipal string) { t.Helper() conn := Provider.Meta().(*conns.AWSClient).OrganizationsClient(ctx) diff --git a/internal/service/iam/organization_features.go b/internal/service/iam/organization_features.go index 3ddfdf94910..e458bd71f48 100644 --- a/internal/service/iam/organization_features.go +++ b/internal/service/iam/organization_features.go @@ -13,13 +13,10 @@ import ( "github.com/hashicorp/terraform-plugin-framework/path" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/resource/schema" - "github.com/hashicorp/terraform-plugin-framework/schema/validator" "github.com/hashicorp/terraform-plugin-framework/types" - "github.com/hashicorp/terraform-provider-aws/internal/create" "github.com/hashicorp/terraform-provider-aws/internal/enum" - "github.com/hashicorp/terraform-provider-aws/internal/framework" "github.com/hashicorp/terraform-provider-aws/internal/framework/flex" "github.com/hashicorp/terraform-provider-aws/names" @@ -142,7 +139,7 @@ func (r *resourceOrganizationFeatures) Update(ctx context.Context, req resource. return } - _, err := manageOrganizationFeatures(ctx, conn, planFeatures, stateFeatures) + out, err := manageOrganizationFeatures(ctx, conn, planFeatures, stateFeatures) if err != nil { resp.Diagnostics.AddError( create.ProblemStandardMessage(names.IAM, create.ErrActionCreating, ResNameOrganizationFeatures, plan.OrganizationId.String(), err), @@ -150,6 +147,7 @@ func (r *resourceOrganizationFeatures) Update(ctx context.Context, req resource. ) return } + plan.OrganizationId = flex.StringToFramework(ctx, out.OrganizationId) resp.Diagnostics.Append(resp.State.Set(ctx, &plan)...) } @@ -175,11 +173,10 @@ func (r *resourceOrganizationFeatures) Delete(ctx context.Context, req resource. ) return } - } func (r *resourceOrganizationFeatures) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { - resource.ImportStatePassthroughID(ctx, path.Root("id"), req, resp) + resource.ImportStatePassthroughID(ctx, path.Root(names.AttrID), req, resp) } type resourceOrganizationFeaturesModel struct { @@ -188,7 +185,6 @@ type resourceOrganizationFeaturesModel struct { } func manageOrganizationFeatures(ctx context.Context, conn *iam.Client, planFeatures, stateFeatures []string) (*iam.ListOrganizationsFeaturesOutput, error) { - var featuresToEnable, featuresToDisable []string for _, feature := range planFeatures { if !slices.Contains(stateFeatures, feature) { @@ -200,7 +196,6 @@ func manageOrganizationFeatures(ctx context.Context, conn *iam.Client, planFeatu featuresToDisable = append(featuresToDisable, feature) } } - if slices.Contains(featuresToEnable, string(awstypes.FeatureTypeRootCredentialsManagement)) { var input iam.EnableOrganizationsRootCredentialsManagementInput _, err := conn.EnableOrganizationsRootCredentialsManagement(ctx, &input) diff --git a/internal/service/iam/organization_features_test.go b/internal/service/iam/organization_features_test.go index debf1da3e8f..04ae12ddc1a 100644 --- a/internal/service/iam/organization_features_test.go +++ b/internal/service/iam/organization_features_test.go @@ -16,21 +16,10 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/acctest" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/create" - "github.com/hashicorp/terraform-provider-aws/names" - - // TIP: You will often need to import the package that this test file lives - // in. Since it is in the "test" context, it must import the package to use - // any normal context constants, variables, or functions. tfiam "github.com/hashicorp/terraform-provider-aws/internal/service/iam" + "github.com/hashicorp/terraform-provider-aws/names" ) -// TIP: ==== ACCEPTANCE TESTS ==== -// This is an example of a basic acceptance test. This should test as much of -// standard functionality of the resource as possible, and test importing, if -// applicable. We prefix its name with "TestAcc", the service, and the -// resource name. -// -// Acceptance test access AWS and cost money to run. func TestAccIAMOrganizationFeatures_basic(t *testing.T) { ctx := acctest.Context(t) var organizationfeatures iam.ListOrganizationsFeaturesOutput @@ -40,7 +29,7 @@ func TestAccIAMOrganizationFeatures_basic(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckOrganizationsEnabled(ctx, t) - acctest.PreCheckOrganizationsAWSServiceAccess(ctx, t, "iam.amazonaws.com") + acctest.PreCheckOrganizationsTrustedServicePrincipalAccess(ctx, t, "iam.amazonaws.com") }, ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -57,35 +46,11 @@ func TestAccIAMOrganizationFeatures_basic(t *testing.T) { ImportState: true, ImportStateVerify: false, }, - }, - }) -} - -func TestAccIAMOrganizationFeatures_disappears(t *testing.T) { - ctx := acctest.Context(t) - if testing.Short() { - t.Skip("skipping long-running test in short mode") - } - - var organizationfeatures iam.ListOrganizationsFeaturesOutput - resourceName := "aws_iam_organization_features.test" - - resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { - acctest.PreCheck(ctx, t) - acctest.PreCheckOrganizationsEnabled(ctx, t) - acctest.PreCheckOrganizationsAWSServiceAccess(ctx, t, "iam.amazonaws.com") - }, - ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), - ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, - CheckDestroy: testAccCheckOrganizationFeaturesDestroy(ctx), - Steps: []resource.TestStep{ { - Config: testAccOrganizationFeaturesConfig_basic([]string{"RootCredentialsManagement", "RootSessions"}), + Config: testAccOrganizationFeaturesConfig_basic([]string{"RootCredentialsManagement"}), Check: resource.ComposeTestCheckFunc( testAccCheckOrganizationFeaturesExists(ctx, resourceName, &organizationfeatures), ), - ExpectNonEmptyPlan: true, }, }, }) diff --git a/website/docs/r/iam_organization_features.html.markdown b/website/docs/r/iam_organization_features.html.markdown new file mode 100644 index 00000000000..84b3760be2d --- /dev/null +++ b/website/docs/r/iam_organization_features.html.markdown @@ -0,0 +1,58 @@ +--- +subcategory: "IAM (Identity & Access Management)" +layout: "aws" +page_title: "AWS: aws_iam_organization_features" +description: |- + Terraform resource for managing an AWS IAM (Identity & Access Management) Organization Features. +--- + +# Resource: aws_iam_organization_features + +Manages a IAM Organization Features for centralized root access for member accounts.. More information about managing root access in IAM can be found in the [Centralize root access for member accounts](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-enable-root-access.html). + +~> **NOTE:** Before managing IAM Organization features, the AWS account utilizing this resource must be an Organizations management account. Also, you must enable trusted access for AWS Identity and Access Management in AWS Organizations. + +## Example Usage + +```terraform +resource "aws_organizations_organization" "example" { + aws_service_access_principals = ["iam.amazonaws.com"] + feature_set = "ALL" +} + +resource "aws_iam_organization_features" "example" { + features = [ + "RootCredentialsManagement", + "RootSessions" + ] +} +``` + +## Argument Reference + +The following arguments are required: + +* `features` - (Required) List of IAM features to enable. Valid values are `RootCredentialsManagement` and `RootSessions` + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `id` - AWS Organization identifier. + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import IAM (Identity & Access Management) Organization Features using the `id`. For example: + +```terraform +import { + to = aws_iam_organization_features.example + id = "o-1234567" +} +``` + +Using `terraform import`, import IAM (Identity & Access Management) Organization Features using the `id`. For example: + +```console +% terraform import aws_iam_organization_features.example o-1234567 +``` From 9458f63483049ee2dae79c8b8e9bd23140bc485b Mon Sep 17 00:00:00 2001 From: Alex Bacchin Date: Mon, 18 Nov 2024 21:53:02 +1100 Subject: [PATCH 007/118] fixed website terraform fmt --- internal/acctest/acctest.go | 2 +- website/docs/r/iam_organization_features.html.markdown | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/acctest/acctest.go b/internal/acctest/acctest.go index a71c7351764..22a0ee27c72 100644 --- a/internal/acctest/acctest.go +++ b/internal/acctest/acctest.go @@ -1121,7 +1121,7 @@ func PreCheckOrganizationsTrustedServicePrincipalAccess(ctx context.Context, t * } } } - t.Skipf("skipping tests; The AWS Organization service %s must be enabled on AWS Organization", servicePrincipal) + t.Skipf("skipping tests; The AWS Organization service principal trusted access for %s must be enabled.", servicePrincipal) } func PreCheckOrganizationsEnabledWithProvider(ctx context.Context, t *testing.T, providerF ProviderFunc) *organizationstypes.Organization { diff --git a/website/docs/r/iam_organization_features.html.markdown b/website/docs/r/iam_organization_features.html.markdown index 84b3760be2d..110de505444 100644 --- a/website/docs/r/iam_organization_features.html.markdown +++ b/website/docs/r/iam_organization_features.html.markdown @@ -22,7 +22,7 @@ resource "aws_organizations_organization" "example" { resource "aws_iam_organization_features" "example" { features = [ - "RootCredentialsManagement", + "RootCredentialsManagement", "RootSessions" ] } From 73669dac20de990ae8e2f1f2c8d603e969a0ab31 Mon Sep 17 00:00:00 2001 From: Alex Bacchin Date: Mon, 18 Nov 2024 22:21:14 +1100 Subject: [PATCH 008/118] consmetic --- internal/service/iam/organization_features.go | 1 - 1 file changed, 1 deletion(-) diff --git a/internal/service/iam/organization_features.go b/internal/service/iam/organization_features.go index e458bd71f48..bc2b6284382 100644 --- a/internal/service/iam/organization_features.go +++ b/internal/service/iam/organization_features.go @@ -22,7 +22,6 @@ import ( "github.com/hashicorp/terraform-provider-aws/names" ) -// Function annotations are used for resource registration to the Provider. DO NOT EDIT. // @FrameworkResource("aws_iam_organization_features", name="Organization Features") func newResourceOrganizationFeatures(_ context.Context) (resource.ResourceWithConfigure, error) { r := &resourceOrganizationFeatures{} From 03fa768e2d973d448800de8cfb4186100810bb33 Mon Sep 17 00:00:00 2001 From: Daniel Quackenbush <25692880+danquack@users.noreply.github.com> Date: Mon, 18 Nov 2024 12:50:02 -0500 Subject: [PATCH 009/118] :bug: EKS and ECS Properties causes nil pointer --- .changelog/40172.txt | 3 + internal/service/batch/eks_properties.go | 166 +++++++++++++ internal/service/batch/eks_properties_test.go | 221 ++++++++++++++++++ internal/service/batch/exports_test.go | 1 + internal/service/batch/job_definition.go | 4 +- internal/service/batch/job_definition_test.go | 194 +++++++++++++++ internal/service/batch/node_properties.go | 19 +- .../service/batch/node_properties_test.go | 62 +++++ 8 files changed, 665 insertions(+), 5 deletions(-) create mode 100644 .changelog/40172.txt create mode 100644 internal/service/batch/eks_properties.go create mode 100644 internal/service/batch/eks_properties_test.go diff --git a/.changelog/40172.txt b/.changelog/40172.txt new file mode 100644 index 00000000000..6041c94835c --- /dev/null +++ b/.changelog/40172.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_batch_job_definition: Fix crash when specifying `eksProperties` or `ecsProperties` block +``` diff --git a/internal/service/batch/eks_properties.go b/internal/service/batch/eks_properties.go new file mode 100644 index 00000000000..0d9f98c5c4a --- /dev/null +++ b/internal/service/batch/eks_properties.go @@ -0,0 +1,166 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package batch + +import ( + "cmp" + "slices" + _ "unsafe" // Required for go:linkname + + "github.com/aws/aws-sdk-go-v2/aws" + _ "github.com/aws/aws-sdk-go-v2/service/batch" // Required for go:linkname + awstypes "github.com/aws/aws-sdk-go-v2/service/batch/types" + smithyjson "github.com/aws/smithy-go/encoding/json" + tfjson "github.com/hashicorp/terraform-provider-aws/internal/json" + tfslices "github.com/hashicorp/terraform-provider-aws/internal/slices" +) + +type eksProperties awstypes.EksProperties + +func (ep *eksProperties) reduce() { + if ep.PodProperties == nil { + return + } + ep.orderContainers() + ep.orderEnvironmentVariables() + + // Set all empty slices to nil. + if len(ep.PodProperties.Containers) == 0 { + ep.PodProperties.Containers = nil + } else { + for j, container := range ep.PodProperties.Containers { + if len(container.Args) == 0 { + container.Args = nil + } + if len(container.Command) == 0 { + container.Command = nil + } + if len(container.Env) == 0 { + container.Env = nil + } + if len(container.VolumeMounts) == 0 { + container.VolumeMounts = nil + } + ep.PodProperties.Containers[j] = container + } + } + if len(ep.PodProperties.InitContainers) == 0 { + ep.PodProperties.InitContainers = nil + } else { + for j, container := range ep.PodProperties.InitContainers { + if len(container.Args) == 0 { + container.Args = nil + } + if len(container.Command) == 0 { + container.Command = nil + } + if len(container.Env) == 0 { + container.Env = nil + } + if len(container.VolumeMounts) == 0 { + container.VolumeMounts = nil + } + ep.PodProperties.InitContainers[j] = container + } + } + if ep.PodProperties.DnsPolicy == nil { + ep.PodProperties.DnsPolicy = aws.String("ClusterFirst") + } + if ep.PodProperties.HostNetwork == nil { + ep.PodProperties.HostNetwork = aws.Bool(true) + } + if len(ep.PodProperties.Volumes) == 0 { + ep.PodProperties.Volumes = nil + } + if len(ep.PodProperties.ImagePullSecrets) == 0 { + ep.PodProperties.ImagePullSecrets = nil + } +} + +func (ep *eksProperties) orderContainers() { + slices.SortFunc(ep.PodProperties.Containers, func(a, b awstypes.EksContainer) int { + return cmp.Compare(aws.ToString(a.Name), aws.ToString(b.Name)) + }) +} + +func (ep *eksProperties) orderEnvironmentVariables() { + for j, container := range ep.PodProperties.Containers { + // Remove environment variables with empty values. + container.Env = tfslices.Filter(container.Env, func(kvp awstypes.EksContainerEnvironmentVariable) bool { + return aws.ToString(kvp.Value) != "" + }) + + slices.SortFunc(container.Env, func(a, b awstypes.EksContainerEnvironmentVariable) int { + return cmp.Compare(aws.ToString(a.Name), aws.ToString(b.Name)) + }) + + ep.PodProperties.Containers[j].Env = container.Env + } + +} + +func equivalentEKSPropertiesJSON(str1, str2 string) (bool, error) { + if str1 == "" { + str1 = "{}" + } + + if str2 == "" { + str2 = "{}" + } + + var ep1 eksProperties + err := tfjson.DecodeFromString(str1, &ep1) + if err != nil { + return false, err + } + ep1.reduce() + b1, err := tfjson.EncodeToBytes(ep1) + if err != nil { + return false, err + } + + var ep2 eksProperties + err = tfjson.DecodeFromString(str2, &ep2) + if err != nil { + return false, err + } + ep2.reduce() + b2, err := tfjson.EncodeToBytes(ep2) + if err != nil { + return false, err + } + + return tfjson.EqualBytes(b1, b2), nil +} + +func expandEKSProperties(tfString string) (*awstypes.EksProperties, error) { + apiObject := &awstypes.EksProperties{} + + if err := tfjson.DecodeFromString(tfString, apiObject); err != nil { + return nil, err + } + + return apiObject, nil +} + +// Dirty hack to avoid any backwards compatibility issues with the AWS SDK for Go v2 migration. +// Reach down into the SDK and use the same serialization function that the SDK uses. +// +//go:linkname serializeEKSPProperties github.com/aws/aws-sdk-go-v2/service/batch.awsRestjson1_serializeDocumentEksProperties +func serializeEKSPProperties(v *awstypes.EksProperties, value smithyjson.Value) error + +func flattenEKSroperties(apiObject *awstypes.EksProperties) (string, error) { + if apiObject == nil { + return "", nil + } + + jsonEncoder := smithyjson.NewEncoder() + err := serializeEKSPProperties(apiObject, jsonEncoder.Value) + + if err != nil { + return "", err + } + + return jsonEncoder.String(), nil +} diff --git a/internal/service/batch/eks_properties_test.go b/internal/service/batch/eks_properties_test.go new file mode 100644 index 00000000000..f8633cf400a --- /dev/null +++ b/internal/service/batch/eks_properties_test.go @@ -0,0 +1,221 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package batch_test + +import ( + "testing" + + "github.com/google/go-cmp/cmp" + "github.com/hashicorp/terraform-provider-aws/internal/acctest/jsoncmp" + tfbatch "github.com/hashicorp/terraform-provider-aws/internal/service/batch" +) + +func TestEquivalentEKSPropertiesJSON(t *testing.T) { + t.Parallel() + + testCases := map[string]struct { + apiJSON string + configurationJSON string + wantEquivalent bool + wantErr bool + }{ + "empty": { + apiJSON: ``, + configurationJSON: ``, + wantEquivalent: true, + }, + "reordered containers": { + apiJSON: ` + { + "podProperties": { + "containers": [ + { + "name": "container1", + "image": "my_ecr_image1" + }, + { + "name": "container2", + "image": "my_ecr_image2" + } + ] + } + } + `, + configurationJSON: ` + { + "podProperties": { + "containers": [ + { + "name": "container2", + "image": "my_ecr_image2" + }, + { + "name": "container1", + "image": "my_ecr_image1" + } + ] + } + } + `, + wantEquivalent: true, + }, + "reordered environment": { + apiJSON: ` + { + "podProperties": { + "containers": [ + { + "name": "container1", + "image": "my_ecr_image1", + "env": [ + { + "name": "VARNAME1", + "value": "VARVAL1" + }, + { + "name": "VARNAME2", + "value": "VARVAL2" + } + ] + }, + { + "name": "container2", + "image": "my_ecr_image2", + "env": [] + } + ] + } + } + `, + configurationJSON: ` + { + "podProperties": { + "containers": [ + { + "name": "container1", + "image": "my_ecr_image1", + "env": [ + { + "name": "VARNAME2", + "value": "VARVAL2" + }, + { + "name": "VARNAME1", + "value": "VARVAL1" + } + ] + }, + { + "name": "container2", + "image": "my_ecr_image2" + } + ] + } + } + `, + wantEquivalent: true, + }, + "full": { + apiJSON: ` + { + "podProperties": { + "containers": [ + { + "command": ["sleep", "60"], + "env": [ + { + "name": "test", + "value": "Environment Variable" + } + ], + "image": "public.ecr.aws/amazonlinux/amazonlinux:1", + "volumeMounts": [], + "name": "container_a", + "resources": { + "requests": { + "cpu": "1.0", + "memory": "2048" + } + } + }, + { + "command": ["sleep", "360"], + "env": [], + "image": "public.ecr.aws/amazonlinux/amazonlinux:1", + "volumeMounts": [], + "name": "container_b", + "resources": { + "requests": { + "cpu": "1.0", + "memory": "2048" + } + } + } + ], + "volumes": [] + } + } + `, + configurationJSON: ` + { + "podProperties": { + "containers": [ + { + "command": ["sleep", "60"], + "env": [ + { + "name": "test", + "value": "Environment Variable" + } + ], + "image": "public.ecr.aws/amazonlinux/amazonlinux:1", + "name": "container_a", + "resources": { + "requests": { + "cpu": "1.0", + "memory": "2048" + } + } + }, + { + "command": ["sleep", "360"], + "image": "public.ecr.aws/amazonlinux/amazonlinux:1", + "name": "container_b", + "resources": { + "requests": { + "cpu": "1.0", + "memory": "2048" + } + } + } + ] + } + } + `, + wantEquivalent: true, + }, + } + + for name, testCase := range testCases { + t.Run(name, func(t *testing.T) { + t.Parallel() + + output, err := tfbatch.EquivalentEKSPropertiesJSON(testCase.configurationJSON, testCase.apiJSON) + if got, want := err != nil, testCase.wantErr; !cmp.Equal(got, want) { + t.Errorf("EquivalentEKSPropertiesJSON err %t, want %t", got, want) + } + + if err == nil { + if got, want := output, testCase.wantEquivalent; !cmp.Equal(got, want) { + t.Errorf("EquivalentEKSPropertiesJSON equivalent %t, want %t", got, want) + if want { + if diff := jsoncmp.Diff(testCase.configurationJSON, testCase.apiJSON); diff != "" { + t.Errorf("unexpected diff (+wanted, -got): %s", diff) + } + } + } + } + }) + } +} diff --git a/internal/service/batch/exports_test.go b/internal/service/batch/exports_test.go index 76b02713eb3..15efdbeb904 100644 --- a/internal/service/batch/exports_test.go +++ b/internal/service/batch/exports_test.go @@ -12,6 +12,7 @@ var ( EquivalentContainerPropertiesJSON = equivalentContainerPropertiesJSON EquivalentECSPropertiesJSON = equivalentECSPropertiesJSON + EquivalentEKSPropertiesJSON = equivalentEKSPropertiesJSON EquivalentNodePropertiesJSON = equivalentNodePropertiesJSON ExpandEC2ConfigurationsUpdate = expandEC2ConfigurationsUpdate ExpandLaunchTemplateSpecificationUpdate = expandLaunchTemplateSpecificationUpdate diff --git a/internal/service/batch/job_definition.go b/internal/service/batch/job_definition.go index 0823b3b0f76..ed591698a20 100644 --- a/internal/service/batch/job_definition.go +++ b/internal/service/batch/job_definition.go @@ -790,7 +790,9 @@ func resourceJobDefinitionCreate(ctx context.Context, d *schema.ResourceData, me } for _, node := range props.NodeRangeProperties { - diags = append(diags, removeEmptyEnvironmentVariables(node.Container.Environment, cty.GetAttrPath("node_properties"))...) + if node.Container != nil { + diags = append(diags, removeEmptyEnvironmentVariables(node.Container.Environment, cty.GetAttrPath("node_properties"))...) + } } input.NodeProperties = props } diff --git a/internal/service/batch/job_definition_test.go b/internal/service/batch/job_definition_test.go index 07bada9a3b3..531ee12d5f9 100644 --- a/internal/service/batch/job_definition_test.go +++ b/internal/service/batch/job_definition_test.go @@ -775,6 +775,102 @@ func TestAccBatchJobDefinition_NodeProperties_advanced(t *testing.T) { }) } +func TestAccBatchJobDefinition_NodeProperties_withEKS(t *testing.T) { + ctx := acctest.Context(t) + var jd awstypes.JobDefinition + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_batch_job_definition.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BatchServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckJobDefinitionDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccJobDefinitionConfig_nodePropertiesEKS(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckJobDefinitionExists(ctx, resourceName, &jd), + acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), + acctest.CheckResourceAttrEquivalentJSON(resourceName, "node_properties", `{ + "mainNode": 0, + "nodeRangeProperties": [ + { + "eksProperties": { + "podProperties": { + "containers": [ + { + "args": [], + "command": ["sleep", "60"], + "env": [], + "image": "public.ecr.aws/amazonlinux/amazonlinux = 2", + "name": "test-eks-container-1", + "resources": { "requests": { "memory": "1024Mi", "cpu": "1" } }, + "securityContext": { + "privileged": true, + "readOnlyRootFilesystem": true, + "runAsGroup": 3000, + "runAsNonRoot": true, + "runAsUser": 1000 + }, + "volumeMounts": [] + } + ], + "imagePullSecrets": [], + "initContainers": [], + "volumes": [] + } + }, + "instanceTypes": [], + "targetNodes": "0:" + } + ], + "numNodes": 1 + }`), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "deregister_on_new_revision", + }, + }, + }, + }) +} + +func TestAccBatchJobDefinition_NodeProperties_withECS(t *testing.T) { + ctx := acctest.Context(t) + var jd awstypes.JobDefinition + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_batch_job_definition.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.BatchServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckJobDefinitionDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccJobDefinitionConfig_nodePropertiesECS(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckJobDefinitionExists(ctx, resourceName, &jd), + acctest.MatchResourceAttrRegionalARN(resourceName, names.AttrARN, "batch", regexache.MustCompile(fmt.Sprintf(`job-definition/%s:\d+`, rName))), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "deregister_on_new_revision", + }, + }, + }, + }) +} func TestAccBatchJobDefinition_EKSProperties_basic(t *testing.T) { ctx := acctest.Context(t) var jd awstypes.JobDefinition @@ -1368,6 +1464,104 @@ CONTAINER_PROPERTIES `, rName) } +func testAccJobDefinitionConfig_nodePropertiesEKS(rName string) string { + return fmt.Sprintf(` +resource "aws_batch_job_definition" "test" { + name = %[1]q + type = "multinode" + retry_strategy { + attempts = 1 + } + + node_properties = jsonencode({ + mainNode = 0 + numNodes = 1 + nodeRangeProperties = [{ + targetNodes = "0:" + eksProperties = { + podProperties = { + containers = [ + { + name = "test-eks-container-1" + image = "public.ecr.aws/amazonlinux/amazonlinux = 2" + command = [ + "sleep", + "60" + ] + resources = { + requests = { + memory = "1024Mi" + cpu = "1" + } + } + securityContext = { + "runAsUser" = 1000 + "runAsGroup" = 3000 + "privileged" = true + "readOnlyRootFilesystem" = true + "runAsNonRoot" = true + } + } + ] + } + } + }] + }) +} + `, rName) +} + +func testAccJobDefinitionConfig_nodePropertiesECS(rName string) string { + return fmt.Sprintf(` +resource "aws_batch_job_definition" "test" { + name = %[1]q + type = "multinode" + retry_strategy { + attempts = 1 + } + + node_properties = jsonencode({ + mainNode = 0 + numNodes = 1 + nodeRangeProperties = [{ + targetNodes = "0:" + ecsProperties = { + taskProperties = [{ + containers = [{ + image = "public.ecr.aws/amazonlinux/amazonlinux:1" + command = ["sleep", "60"] + name = "container_a" + privileged = false + resourceRequirements = [{ + value = "1" + type = "VCPU" + }, + { + value = "2048" + type = "MEMORY" + }] + }, + { + image = "public.ecr.aws/amazonlinux/amazonlinux:1" + command = ["sleep", "360"] + name = "container_b" + resourceRequirements = [{ + value = "1" + type = "VCPU" + }, + { + value = "2048" + type = "MEMORY" + }] + }] + }] + } + }] + }) +} +`, rName) +} + func testAccJobDefinitionConfig_containerProperties(rName, subcommand string) string { return acctest.ConfigCompose( acctest.ConfigLambdaBase(rName, rName, rName), diff --git a/internal/service/batch/node_properties.go b/internal/service/batch/node_properties.go index db18d473466..95201a367a6 100644 --- a/internal/service/batch/node_properties.go +++ b/internal/service/batch/node_properties.go @@ -15,18 +15,29 @@ import ( type nodeProperties struct { MainNode *int64 NodeRangeProperties []*nodeRangeProperty - NumNodes *int64 + + NumNodes *int64 } type nodeRangeProperty struct { - Container *containerProperties - TargetNodes *string + Container *containerProperties + EcsProperties *ecsProperties + EKSProperties *eksProperties + TargetNodes *string } func (np *nodeProperties) reduce() { // Deal with Environment objects which may be re-ordered in the API. for _, node := range np.NodeRangeProperties { - node.Container.reduce() + if node.Container != nil { + node.Container.reduce() + } + if node.EcsProperties != nil { + node.EcsProperties.reduce() + } + if node.EKSProperties != nil { + node.EKSProperties.reduce() + } } } diff --git a/internal/service/batch/node_properties_test.go b/internal/service/batch/node_properties_test.go index 67a6c3eb35c..1a8a4f9267c 100644 --- a/internal/service/batch/node_properties_test.go +++ b/internal/service/batch/node_properties_test.go @@ -131,6 +131,68 @@ func TestEquivalentNodePropertiesJSON(t *testing.T) { ], "numNodes": 2 } +`, + wantEquivalent: true, + }, + "Single node ECS Properties with multiple containers": { + apiJSON: ` +{ + "mainNode": 1, + "nodeRangeProperties": [ + { + "ecsProperties": { + "taskProperties": [ + { + "containers": [ + { + "name": "container1", + "image": "my_ecr_image1" + }, + { + "name": "container2", + "image": "my_ecr_image2" + } + ] + } + ] + }, + "targetNodes": "0:", + "environment": [], + "mountPoints": [] + } + ], + "numNodes": 1 +} +`, + configurationJSON: ` +{ + "mainNode": 1, + "nodeRangeProperties": [ + { + "ecsProperties": { + "taskProperties": [ + { + "containers": [ + { + "name": "container2", + "image": "my_ecr_image2" + }, + { + "name": "container1", + "image": "my_ecr_image1" + } + ] + } + ] + }, + "targetNodes": "0:", + "environment": [], + "mountPoints": [] + } + ], + "numNodes": 1 +} + `, wantEquivalent: true, }, From e4f047ff9c735c69d2bd5d2329144f55ecc0f8cf Mon Sep 17 00:00:00 2001 From: Daniel Quackenbush <25692880+danquack@users.noreply.github.com> Date: Mon, 18 Nov 2024 13:39:19 -0500 Subject: [PATCH 010/118] :broom: linting --- internal/service/batch/job_definition_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/service/batch/job_definition_test.go b/internal/service/batch/job_definition_test.go index 531ee12d5f9..06e625e2315 100644 --- a/internal/service/batch/job_definition_test.go +++ b/internal/service/batch/job_definition_test.go @@ -1535,8 +1535,8 @@ resource "aws_batch_job_definition" "test" { resourceRequirements = [{ value = "1" type = "VCPU" - }, - { + }, + { value = "2048" type = "MEMORY" }] From bc5a3d8dbe6e7c52ee6230ddf8b941536ef2685e Mon Sep 17 00:00:00 2001 From: Daniel Quackenbush <25692880+danquack@users.noreply.github.com> Date: Mon, 18 Nov 2024 14:43:38 -0500 Subject: [PATCH 011/118] :broom: remove unused functions --- internal/service/batch/eks_properties.go | 32 ------------------------ 1 file changed, 32 deletions(-) diff --git a/internal/service/batch/eks_properties.go b/internal/service/batch/eks_properties.go index 0d9f98c5c4a..8c6f5e1bbcf 100644 --- a/internal/service/batch/eks_properties.go +++ b/internal/service/batch/eks_properties.go @@ -11,7 +11,6 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" _ "github.com/aws/aws-sdk-go-v2/service/batch" // Required for go:linkname awstypes "github.com/aws/aws-sdk-go-v2/service/batch/types" - smithyjson "github.com/aws/smithy-go/encoding/json" tfjson "github.com/hashicorp/terraform-provider-aws/internal/json" tfslices "github.com/hashicorp/terraform-provider-aws/internal/slices" ) @@ -133,34 +132,3 @@ func equivalentEKSPropertiesJSON(str1, str2 string) (bool, error) { return tfjson.EqualBytes(b1, b2), nil } - -func expandEKSProperties(tfString string) (*awstypes.EksProperties, error) { - apiObject := &awstypes.EksProperties{} - - if err := tfjson.DecodeFromString(tfString, apiObject); err != nil { - return nil, err - } - - return apiObject, nil -} - -// Dirty hack to avoid any backwards compatibility issues with the AWS SDK for Go v2 migration. -// Reach down into the SDK and use the same serialization function that the SDK uses. -// -//go:linkname serializeEKSPProperties github.com/aws/aws-sdk-go-v2/service/batch.awsRestjson1_serializeDocumentEksProperties -func serializeEKSPProperties(v *awstypes.EksProperties, value smithyjson.Value) error - -func flattenEKSroperties(apiObject *awstypes.EksProperties) (string, error) { - if apiObject == nil { - return "", nil - } - - jsonEncoder := smithyjson.NewEncoder() - err := serializeEKSPProperties(apiObject, jsonEncoder.Value) - - if err != nil { - return "", err - } - - return jsonEncoder.String(), nil -} From d8b0e7ca5b8040fc359f3da41871cb66da017211 Mon Sep 17 00:00:00 2001 From: Alex Bacchin Date: Tue, 19 Nov 2024 19:58:54 +1100 Subject: [PATCH 012/118] added additional validation and tests --- internal/service/iam/organization_features.go | 1 + internal/service/iam/organization_features_test.go | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/internal/service/iam/organization_features.go b/internal/service/iam/organization_features.go index bc2b6284382..fc2b8a4cf36 100644 --- a/internal/service/iam/organization_features.go +++ b/internal/service/iam/organization_features.go @@ -50,6 +50,7 @@ func (r *resourceOrganizationFeatures) Schema(ctx context.Context, req resource. ElementType: types.StringType, Required: true, Validators: []validator.Set{ + setvalidator.SizeAtLeast(1), setvalidator.ValueStringsAre( enum.FrameworkValidate[awstypes.FeatureType](), ), diff --git a/internal/service/iam/organization_features_test.go b/internal/service/iam/organization_features_test.go index 04ae12ddc1a..cf46f21570f 100644 --- a/internal/service/iam/organization_features_test.go +++ b/internal/service/iam/organization_features_test.go @@ -39,6 +39,8 @@ func TestAccIAMOrganizationFeatures_basic(t *testing.T) { Config: testAccOrganizationFeaturesConfig_basic([]string{"RootCredentialsManagement", "RootSessions"}), Check: resource.ComposeTestCheckFunc( testAccCheckOrganizationFeaturesExists(ctx, resourceName, &organizationfeatures), + resource.TestCheckResourceAttr(resourceName, "features.0", "RootCredentialsManagement"), + resource.TestCheckResourceAttr(resourceName, "features.1", "RootSessions"), ), }, { @@ -50,6 +52,18 @@ func TestAccIAMOrganizationFeatures_basic(t *testing.T) { Config: testAccOrganizationFeaturesConfig_basic([]string{"RootCredentialsManagement"}), Check: resource.ComposeTestCheckFunc( testAccCheckOrganizationFeaturesExists(ctx, resourceName, &organizationfeatures), + resource.TestCheckResourceAttr(resourceName, "features.0", "RootCredentialsManagement"), + ), + }, { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: false, + }, + { + Config: testAccOrganizationFeaturesConfig_basic([]string{"RootSessions"}), + Check: resource.ComposeTestCheckFunc( + testAccCheckOrganizationFeaturesExists(ctx, resourceName, &organizationfeatures), + resource.TestCheckResourceAttr(resourceName, "features.0", "RootSessions"), ), }, }, From 74e0c2af5278bc3650e84d14e5fbf8a700b52210 Mon Sep 17 00:00:00 2001 From: Daniel Quackenbush <25692880+danquack@users.noreply.github.com> Date: Tue, 19 Nov 2024 09:20:16 -0500 Subject: [PATCH 013/118] :broom: remove single line --- internal/service/batch/eks_properties.go | 1 - 1 file changed, 1 deletion(-) diff --git a/internal/service/batch/eks_properties.go b/internal/service/batch/eks_properties.go index 8c6f5e1bbcf..71e94def5d1 100644 --- a/internal/service/batch/eks_properties.go +++ b/internal/service/batch/eks_properties.go @@ -96,7 +96,6 @@ func (ep *eksProperties) orderEnvironmentVariables() { ep.PodProperties.Containers[j].Env = container.Env } - } func equivalentEKSPropertiesJSON(str1, str2 string) (bool, error) { From e1e41eae696b7697ecf6d508802fc7c123868ded Mon Sep 17 00:00:00 2001 From: Sasi Date: Tue, 29 Oct 2024 22:41:10 -0400 Subject: [PATCH 014/118] Add Valkey engine support for memorydb resources --- internal/service/memorydb/cluster.go | 11 ++ .../service/memorydb/cluster_data_source.go | 5 + .../memorydb/cluster_data_source_test.go | 2 + internal/service/memorydb/cluster_test.go | 140 +++++++++++++++++- internal/service/memorydb/snapshot.go | 5 + internal/service/memorydb/snapshot_test.go | 2 + website/docs/d/memorydb_cluster.html.markdown | 1 + website/docs/r/memorydb_cluster.html.markdown | 2 + .../docs/r/memorydb_snapshot.html.markdown | 1 + 9 files changed, 165 insertions(+), 4 deletions(-) diff --git a/internal/service/memorydb/cluster.go b/internal/service/memorydb/cluster.go index 57542e6c863..85e730f8536 100644 --- a/internal/service/memorydb/cluster.go +++ b/internal/service/memorydb/cluster.go @@ -80,6 +80,14 @@ func resourceCluster() *schema.Resource { Type: schema.TypeString, Computed: true, }, + names.AttrEngine: { + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringInSlice([]string{ + "redis", + "valkey", + }, false), + }, names.AttrEngineVersion: { Type: schema.TypeString, Optional: true, @@ -282,6 +290,7 @@ func resourceClusterCreate(ctx context.Context, d *schema.ResourceData, meta int ACLName: aws.String(d.Get("acl_name").(string)), AutoMinorVersionUpgrade: aws.Bool(d.Get(names.AttrAutoMinorVersionUpgrade).(bool)), ClusterName: aws.String(name), + Engine: aws.String(d.Get(names.AttrEngine).(string)), NodeType: aws.String(d.Get("node_type").(string)), NumReplicasPerShard: aws.Int32(int32(d.Get("num_replicas_per_shard").(int))), NumShards: aws.Int32(int32(d.Get("num_shards").(int))), @@ -375,6 +384,7 @@ func resourceClusterUpdate(ctx context.Context, d *schema.ResourceData, meta int input := &memorydb.UpdateClusterInput{ ClusterName: aws.String(d.Id()), + Engine: aws.String(d.Get(names.AttrEngine).(string)), } if d.HasChange("acl_name") { @@ -513,6 +523,7 @@ func resourceClusterRead(ctx context.Context, d *schema.ResourceData, meta inter d.Set(names.AttrDescription, cluster.Description) d.Set("engine_patch_version", cluster.EnginePatchVersion) + d.Set(names.AttrEngine, cluster.Engine) d.Set(names.AttrEngineVersion, cluster.EngineVersion) d.Set(names.AttrKMSKeyARN, cluster.KmsKeyId) // KmsKeyId is actually an ARN here. d.Set("maintenance_window", cluster.MaintenanceWindow) diff --git a/internal/service/memorydb/cluster_data_source.go b/internal/service/memorydb/cluster_data_source.go index 2c8d926670b..25851fb6448 100644 --- a/internal/service/memorydb/cluster_data_source.go +++ b/internal/service/memorydb/cluster_data_source.go @@ -49,6 +49,10 @@ func dataSourceCluster() *schema.Resource { Type: schema.TypeString, Computed: true, }, + names.AttrEngine: { + Type: schema.TypeString, + Computed: true, + }, names.AttrEngineVersion: { Type: schema.TypeString, Computed: true, @@ -200,6 +204,7 @@ func dataSourceClusterRead(ctx context.Context, d *schema.ResourceData, meta int d.Set(names.AttrDescription, cluster.Description) d.Set("engine_patch_version", cluster.EnginePatchVersion) + d.Set(names.AttrEngine, cluster.Engine) d.Set(names.AttrEngineVersion, cluster.EngineVersion) d.Set(names.AttrKMSKeyARN, cluster.KmsKeyId) // KmsKeyId is actually an ARN here. d.Set("maintenance_window", cluster.MaintenanceWindow) diff --git a/internal/service/memorydb/cluster_data_source_test.go b/internal/service/memorydb/cluster_data_source_test.go index 8c07f74552d..0929a6d42c4 100644 --- a/internal/service/memorydb/cluster_data_source_test.go +++ b/internal/service/memorydb/cluster_data_source_test.go @@ -35,6 +35,7 @@ func TestAccMemoryDBClusterDataSource_basic(t *testing.T) { resource.TestCheckResourceAttrPair(dataSourceName, "data_tiering", resourceName, "data_tiering"), resource.TestCheckResourceAttrPair(dataSourceName, names.AttrDescription, resourceName, names.AttrDescription), resource.TestCheckResourceAttrPair(dataSourceName, "engine_patch_version", resourceName, "engine_patch_version"), + resource.TestCheckResourceAttrPair(dataSourceName, names.AttrEngine, resourceName, names.AttrEngine), resource.TestCheckResourceAttrPair(dataSourceName, names.AttrEngineVersion, resourceName, names.AttrEngineVersion), resource.TestCheckResourceAttrPair(dataSourceName, names.AttrKMSKeyARN, resourceName, names.AttrKMSKeyARN), resource.TestCheckResourceAttrPair(dataSourceName, "maintenance_window", resourceName, "maintenance_window"), @@ -87,6 +88,7 @@ resource "aws_memorydb_cluster" "test" { auto_minor_version_upgrade = false kms_key_arn = aws_kms_key.test.arn name = %[1]q + engine = "valkey" node_type = "db.t4g.small" num_shards = 2 security_group_ids = [aws_security_group.test.id] diff --git a/internal/service/memorydb/cluster_test.go b/internal/service/memorydb/cluster_test.go index c5ce455a85b..d7fac813a2b 100644 --- a/internal/service/memorydb/cluster_test.go +++ b/internal/service/memorydb/cluster_test.go @@ -31,7 +31,7 @@ func TestAccMemoryDBCluster_basic(t *testing.T) { CheckDestroy: testAccCheckClusterDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccClusterConfig_basic(rName), + Config: testAccClusterConfig_basic(rName, "redis"), Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName), resource.TestCheckTypeSetElemAttrPair(resourceName, "acl_name", "aws_memorydb_acl.test", names.AttrID), @@ -42,6 +42,7 @@ func TestAccMemoryDBCluster_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "data_tiering", acctest.CtFalse), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Managed by Terraform"), resource.TestCheckResourceAttrSet(resourceName, "engine_patch_version"), + resource.TestCheckResourceAttr(resourceName, names.AttrEngine, "redis"), resource.TestCheckResourceAttrSet(resourceName, names.AttrEngineVersion), resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyARN, ""), resource.TestCheckResourceAttrSet(resourceName, "maintenance_window"), @@ -143,7 +144,7 @@ func TestAccMemoryDBCluster_disappears(t *testing.T) { CheckDestroy: testAccCheckClusterDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccClusterConfig_basic(rName), + Config: testAccClusterConfig_basic(rName, "redis"), Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName), acctest.CheckResourceDisappears(ctx, acctest.Provider, tfmemorydb.ResourceCluster(), resourceName), @@ -470,6 +471,46 @@ func TestAccMemoryDBCluster_Update_description(t *testing.T) { }) } +func TestAccMemoryDBCluster_Update_engine(t *testing.T) { + ctx := acctest.Context(t) + + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_memorydb_cluster.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(t) }, + ErrorCheck: acctest.ErrorCheck(t, names.MemoryDBServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckClusterDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccClusterConfig_basic(rName, "redis"), + Check: resource.ComposeTestCheckFunc( + testAccCheckClusterExists(ctx, resourceName), + resource.TestCheckResourceAttr(resourceName, names.AttrEngine, "redis"), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + Config: testAccClusterConfig_basic(rName, "valkey"), + Check: resource.ComposeTestCheckFunc( + testAccCheckClusterExists(ctx, resourceName), + resource.TestCheckResourceAttr(resourceName, names.AttrEngine, "valkey"), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + // As of writing, 6.2 is the one and only MemoryDB engine version available, // so we cannot check upgrade behaviour. // @@ -1060,6 +1101,69 @@ func TestAccMemoryDBCluster_Update_tags(t *testing.T) { }) } +func TestAccMemoryDBCluster_valkey(t *testing.T) { + ctx := acctest.Context(t) + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_memorydb_cluster.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(t) }, + ErrorCheck: acctest.ErrorCheck(t, names.MemoryDBServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckClusterDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccClusterConfig_basic(rName, "valkey"), + Check: resource.ComposeTestCheckFunc( + testAccCheckClusterExists(ctx, resourceName), + resource.TestCheckTypeSetElemAttrPair(resourceName, "acl_name", "aws_memorydb_acl.test", names.AttrID), + acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "memorydb", "cluster/"+rName), + resource.TestCheckResourceAttr(resourceName, names.AttrAutoMinorVersionUpgrade, acctest.CtFalse), + resource.TestMatchResourceAttr(resourceName, "cluster_endpoint.0.address", regexache.MustCompile(`^clustercfg\..*?\.amazonaws\.com$`)), + resource.TestCheckResourceAttr(resourceName, "cluster_endpoint.0.port", "6379"), + resource.TestCheckResourceAttr(resourceName, "data_tiering", acctest.CtFalse), + resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "Managed by Terraform"), + resource.TestCheckResourceAttrSet(resourceName, "engine_patch_version"), + resource.TestCheckResourceAttr(resourceName, names.AttrEngine, "valkey"), + resource.TestCheckResourceAttrSet(resourceName, names.AttrEngineVersion), + resource.TestCheckResourceAttr(resourceName, names.AttrKMSKeyARN, ""), + resource.TestCheckResourceAttrSet(resourceName, "maintenance_window"), + resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), + resource.TestCheckResourceAttr(resourceName, "node_type", "db.t4g.small"), + resource.TestCheckResourceAttr(resourceName, "num_replicas_per_shard", acctest.Ct1), + resource.TestCheckResourceAttr(resourceName, "num_shards", acctest.Ct2), + resource.TestCheckResourceAttrSet(resourceName, names.AttrParameterGroupName), + resource.TestCheckResourceAttr(resourceName, names.AttrPort, "6379"), + resource.TestCheckResourceAttr(resourceName, "security_group_ids.#", acctest.Ct1), + resource.TestCheckTypeSetElemAttrPair(resourceName, "security_group_ids.*", "aws_security_group.test", names.AttrID), + resource.TestCheckResourceAttr(resourceName, "shards.#", acctest.Ct2), + resource.TestMatchResourceAttr(resourceName, "shards.0.name", regexache.MustCompile(`^000[12]$`)), + resource.TestCheckResourceAttr(resourceName, "shards.0.num_nodes", acctest.Ct2), + resource.TestCheckResourceAttr(resourceName, "shards.0.slots", "0-8191"), + resource.TestCheckResourceAttr(resourceName, "shards.0.nodes.#", acctest.Ct2), + resource.TestCheckResourceAttrSet(resourceName, "shards.0.nodes.0.availability_zone"), + acctest.CheckResourceAttrRFC3339(resourceName, "shards.0.nodes.0.create_time"), + resource.TestMatchResourceAttr(resourceName, "shards.0.nodes.0.name", regexache.MustCompile(`^`+rName+`-000[12]-00[12]$`)), + resource.TestMatchResourceAttr(resourceName, "shards.0.nodes.0.endpoint.0.address", regexache.MustCompile(`^`+rName+`-000[12]-00[12]\..*?\.amazonaws\.com$`)), + resource.TestCheckResourceAttr(resourceName, "shards.0.nodes.0.endpoint.0.port", "6379"), + resource.TestCheckResourceAttr(resourceName, "snapshot_retention_limit", "7"), + resource.TestCheckResourceAttrSet(resourceName, "snapshot_window"), + resource.TestCheckResourceAttr(resourceName, names.AttrSNSTopicARN, ""), + resource.TestCheckTypeSetElemAttrPair(resourceName, "subnet_group_name", "aws_memorydb_subnet_group.test", names.AttrID), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, acctest.Ct1), + resource.TestCheckResourceAttr(resourceName, "tags.Test", "test"), + resource.TestCheckResourceAttr(resourceName, "tls_enabled", acctest.CtTrue), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + func testAccCheckClusterDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { conn := acctest.Provider.Meta().(*conns.AWSClient).MemoryDBClient(ctx) @@ -1149,7 +1253,7 @@ resource "aws_memorydb_acl" "test" { `, rName) } -func testAccClusterConfig_basic(rName string) string { +func testAccClusterConfig_basic(rName, engine string) string { return acctest.ConfigCompose( testAccClusterConfig_baseNetwork(rName), testAccClusterConfigBaseUserAndACL(rName), @@ -1164,6 +1268,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = aws_memorydb_acl.test.id auto_minor_version_upgrade = false name = %[1]q + engine = %[2]q node_type = "db.t4g.small" num_shards = 2 security_group_ids = [aws_security_group.test.id] @@ -1174,7 +1279,7 @@ resource "aws_memorydb_cluster" "test" { Test = "test" } } -`, rName), +`, rName, engine), ) } @@ -1184,6 +1289,7 @@ func testAccClusterConfig_defaults(rName string) string { resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q + engine = "redis" node_type = "db.t4g.small" } `, rName), @@ -1197,6 +1303,7 @@ func testAccClusterConfig_noName(rName string) string { resource "aws_memorydb_cluster" "test" { acl_name = "open-access" node_type = "db.t4g.small" + engine = "redis" num_replicas_per_shard = 0 num_shards = 1 subnet_group_name = aws_memorydb_subnet_group.test.id @@ -1212,6 +1319,7 @@ func testAccClusterConfig_namePrefix(rName, prefix string) string { resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name_prefix = %[1]q + engine = "redis" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1228,6 +1336,7 @@ func testAccClusterConfig_noTLS(rName string) string { resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q + engine = "redis" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1247,6 +1356,7 @@ resource "aws_memorydb_cluster" "test" { depends_on = [aws_memorydb_acl.test] acl_name = %[2]q name = %[1]q + engine = "redis" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1264,6 +1374,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" data_tiering = true name = %[1]q + engine = "redis" node_type = "db.r6gd.xlarge" subnet_group_name = aws_memorydb_subnet_group.test.id } @@ -1279,6 +1390,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" description = %[2]q name = %[1]q + engine = "redis" node_type = "db.t4g.small" subnet_group_name = aws_memorydb_subnet_group.test.id } @@ -1293,6 +1405,7 @@ func testAccClusterConfig_engineVersionNull(rName string) string { resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q + engine = "redis" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1310,6 +1423,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" engine_version = %[2]q name = %[1]q + engine = "redis" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1327,6 +1441,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" final_snapshot_name = %[2]q name = %[1]q + engine = "redis" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1346,6 +1461,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" kms_key_arn = aws_kms_key.test.arn name = %[1]q + engine = "redis" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1363,6 +1479,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" maintenance_window = %[2]q name = %[1]q + engine = "redis" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1380,6 +1497,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q node_type = %[2]q + engine = "redis" num_replicas_per_shard = 0 num_shards = 1 subnet_group_name = aws_memorydb_subnet_group.test.id @@ -1395,6 +1513,7 @@ func testAccClusterConfig_numReplicasPerShard(rName string, numReplicasPerShard resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q + engine = "redis" node_type = "db.t4g.small" num_replicas_per_shard = %[2]d subnet_group_name = aws_memorydb_subnet_group.test.id @@ -1410,6 +1529,7 @@ func testAccClusterConfig_numShards(rName string, numShards int) string { resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q + engine = "redis" node_type = "db.t4g.small" num_shards = %[2]d subnet_group_name = aws_memorydb_subnet_group.test.id @@ -1441,6 +1561,7 @@ resource "aws_memorydb_cluster" "test" { depends_on = [aws_memorydb_parameter_group.test] acl_name = "open-access" name = %[1]q + engine = "redis" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1458,6 +1579,7 @@ func testAccClusterConfig_port(rName string, port int) string { resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q + engine = "redis" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1480,6 +1602,7 @@ resource "aws_security_group" "test" { resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q + engine = "redis" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1497,6 +1620,7 @@ func testAccClusterConfig_snapshotRetentionLimit(rName string, retentionLimit in resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q + engine = "redis" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1514,6 +1638,7 @@ func testAccClusterConfig_snapshotFrom(rName1, rName2 string) string { resource "aws_memorydb_cluster" "test1" { acl_name = "open-access" name = %[1]q + engine = "redis" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1527,6 +1652,7 @@ resource "aws_memorydb_snapshot" "test" { resource "aws_memorydb_cluster" "test2" { acl_name = "open-access" name = %[2]q + engine = "redis" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1544,6 +1670,7 @@ func testAccClusterConfig_snapshotWindow(rName, snapshotWindow string) string { resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q + engine = "redis" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1567,6 +1694,7 @@ resource "aws_memorydb_cluster" "test" { depends_on = [aws_sns_topic.test] acl_name = "open-access" name = %[1]q + engine = "redis" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1589,6 +1717,7 @@ resource "aws_memorydb_cluster" "test" { depends_on = [aws_sns_topic.test] acl_name = "open-access" name = %[1]q + engine = "redis" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1607,6 +1736,7 @@ func testAccClusterConfig_tags0(rName string) string { resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q + engine = "redis" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1623,6 +1753,7 @@ func testAccClusterConfig_tags1(rName, tag1Key, tag1Value string) string { resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q + engine = "redis" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1643,6 +1774,7 @@ func testAccClusterConfig_tags2(rName, tag1Key, tag1Value, tag2Key, tag2Value st resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q + engine = "redis" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 diff --git a/internal/service/memorydb/snapshot.go b/internal/service/memorydb/snapshot.go index 66598878d87..4d4b00578a8 100644 --- a/internal/service/memorydb/snapshot.go +++ b/internal/service/memorydb/snapshot.go @@ -57,6 +57,10 @@ func resourceSnapshot() *schema.Resource { Type: schema.TypeString, Computed: true, }, + names.AttrEngine: { + Type: schema.TypeString, + Computed: true, + }, names.AttrEngineVersion: { Type: schema.TypeString, Computed: true, @@ -248,6 +252,7 @@ func flattenClusterConfiguration(v *awstypes.ClusterConfiguration) []interface{} m := map[string]interface{}{ names.AttrDescription: aws.ToString(v.Description), + names.AttrEngine: aws.ToString(v.Engine), names.AttrEngineVersion: aws.ToString(v.EngineVersion), "maintenance_window": aws.ToString(v.MaintenanceWindow), names.AttrName: aws.ToString(v.Name), diff --git a/internal/service/memorydb/snapshot_test.go b/internal/service/memorydb/snapshot_test.go index 7ec40bc5aca..d7d6f8c781d 100644 --- a/internal/service/memorydb/snapshot_test.go +++ b/internal/service/memorydb/snapshot_test.go @@ -35,6 +35,7 @@ func TestAccMemoryDBSnapshot_basic(t *testing.T) { testAccCheckSnapshotExists(ctx, resourceName), acctest.CheckResourceAttrRegionalARN(resourceName, names.AttrARN, "memorydb", "snapshot/"+rName), resource.TestCheckTypeSetElemAttrPair(resourceName, "cluster_configuration.0.description", "aws_memorydb_cluster.test", names.AttrDescription), + resource.TestCheckTypeSetElemAttrPair(resourceName, "cluster_configuration.0.engine", "aws_memorydb_cluster.test", names.AttrEngine), resource.TestCheckTypeSetElemAttrPair(resourceName, "cluster_configuration.0.engine_version", "aws_memorydb_cluster.test", names.AttrEngineVersion), resource.TestCheckTypeSetElemAttrPair(resourceName, "cluster_configuration.0.maintenance_window", "aws_memorydb_cluster.test", "maintenance_window"), resource.TestCheckTypeSetElemAttrPair(resourceName, "cluster_configuration.0.name", "aws_memorydb_cluster.test", names.AttrName), @@ -295,6 +296,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q node_type = "db.t4g.small" + engine = "redis" num_replicas_per_shard = 0 num_shards = 1 security_group_ids = [aws_security_group.test.id] diff --git a/website/docs/d/memorydb_cluster.html.markdown b/website/docs/d/memorydb_cluster.html.markdown index f9294037af4..cb96d1257fa 100644 --- a/website/docs/d/memorydb_cluster.html.markdown +++ b/website/docs/d/memorydb_cluster.html.markdown @@ -38,6 +38,7 @@ This data source exports the following attributes in addition to the arguments a * `data_tiering` - True when data tiering is enabled. * `description` - Description for the cluster. * `engine_patch_version` - Patch version number of the Redis engine used by the cluster. +* `engine` - The engine that will run on cluster nodes. * `engine_version` - Version number of the Redis engine used by the cluster. * `final_snapshot_name` - Name of the final cluster snapshot to be created when this resource is deleted. If omitted, no final snapshot will be made. * `kms_key_arn` - ARN of the KMS key used to encrypt the cluster at rest. diff --git a/website/docs/r/memorydb_cluster.html.markdown b/website/docs/r/memorydb_cluster.html.markdown index f7a3900a994..553bc7aa001 100644 --- a/website/docs/r/memorydb_cluster.html.markdown +++ b/website/docs/r/memorydb_cluster.html.markdown @@ -19,6 +19,7 @@ resource "aws_memorydb_cluster" "example" { acl_name = "open-access" name = "my-cluster" node_type = "db.t4g.small" + engine = "redis" num_shards = 2 security_group_ids = [aws_security_group.example.id] snapshot_retention_limit = 7 @@ -31,6 +32,7 @@ resource "aws_memorydb_cluster" "example" { The following arguments are required: * `acl_name` - (Required) The name of the Access Control List to associate with the cluster. +* `engine` - (Required) The engine that will run on your nodes. Supported values are `redis` and `valkey`. * `node_type` - (Required) The compute and memory capacity of the nodes in the cluster. See AWS documentation on [supported node types](https://docs.aws.amazon.com/memorydb/latest/devguide/nodes.supportedtypes.html) as well as [vertical scaling](https://docs.aws.amazon.com/memorydb/latest/devguide/cluster-vertical-scaling.html). The following arguments are optional: diff --git a/website/docs/r/memorydb_snapshot.html.markdown b/website/docs/r/memorydb_snapshot.html.markdown index f251f483ea3..9ad19ba0fda 100644 --- a/website/docs/r/memorydb_snapshot.html.markdown +++ b/website/docs/r/memorydb_snapshot.html.markdown @@ -39,6 +39,7 @@ This resource exports the following attributes in addition to the arguments abov * `arn` - The ARN of the snapshot. * `cluster_configuration` - The configuration of the cluster from which the snapshot was taken. * `description` - Description for the cluster. + * `engine` - The engine that will run on cluster nodes. * `engine_version` - Version number of the Redis engine used by the cluster. * `maintenance_window` - The weekly time range during which maintenance on the cluster is performed. * `name` - Name of the cluster. From 4b2b61979da026a7cc8bd0703f9968282b2a0b23 Mon Sep 17 00:00:00 2001 From: Sasi Date: Tue, 29 Oct 2024 22:55:12 -0400 Subject: [PATCH 015/118] added changelog --- .changelog/39939.txt | 11 +++++++++++ website/docs/d/memorydb_cluster.html.markdown | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 .changelog/39939.txt diff --git a/.changelog/39939.txt b/.changelog/39939.txt new file mode 100644 index 00000000000..ad2c66a0ca0 --- /dev/null +++ b/.changelog/39939.txt @@ -0,0 +1,11 @@ +```release-note:enhancement +resource/memorydb_cluster: Add `engine` attribute. +``` + +```release-note:enhancement +resource/memorydb_snapshot: Add `engine` attribute in `cluster_configuration` attribute. +``` + +```release-note:enhancement +data-source/memorydb_cluster: Add `engine` attribute. +``` diff --git a/website/docs/d/memorydb_cluster.html.markdown b/website/docs/d/memorydb_cluster.html.markdown index cb96d1257fa..137a8143462 100644 --- a/website/docs/d/memorydb_cluster.html.markdown +++ b/website/docs/d/memorydb_cluster.html.markdown @@ -38,7 +38,7 @@ This data source exports the following attributes in addition to the arguments a * `data_tiering` - True when data tiering is enabled. * `description` - Description for the cluster. * `engine_patch_version` - Patch version number of the Redis engine used by the cluster. -* `engine` - The engine that will run on cluster nodes. +* `engine` - Engine that will run on cluster nodes. * `engine_version` - Version number of the Redis engine used by the cluster. * `final_snapshot_name` - Name of the final cluster snapshot to be created when this resource is deleted. If omitted, no final snapshot will be made. * `kms_key_arn` - ARN of the KMS key used to encrypt the cluster at rest. From 13f2aedca031ac7c5b854c97307e9d5f58f01bf2 Mon Sep 17 00:00:00 2001 From: Sasi Date: Thu, 31 Oct 2024 15:31:12 -0400 Subject: [PATCH 016/118] updated engine version as mandatory parameter --- internal/service/memorydb/cluster.go | 4 +- internal/service/memorydb/cluster_test.go | 128 +++++++--------------- 2 files changed, 38 insertions(+), 94 deletions(-) diff --git a/internal/service/memorydb/cluster.go b/internal/service/memorydb/cluster.go index 85e730f8536..d7a12e1867c 100644 --- a/internal/service/memorydb/cluster.go +++ b/internal/service/memorydb/cluster.go @@ -90,8 +90,7 @@ func resourceCluster() *schema.Resource { }, names.AttrEngineVersion: { Type: schema.TypeString, - Optional: true, - Computed: true, + Required: true, }, "final_snapshot_name": { Type: schema.TypeString, @@ -458,7 +457,6 @@ func resourceClusterUpdate(ctx context.Context, d *schema.ResourceData, meta int input.SnsTopicStatus = aws.String(ClusterSNSTopicStatusActive) } } - log.Printf("[DEBUG] Updating MemoryDB Cluster (%s)", d.Id()) _, err := conn.UpdateCluster(ctx, input) diff --git a/internal/service/memorydb/cluster_test.go b/internal/service/memorydb/cluster_test.go index d7fac813a2b..63b9859b74f 100644 --- a/internal/service/memorydb/cluster_test.go +++ b/internal/service/memorydb/cluster_test.go @@ -31,7 +31,7 @@ func TestAccMemoryDBCluster_basic(t *testing.T) { CheckDestroy: testAccCheckClusterDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccClusterConfig_basic(rName, "redis"), + Config: testAccClusterConfig_basic(rName, "redis", "7.1"), Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName), resource.TestCheckTypeSetElemAttrPair(resourceName, "acl_name", "aws_memorydb_acl.test", names.AttrID), @@ -144,7 +144,7 @@ func TestAccMemoryDBCluster_disappears(t *testing.T) { CheckDestroy: testAccCheckClusterDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccClusterConfig_basic(rName, "redis"), + Config: testAccClusterConfig_basic(rName, "redis", "7.1"), Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName), acctest.CheckResourceDisappears(ctx, acctest.Provider, tfmemorydb.ResourceCluster(), resourceName), @@ -484,7 +484,7 @@ func TestAccMemoryDBCluster_Update_engine(t *testing.T) { CheckDestroy: testAccCheckClusterDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccClusterConfig_basic(rName, "redis"), + Config: testAccClusterConfig_basic(rName, "redis", "7.1"), Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrEngine, "redis"), @@ -496,7 +496,7 @@ func TestAccMemoryDBCluster_Update_engine(t *testing.T) { ImportStateVerify: true, }, { - Config: testAccClusterConfig_basic(rName, "valkey"), + Config: testAccClusterConfig_basic(rName, "valkey", "7.2"), Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrEngine, "valkey"), @@ -511,51 +511,6 @@ func TestAccMemoryDBCluster_Update_engine(t *testing.T) { }) } -// As of writing, 6.2 is the one and only MemoryDB engine version available, -// so we cannot check upgrade behaviour. -// -// The API should allow upgrades with some unknown waiting time, and disallow -// downgrades. -func TestAccMemoryDBCluster_Update_engineVersion(t *testing.T) { - ctx := acctest.Context(t) - - rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) - resourceName := "aws_memorydb_cluster.test" - - resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(t) }, - ErrorCheck: acctest.ErrorCheck(t, names.MemoryDBServiceID), - ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, - CheckDestroy: testAccCheckClusterDestroy(ctx), - Steps: []resource.TestStep{ - { - Config: testAccClusterConfig_engineVersionNull(rName), - Check: resource.ComposeTestCheckFunc( - testAccCheckClusterExists(ctx, resourceName), - resource.TestCheckResourceAttrSet(resourceName, names.AttrEngineVersion), - ), - }, - { - ResourceName: resourceName, - ImportState: true, - ImportStateVerify: true, - }, - { - Config: testAccClusterConfig_engineVersion(rName, "7.1"), - Check: resource.ComposeTestCheckFunc( - testAccCheckClusterExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, names.AttrEngineVersion, "7.1"), - ), - }, - { - ResourceName: resourceName, - ImportState: true, - ImportStateVerify: true, - }, - }, - }) -} - func TestAccMemoryDBCluster_Update_maintenanceWindow(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -1113,7 +1068,7 @@ func TestAccMemoryDBCluster_valkey(t *testing.T) { CheckDestroy: testAccCheckClusterDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccClusterConfig_basic(rName, "valkey"), + Config: testAccClusterConfig_basic(rName, "valkey", "7.2"), Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName), resource.TestCheckTypeSetElemAttrPair(resourceName, "acl_name", "aws_memorydb_acl.test", names.AttrID), @@ -1253,7 +1208,7 @@ resource "aws_memorydb_acl" "test" { `, rName) } -func testAccClusterConfig_basic(rName, engine string) string { +func testAccClusterConfig_basic(rName, engine, engine_version string) string { return acctest.ConfigCompose( testAccClusterConfig_baseNetwork(rName), testAccClusterConfigBaseUserAndACL(rName), @@ -1269,6 +1224,7 @@ resource "aws_memorydb_cluster" "test" { auto_minor_version_upgrade = false name = %[1]q engine = %[2]q + engine_version = %[3]q node_type = "db.t4g.small" num_shards = 2 security_group_ids = [aws_security_group.test.id] @@ -1279,7 +1235,7 @@ resource "aws_memorydb_cluster" "test" { Test = "test" } } -`, rName, engine), +`, rName, engine, engine_version), ) } @@ -1287,10 +1243,11 @@ func testAccClusterConfig_defaults(rName string) string { return acctest.ConfigCompose( fmt.Sprintf(` resource "aws_memorydb_cluster" "test" { - acl_name = "open-access" - name = %[1]q - engine = "redis" - node_type = "db.t4g.small" + acl_name = "open-access" + name = %[1]q + engine = "redis" + engine_version = "7.1" + node_type = "db.t4g.small" } `, rName), ) @@ -1304,6 +1261,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" node_type = "db.t4g.small" engine = "redis" + engine_version = "7.1" num_replicas_per_shard = 0 num_shards = 1 subnet_group_name = aws_memorydb_subnet_group.test.id @@ -1320,6 +1278,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name_prefix = %[1]q engine = "redis" + engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1337,6 +1296,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q engine = "redis" + engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1357,6 +1317,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = %[2]q name = %[1]q engine = "redis" + engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1375,6 +1336,7 @@ resource "aws_memorydb_cluster" "test" { data_tiering = true name = %[1]q engine = "redis" + engine_version = "7.1" node_type = "db.r6gd.xlarge" subnet_group_name = aws_memorydb_subnet_group.test.id } @@ -1391,6 +1353,7 @@ resource "aws_memorydb_cluster" "test" { description = %[2]q name = %[1]q engine = "redis" + engine_version = "7.1" node_type = "db.t4g.small" subnet_group_name = aws_memorydb_subnet_group.test.id } @@ -1398,41 +1361,6 @@ resource "aws_memorydb_cluster" "test" { ) } -func testAccClusterConfig_engineVersionNull(rName string) string { - return acctest.ConfigCompose( - testAccClusterConfig_baseNetwork(rName), - fmt.Sprintf(` -resource "aws_memorydb_cluster" "test" { - acl_name = "open-access" - name = %[1]q - engine = "redis" - node_type = "db.t4g.small" - num_replicas_per_shard = 0 - num_shards = 1 - subnet_group_name = aws_memorydb_subnet_group.test.id -} -`, rName), - ) -} - -func testAccClusterConfig_engineVersion(rName, engineVersion string) string { - return acctest.ConfigCompose( - testAccClusterConfig_baseNetwork(rName), - fmt.Sprintf(` -resource "aws_memorydb_cluster" "test" { - acl_name = "open-access" - engine_version = %[2]q - name = %[1]q - engine = "redis" - node_type = "db.t4g.small" - num_replicas_per_shard = 0 - num_shards = 1 - subnet_group_name = aws_memorydb_subnet_group.test.id -} -`, rName, engineVersion), - ) -} - func testAccClusterConfig_finalSnapshotName(rName, finalSnapshotName string) string { return acctest.ConfigCompose( testAccClusterConfig_baseNetwork(rName), @@ -1442,6 +1370,7 @@ resource "aws_memorydb_cluster" "test" { final_snapshot_name = %[2]q name = %[1]q engine = "redis" + engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1462,6 +1391,7 @@ resource "aws_memorydb_cluster" "test" { kms_key_arn = aws_kms_key.test.arn name = %[1]q engine = "redis" + engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1480,6 +1410,7 @@ resource "aws_memorydb_cluster" "test" { maintenance_window = %[2]q name = %[1]q engine = "redis" + engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1498,6 +1429,7 @@ resource "aws_memorydb_cluster" "test" { name = %[1]q node_type = %[2]q engine = "redis" + engine_version = "7.1" num_replicas_per_shard = 0 num_shards = 1 subnet_group_name = aws_memorydb_subnet_group.test.id @@ -1514,6 +1446,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q engine = "redis" + engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = %[2]d subnet_group_name = aws_memorydb_subnet_group.test.id @@ -1530,6 +1463,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q engine = "redis" + engine_version = "7.1" node_type = "db.t4g.small" num_shards = %[2]d subnet_group_name = aws_memorydb_subnet_group.test.id @@ -1562,6 +1496,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q engine = "redis" + engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1580,6 +1515,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q engine = "redis" + engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1603,6 +1539,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q engine = "redis" + engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1621,6 +1558,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q engine = "redis" + engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1639,6 +1577,7 @@ resource "aws_memorydb_cluster" "test1" { acl_name = "open-access" name = %[1]q engine = "redis" + engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1653,6 +1592,7 @@ resource "aws_memorydb_cluster" "test2" { acl_name = "open-access" name = %[2]q engine = "redis" + engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1671,6 +1611,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q engine = "redis" + engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1695,6 +1636,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q engine = "redis" + engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1718,6 +1660,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q engine = "redis" + engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1737,6 +1680,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q engine = "redis" + engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1754,6 +1698,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q engine = "redis" + engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1775,6 +1720,7 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q engine = "redis" + engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 From 53ab794a01baffbe72a7bd2e868ee6985f7a595f Mon Sep 17 00:00:00 2001 From: Sasi Date: Thu, 31 Oct 2024 15:43:08 -0400 Subject: [PATCH 017/118] updated memorydb_cluster documentation --- website/docs/r/memorydb_cluster.html.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/website/docs/r/memorydb_cluster.html.markdown b/website/docs/r/memorydb_cluster.html.markdown index 553bc7aa001..957bd769f5b 100644 --- a/website/docs/r/memorydb_cluster.html.markdown +++ b/website/docs/r/memorydb_cluster.html.markdown @@ -20,6 +20,7 @@ resource "aws_memorydb_cluster" "example" { name = "my-cluster" node_type = "db.t4g.small" engine = "redis" + engine_version = "7.1" num_shards = 2 security_group_ids = [aws_security_group.example.id] snapshot_retention_limit = 7 @@ -33,6 +34,7 @@ The following arguments are required: * `acl_name` - (Required) The name of the Access Control List to associate with the cluster. * `engine` - (Required) The engine that will run on your nodes. Supported values are `redis` and `valkey`. +* `engine_version` - (Required) Version number of the Redis engine to be used for the cluster. Downgrades are not supported. * `node_type` - (Required) The compute and memory capacity of the nodes in the cluster. See AWS documentation on [supported node types](https://docs.aws.amazon.com/memorydb/latest/devguide/nodes.supportedtypes.html) as well as [vertical scaling](https://docs.aws.amazon.com/memorydb/latest/devguide/cluster-vertical-scaling.html). The following arguments are optional: @@ -40,7 +42,6 @@ The following arguments are optional: * `auto_minor_version_upgrade` - (Optional, Forces new resource) When set to `true`, the cluster will automatically receive minor engine version upgrades after launch. Defaults to `true`. * `data_tiering` - (Optional, Forces new resource) Enables data tiering. This option is not supported by all instance types. For more information, see [Data tiering](https://docs.aws.amazon.com/memorydb/latest/devguide/data-tiering.html). * `description` - (Optional) Description for the cluster. Defaults to `"Managed by Terraform"`. -* `engine_version` - (Optional) Version number of the Redis engine to be used for the cluster. Downgrades are not supported. * `final_snapshot_name` - (Optional) Name of the final cluster snapshot to be created when this resource is deleted. If omitted, no final snapshot will be made. * `kms_key_arn` - (Optional, Forces new resource) ARN of the KMS key used to encrypt the cluster at rest. * `maintenance_window` - (Optional) Specifies the weekly time range during which maintenance on the cluster is performed. Specify as a range in the format `ddd:hh24:mi-ddd:hh24:mi` (24H Clock UTC). The minimum maintenance window is a 60 minute period. Example: `sun:23:00-mon:01:30`. From 6ade930c6012f157aabc5d92cadcfc5303b1ce7f Mon Sep 17 00:00:00 2001 From: Andy Kretschmar Date: Tue, 19 Nov 2024 23:42:22 -0600 Subject: [PATCH 018/118] remove outdated test constants --- internal/service/memorydb/cluster_test.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/internal/service/memorydb/cluster_test.go b/internal/service/memorydb/cluster_test.go index 63b9859b74f..3ef4821fbce 100644 --- a/internal/service/memorydb/cluster_test.go +++ b/internal/service/memorydb/cluster_test.go @@ -1085,17 +1085,17 @@ func TestAccMemoryDBCluster_valkey(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "maintenance_window"), resource.TestCheckResourceAttr(resourceName, names.AttrName, rName), resource.TestCheckResourceAttr(resourceName, "node_type", "db.t4g.small"), - resource.TestCheckResourceAttr(resourceName, "num_replicas_per_shard", acctest.Ct1), - resource.TestCheckResourceAttr(resourceName, "num_shards", acctest.Ct2), + resource.TestCheckResourceAttr(resourceName, "num_replicas_per_shard", "1"), + resource.TestCheckResourceAttr(resourceName, "num_shards", "2"), resource.TestCheckResourceAttrSet(resourceName, names.AttrParameterGroupName), resource.TestCheckResourceAttr(resourceName, names.AttrPort, "6379"), - resource.TestCheckResourceAttr(resourceName, "security_group_ids.#", acctest.Ct1), + resource.TestCheckResourceAttr(resourceName, "security_group_ids.#", "1"), resource.TestCheckTypeSetElemAttrPair(resourceName, "security_group_ids.*", "aws_security_group.test", names.AttrID), - resource.TestCheckResourceAttr(resourceName, "shards.#", acctest.Ct2), + resource.TestCheckResourceAttr(resourceName, "shards.#", "2"), resource.TestMatchResourceAttr(resourceName, "shards.0.name", regexache.MustCompile(`^000[12]$`)), - resource.TestCheckResourceAttr(resourceName, "shards.0.num_nodes", acctest.Ct2), + resource.TestCheckResourceAttr(resourceName, "shards.0.num_nodes", "2"), resource.TestCheckResourceAttr(resourceName, "shards.0.slots", "0-8191"), - resource.TestCheckResourceAttr(resourceName, "shards.0.nodes.#", acctest.Ct2), + resource.TestCheckResourceAttr(resourceName, "shards.0.nodes.#", "2"), resource.TestCheckResourceAttrSet(resourceName, "shards.0.nodes.0.availability_zone"), acctest.CheckResourceAttrRFC3339(resourceName, "shards.0.nodes.0.create_time"), resource.TestMatchResourceAttr(resourceName, "shards.0.nodes.0.name", regexache.MustCompile(`^`+rName+`-000[12]-00[12]$`)), @@ -1105,7 +1105,7 @@ func TestAccMemoryDBCluster_valkey(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "snapshot_window"), resource.TestCheckResourceAttr(resourceName, names.AttrSNSTopicARN, ""), resource.TestCheckTypeSetElemAttrPair(resourceName, "subnet_group_name", "aws_memorydb_subnet_group.test", names.AttrID), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, acctest.Ct1), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), resource.TestCheckResourceAttr(resourceName, "tags.Test", "test"), resource.TestCheckResourceAttr(resourceName, "tls_enabled", acctest.CtTrue), ), From cd1011c935115bccab36ea2d49a8351efe180cd9 Mon Sep 17 00:00:00 2001 From: Andy Kretschmar Date: Wed, 20 Nov 2024 16:28:30 -0600 Subject: [PATCH 019/118] rename changelog entry to match new PR --- .changelog/{39939.txt => 40224.txt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .changelog/{39939.txt => 40224.txt} (100%) diff --git a/.changelog/39939.txt b/.changelog/40224.txt similarity index 100% rename from .changelog/39939.txt rename to .changelog/40224.txt From 0b3eada0e0f9a68529a9e965b9fbf5507411e703 Mon Sep 17 00:00:00 2001 From: Andy Kretschmar Date: Wed, 20 Nov 2024 20:49:41 -0600 Subject: [PATCH 020/118] fix tests that were missing engine_version attribute --- internal/service/memorydb/cluster_data_source_test.go | 1 + internal/service/memorydb/snapshot_test.go | 1 + 2 files changed, 2 insertions(+) diff --git a/internal/service/memorydb/cluster_data_source_test.go b/internal/service/memorydb/cluster_data_source_test.go index 0929a6d42c4..8770d2ec99f 100644 --- a/internal/service/memorydb/cluster_data_source_test.go +++ b/internal/service/memorydb/cluster_data_source_test.go @@ -89,6 +89,7 @@ resource "aws_memorydb_cluster" "test" { kms_key_arn = aws_kms_key.test.arn name = %[1]q engine = "valkey" + engine_version = "7.2" node_type = "db.t4g.small" num_shards = 2 security_group_ids = [aws_security_group.test.id] diff --git a/internal/service/memorydb/snapshot_test.go b/internal/service/memorydb/snapshot_test.go index d7d6f8c781d..7205eb8f953 100644 --- a/internal/service/memorydb/snapshot_test.go +++ b/internal/service/memorydb/snapshot_test.go @@ -297,6 +297,7 @@ resource "aws_memorydb_cluster" "test" { name = %[1]q node_type = "db.t4g.small" engine = "redis" + engine_version = "7.1" num_replicas_per_shard = 0 num_shards = 1 security_group_ids = [aws_security_group.test.id] From c749eb2b400e1b27830d7a7b4c9f16a4df8da359 Mon Sep 17 00:00:00 2001 From: changelogbot Date: Thu, 21 Nov 2024 19:02:14 +0000 Subject: [PATCH 021/118] Update CHANGELOG.md after v5.77.0 --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index df78e42577d..44513a1406d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,5 @@ -## 5.77.0 (Unreleased) +## 5.78.0 (Unreleased) +## 5.77.0 (November 21, 2024) NOTES: From 71da666c32d67abe6bb8ee6495c72563ca3619df Mon Sep 17 00:00:00 2001 From: Stefan Freitag Date: Thu, 21 Nov 2024 20:41:58 +0100 Subject: [PATCH 022/118] docs: add missing transformation block (#40218) * docs: add missing transformation block * fix: remove linter issue --- .../docs/r/bedrockagent_data_source.html.markdown | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/website/docs/r/bedrockagent_data_source.html.markdown b/website/docs/r/bedrockagent_data_source.html.markdown index d0feadf9a70..013fa1ac70b 100644 --- a/website/docs/r/bedrockagent_data_source.html.markdown +++ b/website/docs/r/bedrockagent_data_source.html.markdown @@ -113,7 +113,7 @@ The `semantic_chunking_configuration` block supports the following arguments: The `custom_transformation_configuration` block supports the following arguments: * `intermediate_storage` - (Required, Forces new resource) The intermediate storage for custom transformation. -* `transformation_function` - (Required) The configuration of transformation function. +* `transformation` - (Required) A custom processing step for documents moving through the data source ingestion pipeline. ### `intermediate_storage` block @@ -127,12 +127,18 @@ The `s3_location` block supports the following arguments: * `uri` - (Required, Forces new resource) S3 URI for intermediate storage. +### `transformation` block + +The `transformation` block supports the following arguments: + +* `step_to_apply` - (Required, Forces new resource) When the service applies the transformation. Currently only `POST_CHUNKING` is supported. +* `transformation_function` - (Required) The lambda function that processes documents. + ### `transformation_function` block The `transformation_function` block supports the following arguments: -* `step_to_apply` - (Required, Forces new resource) Currently only `POST_CHUNKING` is supported. -* `transformation_lambda_configuration` - (Required, Forces new resource) The lambda configuration for custom transformation. +* `transformation_lambda_configuration` - (Required, Forces new resource) The configuration of the lambda function. ### `transformation_lambda_configuration` block From 0782551583c61f985d5a05f42e48cf7917d52d12 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Thu, 21 Nov 2024 15:24:20 -0500 Subject: [PATCH 023/118] Build with go1.23.3. --- .ci/providerlint/go.mod | 2 +- .ci/providerlint/passes/AWSAT001/testdata/go.mod | 2 +- .ci/providerlint/passes/AWSAT002/testdata/go.mod | 2 +- .ci/providerlint/passes/AWSAT003/testdata/go.mod | 2 +- .ci/providerlint/passes/AWSAT004/testdata/go.mod | 2 +- .ci/providerlint/passes/AWSAT005/testdata/go.mod | 2 +- .ci/providerlint/passes/AWSAT006/testdata/go.mod | 2 +- .ci/providerlint/passes/AWSR001/testdata/go.mod | 2 +- .ci/providerlint/passes/AWSV001/testdata/go.mod | 2 +- .ci/tools/go.mod | 2 +- .go-version | 2 +- go.mod | 2 +- skaff/go.mod | 2 +- tools/literally/go.mod | 2 +- tools/tfsdk2fw/go.mod | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.ci/providerlint/go.mod b/.ci/providerlint/go.mod index f448fe3e444..b4bd483e345 100644 --- a/.ci/providerlint/go.mod +++ b/.ci/providerlint/go.mod @@ -2,7 +2,7 @@ module github.com/hashicorp/terraform-provider-aws/ci/providerlint go 1.23 -toolchain go1.23.2 +toolchain go1.23.3 require ( github.com/bflad/tfproviderlint v0.30.0 diff --git a/.ci/providerlint/passes/AWSAT001/testdata/go.mod b/.ci/providerlint/passes/AWSAT001/testdata/go.mod index 3c3a182398e..58ca190ffce 100644 --- a/.ci/providerlint/passes/AWSAT001/testdata/go.mod +++ b/.ci/providerlint/passes/AWSAT001/testdata/go.mod @@ -2,7 +2,7 @@ module testdata go 1.23 -toolchain go1.23.2 +toolchain go1.23.3 require ( github.com/YakDriver/regexache v0.24.0 diff --git a/.ci/providerlint/passes/AWSAT002/testdata/go.mod b/.ci/providerlint/passes/AWSAT002/testdata/go.mod index c7bf50521c1..728aa1de299 100644 --- a/.ci/providerlint/passes/AWSAT002/testdata/go.mod +++ b/.ci/providerlint/passes/AWSAT002/testdata/go.mod @@ -2,4 +2,4 @@ module testdata go 1.23 -toolchain go1.23.2 +toolchain go1.23.3 diff --git a/.ci/providerlint/passes/AWSAT003/testdata/go.mod b/.ci/providerlint/passes/AWSAT003/testdata/go.mod index c7bf50521c1..728aa1de299 100644 --- a/.ci/providerlint/passes/AWSAT003/testdata/go.mod +++ b/.ci/providerlint/passes/AWSAT003/testdata/go.mod @@ -2,4 +2,4 @@ module testdata go 1.23 -toolchain go1.23.2 +toolchain go1.23.3 diff --git a/.ci/providerlint/passes/AWSAT004/testdata/go.mod b/.ci/providerlint/passes/AWSAT004/testdata/go.mod index f27ef2c65e7..f7043fd3dc1 100644 --- a/.ci/providerlint/passes/AWSAT004/testdata/go.mod +++ b/.ci/providerlint/passes/AWSAT004/testdata/go.mod @@ -2,7 +2,7 @@ module testdata go 1.23 -toolchain go1.23.2 +toolchain go1.23.3 require github.com/hashicorp/terraform-plugin-sdk/v2 v2.35.0 diff --git a/.ci/providerlint/passes/AWSAT005/testdata/go.mod b/.ci/providerlint/passes/AWSAT005/testdata/go.mod index c7bf50521c1..728aa1de299 100644 --- a/.ci/providerlint/passes/AWSAT005/testdata/go.mod +++ b/.ci/providerlint/passes/AWSAT005/testdata/go.mod @@ -2,4 +2,4 @@ module testdata go 1.23 -toolchain go1.23.2 +toolchain go1.23.3 diff --git a/.ci/providerlint/passes/AWSAT006/testdata/go.mod b/.ci/providerlint/passes/AWSAT006/testdata/go.mod index c7bf50521c1..728aa1de299 100644 --- a/.ci/providerlint/passes/AWSAT006/testdata/go.mod +++ b/.ci/providerlint/passes/AWSAT006/testdata/go.mod @@ -2,4 +2,4 @@ module testdata go 1.23 -toolchain go1.23.2 +toolchain go1.23.3 diff --git a/.ci/providerlint/passes/AWSR001/testdata/go.mod b/.ci/providerlint/passes/AWSR001/testdata/go.mod index c7bf50521c1..728aa1de299 100644 --- a/.ci/providerlint/passes/AWSR001/testdata/go.mod +++ b/.ci/providerlint/passes/AWSR001/testdata/go.mod @@ -2,4 +2,4 @@ module testdata go 1.23 -toolchain go1.23.2 +toolchain go1.23.3 diff --git a/.ci/providerlint/passes/AWSV001/testdata/go.mod b/.ci/providerlint/passes/AWSV001/testdata/go.mod index e331314fde3..39b0154d2c7 100644 --- a/.ci/providerlint/passes/AWSV001/testdata/go.mod +++ b/.ci/providerlint/passes/AWSV001/testdata/go.mod @@ -2,7 +2,7 @@ module testdata go 1.23 -toolchain go1.23.2 +toolchain go1.23.3 require github.com/hashicorp/terraform-plugin-sdk/v2 v2.35.0 diff --git a/.ci/tools/go.mod b/.ci/tools/go.mod index 5db4f37e882..a9dfa8ed0a8 100644 --- a/.ci/tools/go.mod +++ b/.ci/tools/go.mod @@ -1,6 +1,6 @@ module github.com/hashicorp/terraform-provider-aws/tools -go 1.23.2 +go 1.23.3 require ( github.com/YakDriver/tfproviderdocs v0.16.6 diff --git a/.go-version b/.go-version index 14bee92c9e7..ac1df3fce34 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.23.2 +1.23.3 diff --git a/go.mod b/go.mod index a71dc2b1e5c..ef370c98090 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/hashicorp/terraform-provider-aws -go 1.23.2 +go 1.23.3 // Disable experimental post-quantum key exchange mechanism X25519Kyber768Draft00 // This was causing errors with AWS Network Firewall diff --git a/skaff/go.mod b/skaff/go.mod index 666d09cb44d..3235aabbc27 100644 --- a/skaff/go.mod +++ b/skaff/go.mod @@ -1,6 +1,6 @@ module github.com/hashicorp/terraform-provider-aws/skaff -go 1.23.2 +go 1.23.3 require ( github.com/YakDriver/regexache v0.24.0 diff --git a/tools/literally/go.mod b/tools/literally/go.mod index 103fd526b7a..ed1642207de 100644 --- a/tools/literally/go.mod +++ b/tools/literally/go.mod @@ -1,3 +1,3 @@ module github.com/hashicorp/terraform-provider-aws/tools/literally -go 1.23.2 +go 1.23.3 diff --git a/tools/tfsdk2fw/go.mod b/tools/tfsdk2fw/go.mod index 3f16ccdd91f..68e8880f0ee 100644 --- a/tools/tfsdk2fw/go.mod +++ b/tools/tfsdk2fw/go.mod @@ -1,6 +1,6 @@ module github.com/hashicorp/terraform-provider-aws/tools/tfsdk2fw -go 1.23.2 +go 1.23.3 require ( github.com/hashicorp/terraform-plugin-sdk/v2 v2.35.0 From d319a6e650bac2320135415a28a44e8ae673bdb2 Mon Sep 17 00:00:00 2001 From: RoseSecurity Date: Thu, 21 Nov 2024 16:14:37 -0500 Subject: [PATCH 024/118] fix: update documentation for AWS ALB health check paths --- website/docs/cdktf/python/r/lb_target_group.html.markdown | 2 +- website/docs/cdktf/typescript/r/lb_target_group.html.markdown | 2 +- website/docs/r/lb_target_group.html.markdown | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/website/docs/cdktf/python/r/lb_target_group.html.markdown b/website/docs/cdktf/python/r/lb_target_group.html.markdown index c98c603d14e..7545ab37574 100644 --- a/website/docs/cdktf/python/r/lb_target_group.html.markdown +++ b/website/docs/cdktf/python/r/lb_target_group.html.markdown @@ -227,7 +227,7 @@ This resource supports the following arguments: * When the `target_type` is `lambda`, values can be between `200` and `499`. The default is `200`. * `path` - (May be required) Destination for the health check request. Required for HTTP/HTTPS ALB and HTTP NLB. Only applies to HTTP/HTTPS. * For HTTP and HTTPS health checks, the default is `/`. - * For gRPC health checks, the default is `/Amazon Web Services.ALB/healthcheck`. + * For gRPC health checks, the default is `/AWS.ALB/healthcheck`. * `port` - (Optional) The port the load balancer uses when performing health checks on targets. Valid values are either `traffic-port`, to use the same port as the target group, or a valid port number between `1` and `65536`. Default is `traffic-port`. diff --git a/website/docs/cdktf/typescript/r/lb_target_group.html.markdown b/website/docs/cdktf/typescript/r/lb_target_group.html.markdown index 13caaa69afd..d2f1f5af0a1 100644 --- a/website/docs/cdktf/typescript/r/lb_target_group.html.markdown +++ b/website/docs/cdktf/typescript/r/lb_target_group.html.markdown @@ -246,7 +246,7 @@ This resource supports the following arguments: * When the `targetType` is `lambda`, values can be between `200` and `499`. The default is `200`. * `path` - (May be required) Destination for the health check request. Required for HTTP/HTTPS ALB and HTTP NLB. Only applies to HTTP/HTTPS. * For HTTP and HTTPS health checks, the default is `/`. - * For gRPC health checks, the default is `/Amazon Web Services.ALB/healthcheck`. + * For gRPC health checks, the default is `/AWS.ALB/healthcheck`. * `port` - (Optional) The port the load balancer uses when performing health checks on targets. Valid values are either `traffic-port`, to use the same port as the target group, or a valid port number between `1` and `65536`. Default is `traffic-port`. diff --git a/website/docs/r/lb_target_group.html.markdown b/website/docs/r/lb_target_group.html.markdown index d39b53984b7..2d352d3ddd4 100644 --- a/website/docs/r/lb_target_group.html.markdown +++ b/website/docs/r/lb_target_group.html.markdown @@ -161,7 +161,7 @@ This resource supports the following arguments: * When the `target_type` is `lambda`, values can be between `200` and `499`. The default is `200`. * `path` - (May be required) Destination for the health check request. Required for HTTP/HTTPS ALB and HTTP NLB. Only applies to HTTP/HTTPS. * For HTTP and HTTPS health checks, the default is `/`. - * For gRPC health checks, the default is `/Amazon Web Services.ALB/healthcheck`. + * For gRPC health checks, the default is `/AWS.ALB/healthcheck`. * `port` - (Optional) The port the load balancer uses when performing health checks on targets. Valid values are either `traffic-port`, to use the same port as the target group, or a valid port number between `1` and `65536`. Default is `traffic-port`. From 8426cdce8c6555051f4fad4b2ac81beaf929028f Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Thu, 21 Nov 2024 16:48:44 -0500 Subject: [PATCH 025/118] Ignore unknown order argument on import --- internal/service/batch/job_definition_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/service/batch/job_definition_test.go b/internal/service/batch/job_definition_test.go index 06e625e2315..76694043cdb 100644 --- a/internal/service/batch/job_definition_test.go +++ b/internal/service/batch/job_definition_test.go @@ -835,6 +835,7 @@ func TestAccBatchJobDefinition_NodeProperties_withEKS(t *testing.T) { ImportStateVerify: true, ImportStateVerifyIgnore: []string{ "deregister_on_new_revision", + "node_properties", }, }, }, From 917e11e9ee721e1b967b94f9e2c16357bfeb4ad0 Mon Sep 17 00:00:00 2001 From: max-ts0gt Date: Fri, 22 Nov 2024 11:34:13 +0900 Subject: [PATCH 026/118] r/chatbot: Fix SNS topic ARNs ordering in Slack channel configuration The provider was being too strict about the order of SNS topic ARNs in the Slack channel configuration resource. This could cause unnecessary diffs in the Terraform plan when AWS returned the topics in a different order. This change implements sorting of SNS topic ARNs before comparison to ensure consistent behavior regardless of the order returned by the API. --- .../chatbot/slack_channel_configuration.go | 46 ++++++++++++++++++- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/internal/service/chatbot/slack_channel_configuration.go b/internal/service/chatbot/slack_channel_configuration.go index 06e5c259f30..04ff9492252 100644 --- a/internal/service/chatbot/slack_channel_configuration.go +++ b/internal/service/chatbot/slack_channel_configuration.go @@ -5,6 +5,8 @@ package chatbot import ( "context" + "fmt" + "sort" "time" "github.com/aws/aws-sdk-go-v2/aws" @@ -435,7 +437,26 @@ func (loggingLevel) Values() []loggingLevel { } } -func slackChannelConfigurationHasChanges(_ context.Context, plan, state slackChannelConfigurationResourceModel) bool { +func slackChannelConfigurationHasChanges(ctx context.Context, plan, state slackChannelConfigurationResourceModel) bool { + // Sort SNS Topic ARNs before comparison + planSNSTopicARNs, err := sortSNSTopicARNs(ctx, plan.SNSTopicARNs) + if err != nil { + // Log error and fall back to direct comparison + tflog.Warn(ctx, "Failed to sort plan SNS Topic ARNs", map[string]interface{}{ + "error": err.Error(), + }) + planSNSTopicARNs = plan.SNSTopicARNs + } + + stateSNSTopicARNs, err := sortSNSTopicARNs(ctx, state.SNSTopicARNs) + if err != nil { + // Log error and fall back to direct comparison + tflog.Warn(ctx, "Failed to sort state SNS Topic ARNs", map[string]interface{}{ + "error": err.Error(), + }) + stateSNSTopicARNs = state.SNSTopicARNs + } + return !plan.ChatConfigurationARN.Equal(state.ChatConfigurationARN) || !plan.ConfigurationName.Equal(state.ConfigurationName) || !plan.GuardrailPolicyARNs.Equal(state.GuardrailPolicyARNs) || @@ -445,6 +466,27 @@ func slackChannelConfigurationHasChanges(_ context.Context, plan, state slackCha !plan.SlackChannelName.Equal(state.SlackChannelName) || !plan.SlackTeamID.Equal(state.SlackTeamID) || !plan.SlackTeamName.Equal(state.SlackTeamName) || - !plan.SNSTopicARNs.Equal(state.SNSTopicARNs) || + !planSNSTopicARNs.Equal(stateSNSTopicARNs) || !plan.UserAuthorizationRequired.Equal(state.UserAuthorizationRequired) } + +func sortSNSTopicARNs(ctx context.Context, arns types.List) (types.List, error) { + if arns.IsNull() || arns.IsUnknown() { + return arns, nil + } + + var arnStrings []string + diags := arns.ElementsAs(ctx, &arnStrings, false) + if diags.HasError() { + return arns, fmt.Errorf("error converting SNS Topic ARNs to strings: %v", diags) + } + + sort.Strings(arnStrings) + + sortedArns, diags := types.ListValueFrom(ctx, types.StringType, arnStrings) + if diags.HasError() { + return arns, fmt.Errorf("error converting sorted strings to List: %v", diags) + } + + return sortedArns, nil +} From 3e08f1920947b91e13935ad00f6c56a43e88e158 Mon Sep 17 00:00:00 2001 From: kilmajster Date: Fri, 22 Nov 2024 14:11:27 +0100 Subject: [PATCH 027/118] fix ignored skip_requesting_account_id argument --- internal/conns/config.go | 2 +- internal/conns/config_test.go | 9 ------- .../generate/serviceendpointtests/file.gtpl | 8 ------ internal/provider/provider_config_test.go | 25 ------------------- .../service_endpoints_gen_test.go | 8 ------ .../account/service_endpoints_gen_test.go | 8 ------ .../service/acm/service_endpoints_gen_test.go | 8 ------ .../acmpca/service_endpoints_gen_test.go | 8 ------ .../service/amp/service_endpoints_gen_test.go | 8 ------ .../amplify/service_endpoints_gen_test.go | 8 ------ .../apigateway/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../appconfig/service_endpoints_gen_test.go | 8 ------ .../appfabric/service_endpoints_gen_test.go | 8 ------ .../appflow/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../appmesh/service_endpoints_gen_test.go | 8 ------ .../apprunner/service_endpoints_gen_test.go | 8 ------ .../appstream/service_endpoints_gen_test.go | 8 ------ .../appsync/service_endpoints_gen_test.go | 8 ------ .../athena/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../autoscaling/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../backup/service_endpoints_gen_test.go | 8 ------ .../batch/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../bedrock/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../budgets/service_endpoints_gen_test.go | 8 ------ .../service/ce/service_endpoints_gen_test.go | 8 ------ .../chatbot/service_endpoints_gen_test.go | 8 ------ .../chime/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../cleanrooms/service_endpoints_gen_test.go | 8 ------ .../cloud9/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../cloudfront/service_endpoints_gen_test.go | 8 ------ .../cloudhsmv2/service_endpoints_gen_test.go | 8 ------ .../cloudsearch/service_endpoints_gen_test.go | 8 ------ .../cloudtrail/service_endpoints_gen_test.go | 8 ------ .../cloudwatch/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../codebuild/service_endpoints_gen_test.go | 8 ------ .../codecommit/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../cognitoidp/service_endpoints_gen_test.go | 8 ------ .../comprehend/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../connect/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service/cur/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../databrew/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../datasync/service_endpoints_gen_test.go | 8 ------ .../datazone/service_endpoints_gen_test.go | 8 ------ .../service/dax/service_endpoints_gen_test.go | 8 ------ .../deploy/service_endpoints_gen_test.go | 8 ------ .../detective/service_endpoints_gen_test.go | 8 ------ .../devicefarm/service_endpoints_gen_test.go | 8 ------ .../devopsguru/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service/dlm/service_endpoints_gen_test.go | 8 ------ .../service/dms/service_endpoints_gen_test.go | 8 ------ .../docdb/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service/drs/service_endpoints_gen_test.go | 8 ------ .../service/ds/service_endpoints_gen_test.go | 8 ------ .../dynamodb/service_endpoints_gen_test.go | 8 ------ .../service/ec2/service_endpoints_gen_test.go | 8 ------ .../service/ecr/service_endpoints_gen_test.go | 8 ------ .../ecrpublic/service_endpoints_gen_test.go | 8 ------ .../service/ecs/service_endpoints_gen_test.go | 8 ------ .../service/efs/service_endpoints_gen_test.go | 8 ------ .../service/eks/service_endpoints_gen_test.go | 8 ------ .../elasticache/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service/elb/service_endpoints_gen_test.go | 8 ------ .../elbv2/service_endpoints_gen_test.go | 8 ------ .../service/emr/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../events/service_endpoints_gen_test.go | 8 ------ .../evidently/service_endpoints_gen_test.go | 8 ------ .../finspace/service_endpoints_gen_test.go | 8 ------ .../firehose/service_endpoints_gen_test.go | 8 ------ .../service/fis/service_endpoints_gen_test.go | 8 ------ .../service/fms/service_endpoints_gen_test.go | 8 ------ .../service/fsx/service_endpoints_gen_test.go | 8 ------ .../gamelift/service_endpoints_gen_test.go | 8 ------ .../glacier/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../glue/service_endpoints_gen_test.go | 8 ------ .../grafana/service_endpoints_gen_test.go | 8 ------ .../greengrass/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../guardduty/service_endpoints_gen_test.go | 8 ------ .../healthlake/service_endpoints_gen_test.go | 8 ------ .../service/iam/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../inspector/service_endpoints_gen_test.go | 8 ------ .../inspector2/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service/iot/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../iotevents/service_endpoints_gen_test.go | 8 ------ .../service/ivs/service_endpoints_gen_test.go | 8 ------ .../ivschat/service_endpoints_gen_test.go | 8 ------ .../kafka/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../kendra/service_endpoints_gen_test.go | 8 ------ .../keyspaces/service_endpoints_gen_test.go | 8 ------ .../kinesis/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service/kms/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../lambda/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../lexmodels/service_endpoints_gen_test.go | 8 ------ .../lexv2models/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../lightsail/service_endpoints_gen_test.go | 8 ------ .../logs/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service/m2/service_endpoints_gen_test.go | 8 ------ .../macie2/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../medialive/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../mediastore/service_endpoints_gen_test.go | 8 ------ .../memorydb/service_endpoints_gen_test.go | 8 ------ .../service/mq/service_endpoints_gen_test.go | 8 ------ .../neptune/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service/oam/service_endpoints_gen_test.go | 8 ------ .../opensearch/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../opsworks/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../osis/service_endpoints_gen_test.go | 8 ------ .../outposts/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service/pcs/service_endpoints_gen_test.go | 8 ------ .../pinpoint/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../pipes/service_endpoints_gen_test.go | 8 ------ .../polly/service_endpoints_gen_test.go | 8 ------ .../pricing/service_endpoints_gen_test.go | 8 ------ .../qbusiness/service_endpoints_gen_test.go | 8 ------ .../qldb/service_endpoints_gen_test.go | 8 ------ .../quicksight/service_endpoints_gen_test.go | 8 ------ .../service/ram/service_endpoints_gen_test.go | 8 ------ .../rbin/service_endpoints_gen_test.go | 8 ------ .../service/rds/service_endpoints_gen_test.go | 8 ------ .../redshift/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../rekognition/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../route53/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service/rum/service_endpoints_gen_test.go | 8 ------ .../service/s3/service_endpoints_gen_test.go | 8 ------ .../s3outposts/service_endpoints_gen_test.go | 8 ------ .../sagemaker/service_endpoints_gen_test.go | 8 ------ .../scheduler/service_endpoints_gen_test.go | 8 ------ .../schemas/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../securityhub/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service/ses/service_endpoints_gen_test.go | 8 ------ .../sesv2/service_endpoints_gen_test.go | 8 ------ .../service/sfn/service_endpoints_gen_test.go | 8 ------ .../shield/service_endpoints_gen_test.go | 8 ------ .../signer/service_endpoints_gen_test.go | 8 ------ .../service/sns/service_endpoints_gen_test.go | 8 ------ .../service/sqs/service_endpoints_gen_test.go | 8 ------ .../service/ssm/service_endpoints_gen_test.go | 8 ------ .../ssmcontacts/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../ssmsap/service_endpoints_gen_test.go | 8 ------ .../service/sso/service_endpoints_gen_test.go | 8 ------ .../ssoadmin/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../service/sts/service_endpoints_gen_test.go | 8 ------ .../service/swf/service_endpoints_gen_test.go | 8 ------ .../synthetics/service_endpoints_gen_test.go | 8 ------ .../taxsettings/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../transcribe/service_endpoints_gen_test.go | 8 ------ .../transfer/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../vpclattice/service_endpoints_gen_test.go | 8 ------ .../service/waf/service_endpoints_gen_test.go | 8 ------ .../wafregional/service_endpoints_gen_test.go | 8 ------ .../wafv2/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../worklink/service_endpoints_gen_test.go | 8 ------ .../workspaces/service_endpoints_gen_test.go | 8 ------ .../service_endpoints_gen_test.go | 8 ------ .../xray/service_endpoints_gen_test.go | 8 ------ 239 files changed, 1 insertion(+), 1923 deletions(-) diff --git a/internal/conns/config.go b/internal/conns/config.go index 7f7a5afc0ef..8ee7c6d6270 100644 --- a/internal/conns/config.go +++ b/internal/conns/config.go @@ -190,7 +190,7 @@ func (c *Config) ConfigureProvider(ctx context.Context, client *AWSClient) (*AWS }) } - if accountID == "" { + if accountID == "" && !awsbaseConfig.SkipRequestingAccountId { diags = append(diags, errs.NewWarningDiagnostic( "AWS account ID not found for provider", "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.")) diff --git a/internal/conns/config_test.go b/internal/conns/config_test.go index f7684e658ac..843f68d1ac3 100644 --- a/internal/conns/config_test.go +++ b/internal/conns/config_test.go @@ -16,7 +16,6 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" terraformsdk "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" "github.com/hashicorp/terraform-provider-aws/internal/conns" - "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" "github.com/hashicorp/terraform-provider-aws/internal/provider" ) @@ -462,14 +461,6 @@ func TestProxyConfig(t *testing.T) { } expectedDiags := tc.expectedDiags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/generate/serviceendpointtests/file.gtpl b/internal/generate/serviceendpointtests/file.gtpl index 1e03e4eb331..c179c917b55 100644 --- a/internal/generate/serviceendpointtests/file.gtpl +++ b/internal/generate/serviceendpointtests/file.gtpl @@ -756,14 +756,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/provider/provider_config_test.go b/internal/provider/provider_config_test.go index ca31f974b14..e1d4ed25489 100644 --- a/internal/provider/provider_config_test.go +++ b/internal/provider/provider_config_test.go @@ -181,14 +181,7 @@ sso_start_url = https://d-123456789a.awsapps.com/start# diags = append(diags, p.Configure(ctx, rc)...) - // The provider always returns a warning if there is no account ID var expected diag.Diagnostics - expected = append(expected, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) if diff := cmp.Diff(diags, expected, cmp.Comparer(sdkdiag.Comparer)); diff != "" { t.Errorf("unexpected diagnostics difference: %s", diff) @@ -282,16 +275,7 @@ func (d testCaseDriver) Apply(ctx context.Context, t *testing.T) (context.Contex diags = append(diags, p.Configure(ctx, rc)...) - // The provider always returns a warning if there is no account ID var expected diag.Diagnostics - if d.mode == configtesting.TestModeLocal { - expected = append(expected, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - } if diff := cmp.Diff(diags, expected, cmp.Comparer(sdkdiag.Comparer)); diff != "" { t.Errorf("unexpected diagnostics difference: %s", diff) @@ -623,15 +607,6 @@ func TestProviderConfig_AssumeRole(t *testing.T) { //nolint:paralleltest diags = append(diags, p.Configure(ctx, rc)...) expectedDiags := tc.ExpectedDiags - // If the provider attempts authorization, it always returns a warning if there is no account ID - if !tc.ExpectedDiags.HasError() { - expectedDiags = append(expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - } if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { t.Errorf("unexpected diagnostics difference: %s", diff) diff --git a/internal/service/accessanalyzer/service_endpoints_gen_test.go b/internal/service/accessanalyzer/service_endpoints_gen_test.go index 3492eed5f79..73a007c055d 100644 --- a/internal/service/accessanalyzer/service_endpoints_gen_test.go +++ b/internal/service/accessanalyzer/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/account/service_endpoints_gen_test.go b/internal/service/account/service_endpoints_gen_test.go index 4607523fa19..a0e60a840e0 100644 --- a/internal/service/account/service_endpoints_gen_test.go +++ b/internal/service/account/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/acm/service_endpoints_gen_test.go b/internal/service/acm/service_endpoints_gen_test.go index 2ba1986e91c..99ddffe9310 100644 --- a/internal/service/acm/service_endpoints_gen_test.go +++ b/internal/service/acm/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/acmpca/service_endpoints_gen_test.go b/internal/service/acmpca/service_endpoints_gen_test.go index 8a4981b8fe6..a115689e089 100644 --- a/internal/service/acmpca/service_endpoints_gen_test.go +++ b/internal/service/acmpca/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/amp/service_endpoints_gen_test.go b/internal/service/amp/service_endpoints_gen_test.go index 0d8e8290dee..bc1dc256aba 100644 --- a/internal/service/amp/service_endpoints_gen_test.go +++ b/internal/service/amp/service_endpoints_gen_test.go @@ -603,14 +603,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/amplify/service_endpoints_gen_test.go b/internal/service/amplify/service_endpoints_gen_test.go index 489787ff1c3..02dad53c5e0 100644 --- a/internal/service/amplify/service_endpoints_gen_test.go +++ b/internal/service/amplify/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/apigateway/service_endpoints_gen_test.go b/internal/service/apigateway/service_endpoints_gen_test.go index 8e711a643e8..5c68a80ff84 100644 --- a/internal/service/apigateway/service_endpoints_gen_test.go +++ b/internal/service/apigateway/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/apigatewayv2/service_endpoints_gen_test.go b/internal/service/apigatewayv2/service_endpoints_gen_test.go index 9d11714f220..6f0d69bb1ee 100644 --- a/internal/service/apigatewayv2/service_endpoints_gen_test.go +++ b/internal/service/apigatewayv2/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/appautoscaling/service_endpoints_gen_test.go b/internal/service/appautoscaling/service_endpoints_gen_test.go index 20fbb93c7c5..a73925ee599 100644 --- a/internal/service/appautoscaling/service_endpoints_gen_test.go +++ b/internal/service/appautoscaling/service_endpoints_gen_test.go @@ -529,14 +529,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/appconfig/service_endpoints_gen_test.go b/internal/service/appconfig/service_endpoints_gen_test.go index 13fb79a7ec2..64aa8f1e741 100644 --- a/internal/service/appconfig/service_endpoints_gen_test.go +++ b/internal/service/appconfig/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/appfabric/service_endpoints_gen_test.go b/internal/service/appfabric/service_endpoints_gen_test.go index fd69829f6b2..185696124b8 100644 --- a/internal/service/appfabric/service_endpoints_gen_test.go +++ b/internal/service/appfabric/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/appflow/service_endpoints_gen_test.go b/internal/service/appflow/service_endpoints_gen_test.go index d32279f6e76..43173ea79e1 100644 --- a/internal/service/appflow/service_endpoints_gen_test.go +++ b/internal/service/appflow/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/appintegrations/service_endpoints_gen_test.go b/internal/service/appintegrations/service_endpoints_gen_test.go index a3c1cd5a619..736953c2e9c 100644 --- a/internal/service/appintegrations/service_endpoints_gen_test.go +++ b/internal/service/appintegrations/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/applicationinsights/service_endpoints_gen_test.go b/internal/service/applicationinsights/service_endpoints_gen_test.go index 45651ead4af..46449132469 100644 --- a/internal/service/applicationinsights/service_endpoints_gen_test.go +++ b/internal/service/applicationinsights/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/applicationsignals/service_endpoints_gen_test.go b/internal/service/applicationsignals/service_endpoints_gen_test.go index 42948cb0c99..88fdc2b4506 100644 --- a/internal/service/applicationsignals/service_endpoints_gen_test.go +++ b/internal/service/applicationsignals/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/appmesh/service_endpoints_gen_test.go b/internal/service/appmesh/service_endpoints_gen_test.go index 0cf8492581f..18c7e1d36c1 100644 --- a/internal/service/appmesh/service_endpoints_gen_test.go +++ b/internal/service/appmesh/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/apprunner/service_endpoints_gen_test.go b/internal/service/apprunner/service_endpoints_gen_test.go index d941d44fef9..c0c5e503885 100644 --- a/internal/service/apprunner/service_endpoints_gen_test.go +++ b/internal/service/apprunner/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/appstream/service_endpoints_gen_test.go b/internal/service/appstream/service_endpoints_gen_test.go index a4daf567c52..dcba070f77f 100644 --- a/internal/service/appstream/service_endpoints_gen_test.go +++ b/internal/service/appstream/service_endpoints_gen_test.go @@ -448,14 +448,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/appsync/service_endpoints_gen_test.go b/internal/service/appsync/service_endpoints_gen_test.go index 24404b45c8c..864c9e759a1 100644 --- a/internal/service/appsync/service_endpoints_gen_test.go +++ b/internal/service/appsync/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/athena/service_endpoints_gen_test.go b/internal/service/athena/service_endpoints_gen_test.go index 3131e21d2e2..97532e94cf2 100644 --- a/internal/service/athena/service_endpoints_gen_test.go +++ b/internal/service/athena/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/auditmanager/service_endpoints_gen_test.go b/internal/service/auditmanager/service_endpoints_gen_test.go index 5bc33b78269..e898e8d07e9 100644 --- a/internal/service/auditmanager/service_endpoints_gen_test.go +++ b/internal/service/auditmanager/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/autoscaling/service_endpoints_gen_test.go b/internal/service/autoscaling/service_endpoints_gen_test.go index 2053b029063..61b5c4eb08d 100644 --- a/internal/service/autoscaling/service_endpoints_gen_test.go +++ b/internal/service/autoscaling/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/autoscalingplans/service_endpoints_gen_test.go b/internal/service/autoscalingplans/service_endpoints_gen_test.go index 255cb6b423b..4530d9f3a52 100644 --- a/internal/service/autoscalingplans/service_endpoints_gen_test.go +++ b/internal/service/autoscalingplans/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/backup/service_endpoints_gen_test.go b/internal/service/backup/service_endpoints_gen_test.go index a233c7cb97b..bcf3977da01 100644 --- a/internal/service/backup/service_endpoints_gen_test.go +++ b/internal/service/backup/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/batch/service_endpoints_gen_test.go b/internal/service/batch/service_endpoints_gen_test.go index 764f65d6809..4f010a53f8d 100644 --- a/internal/service/batch/service_endpoints_gen_test.go +++ b/internal/service/batch/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/bcmdataexports/service_endpoints_gen_test.go b/internal/service/bcmdataexports/service_endpoints_gen_test.go index 0800718081b..0a1b5923cc6 100644 --- a/internal/service/bcmdataexports/service_endpoints_gen_test.go +++ b/internal/service/bcmdataexports/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/bedrock/service_endpoints_gen_test.go b/internal/service/bedrock/service_endpoints_gen_test.go index ef142654060..d478281d007 100644 --- a/internal/service/bedrock/service_endpoints_gen_test.go +++ b/internal/service/bedrock/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/bedrockagent/service_endpoints_gen_test.go b/internal/service/bedrockagent/service_endpoints_gen_test.go index dd93710cafd..8127a581bcc 100644 --- a/internal/service/bedrockagent/service_endpoints_gen_test.go +++ b/internal/service/bedrockagent/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/budgets/service_endpoints_gen_test.go b/internal/service/budgets/service_endpoints_gen_test.go index a0baff30f19..1350c8e1290 100644 --- a/internal/service/budgets/service_endpoints_gen_test.go +++ b/internal/service/budgets/service_endpoints_gen_test.go @@ -449,14 +449,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ce/service_endpoints_gen_test.go b/internal/service/ce/service_endpoints_gen_test.go index ab49d3c6d65..3d67da902f5 100644 --- a/internal/service/ce/service_endpoints_gen_test.go +++ b/internal/service/ce/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/chatbot/service_endpoints_gen_test.go b/internal/service/chatbot/service_endpoints_gen_test.go index 4e5a0262510..93370450026 100644 --- a/internal/service/chatbot/service_endpoints_gen_test.go +++ b/internal/service/chatbot/service_endpoints_gen_test.go @@ -448,14 +448,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/chime/service_endpoints_gen_test.go b/internal/service/chime/service_endpoints_gen_test.go index c6d659ae472..f6e5822bcc9 100644 --- a/internal/service/chime/service_endpoints_gen_test.go +++ b/internal/service/chime/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/chimesdkmediapipelines/service_endpoints_gen_test.go b/internal/service/chimesdkmediapipelines/service_endpoints_gen_test.go index ea8e9eef360..ca7ebe0268b 100644 --- a/internal/service/chimesdkmediapipelines/service_endpoints_gen_test.go +++ b/internal/service/chimesdkmediapipelines/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/chimesdkvoice/service_endpoints_gen_test.go b/internal/service/chimesdkvoice/service_endpoints_gen_test.go index 18a7981417a..e2f14ddff8f 100644 --- a/internal/service/chimesdkvoice/service_endpoints_gen_test.go +++ b/internal/service/chimesdkvoice/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/cleanrooms/service_endpoints_gen_test.go b/internal/service/cleanrooms/service_endpoints_gen_test.go index 1720ad4fe3d..b467d5ffcc9 100644 --- a/internal/service/cleanrooms/service_endpoints_gen_test.go +++ b/internal/service/cleanrooms/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/cloud9/service_endpoints_gen_test.go b/internal/service/cloud9/service_endpoints_gen_test.go index aa962dedf3a..f5e3c282544 100644 --- a/internal/service/cloud9/service_endpoints_gen_test.go +++ b/internal/service/cloud9/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/cloudcontrol/service_endpoints_gen_test.go b/internal/service/cloudcontrol/service_endpoints_gen_test.go index 709501221b1..06d736e587a 100644 --- a/internal/service/cloudcontrol/service_endpoints_gen_test.go +++ b/internal/service/cloudcontrol/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/cloudformation/service_endpoints_gen_test.go b/internal/service/cloudformation/service_endpoints_gen_test.go index f35a0e39a32..11629412a7e 100644 --- a/internal/service/cloudformation/service_endpoints_gen_test.go +++ b/internal/service/cloudformation/service_endpoints_gen_test.go @@ -448,14 +448,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/cloudfront/service_endpoints_gen_test.go b/internal/service/cloudfront/service_endpoints_gen_test.go index f7fa1821c77..0c59e13644e 100644 --- a/internal/service/cloudfront/service_endpoints_gen_test.go +++ b/internal/service/cloudfront/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/cloudhsmv2/service_endpoints_gen_test.go b/internal/service/cloudhsmv2/service_endpoints_gen_test.go index 811d32dac27..8771178a3de 100644 --- a/internal/service/cloudhsmv2/service_endpoints_gen_test.go +++ b/internal/service/cloudhsmv2/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/cloudsearch/service_endpoints_gen_test.go b/internal/service/cloudsearch/service_endpoints_gen_test.go index d8500ca39d7..7f33406838d 100644 --- a/internal/service/cloudsearch/service_endpoints_gen_test.go +++ b/internal/service/cloudsearch/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/cloudtrail/service_endpoints_gen_test.go b/internal/service/cloudtrail/service_endpoints_gen_test.go index 2973c41a286..7ff0220c554 100644 --- a/internal/service/cloudtrail/service_endpoints_gen_test.go +++ b/internal/service/cloudtrail/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/cloudwatch/service_endpoints_gen_test.go b/internal/service/cloudwatch/service_endpoints_gen_test.go index c95c2e415b7..e13e934adcd 100644 --- a/internal/service/cloudwatch/service_endpoints_gen_test.go +++ b/internal/service/cloudwatch/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/codeartifact/service_endpoints_gen_test.go b/internal/service/codeartifact/service_endpoints_gen_test.go index a9f103d38d1..e92c84420f5 100644 --- a/internal/service/codeartifact/service_endpoints_gen_test.go +++ b/internal/service/codeartifact/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/codebuild/service_endpoints_gen_test.go b/internal/service/codebuild/service_endpoints_gen_test.go index 177bbeaf0dc..63c0f2f7961 100644 --- a/internal/service/codebuild/service_endpoints_gen_test.go +++ b/internal/service/codebuild/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/codecommit/service_endpoints_gen_test.go b/internal/service/codecommit/service_endpoints_gen_test.go index 247aa61c725..d373503e2e0 100644 --- a/internal/service/codecommit/service_endpoints_gen_test.go +++ b/internal/service/codecommit/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/codeconnections/service_endpoints_gen_test.go b/internal/service/codeconnections/service_endpoints_gen_test.go index 297fa202382..08be6f23d60 100644 --- a/internal/service/codeconnections/service_endpoints_gen_test.go +++ b/internal/service/codeconnections/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/codeguruprofiler/service_endpoints_gen_test.go b/internal/service/codeguruprofiler/service_endpoints_gen_test.go index 8d997899d37..cea45f27999 100644 --- a/internal/service/codeguruprofiler/service_endpoints_gen_test.go +++ b/internal/service/codeguruprofiler/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/codegurureviewer/service_endpoints_gen_test.go b/internal/service/codegurureviewer/service_endpoints_gen_test.go index f50f0bbc096..145094bca0b 100644 --- a/internal/service/codegurureviewer/service_endpoints_gen_test.go +++ b/internal/service/codegurureviewer/service_endpoints_gen_test.go @@ -449,14 +449,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/codepipeline/service_endpoints_gen_test.go b/internal/service/codepipeline/service_endpoints_gen_test.go index a8fdaf433c5..741fb7fa77d 100644 --- a/internal/service/codepipeline/service_endpoints_gen_test.go +++ b/internal/service/codepipeline/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/codestarconnections/service_endpoints_gen_test.go b/internal/service/codestarconnections/service_endpoints_gen_test.go index 028ed58394a..66ad7c84c81 100644 --- a/internal/service/codestarconnections/service_endpoints_gen_test.go +++ b/internal/service/codestarconnections/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/codestarnotifications/service_endpoints_gen_test.go b/internal/service/codestarnotifications/service_endpoints_gen_test.go index e43aa97538f..ef166b489c1 100644 --- a/internal/service/codestarnotifications/service_endpoints_gen_test.go +++ b/internal/service/codestarnotifications/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/cognitoidentity/service_endpoints_gen_test.go b/internal/service/cognitoidentity/service_endpoints_gen_test.go index c19bb621a26..f568a8f7d41 100644 --- a/internal/service/cognitoidentity/service_endpoints_gen_test.go +++ b/internal/service/cognitoidentity/service_endpoints_gen_test.go @@ -448,14 +448,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/cognitoidp/service_endpoints_gen_test.go b/internal/service/cognitoidp/service_endpoints_gen_test.go index 389dbed44f0..1caaa6a6c03 100644 --- a/internal/service/cognitoidp/service_endpoints_gen_test.go +++ b/internal/service/cognitoidp/service_endpoints_gen_test.go @@ -528,14 +528,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/comprehend/service_endpoints_gen_test.go b/internal/service/comprehend/service_endpoints_gen_test.go index d46c3591c97..1a3e08dc39d 100644 --- a/internal/service/comprehend/service_endpoints_gen_test.go +++ b/internal/service/comprehend/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/computeoptimizer/service_endpoints_gen_test.go b/internal/service/computeoptimizer/service_endpoints_gen_test.go index 063816f5658..13516205404 100644 --- a/internal/service/computeoptimizer/service_endpoints_gen_test.go +++ b/internal/service/computeoptimizer/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/configservice/service_endpoints_gen_test.go b/internal/service/configservice/service_endpoints_gen_test.go index a6980b8ed2f..4a3f718e0b2 100644 --- a/internal/service/configservice/service_endpoints_gen_test.go +++ b/internal/service/configservice/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/connect/service_endpoints_gen_test.go b/internal/service/connect/service_endpoints_gen_test.go index 9481815b647..533ab30e65d 100644 --- a/internal/service/connect/service_endpoints_gen_test.go +++ b/internal/service/connect/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/connectcases/service_endpoints_gen_test.go b/internal/service/connectcases/service_endpoints_gen_test.go index afff1f28e73..0d8d7c24a72 100644 --- a/internal/service/connectcases/service_endpoints_gen_test.go +++ b/internal/service/connectcases/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/controltower/service_endpoints_gen_test.go b/internal/service/controltower/service_endpoints_gen_test.go index abd6b6376f7..de203ea56f1 100644 --- a/internal/service/controltower/service_endpoints_gen_test.go +++ b/internal/service/controltower/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/costoptimizationhub/service_endpoints_gen_test.go b/internal/service/costoptimizationhub/service_endpoints_gen_test.go index c5c18f17dab..1aa61b49903 100644 --- a/internal/service/costoptimizationhub/service_endpoints_gen_test.go +++ b/internal/service/costoptimizationhub/service_endpoints_gen_test.go @@ -448,14 +448,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/cur/service_endpoints_gen_test.go b/internal/service/cur/service_endpoints_gen_test.go index 6e3afb756c3..d310153aa52 100644 --- a/internal/service/cur/service_endpoints_gen_test.go +++ b/internal/service/cur/service_endpoints_gen_test.go @@ -528,14 +528,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/customerprofiles/service_endpoints_gen_test.go b/internal/service/customerprofiles/service_endpoints_gen_test.go index 7b66076e114..023060a68a3 100644 --- a/internal/service/customerprofiles/service_endpoints_gen_test.go +++ b/internal/service/customerprofiles/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/databrew/service_endpoints_gen_test.go b/internal/service/databrew/service_endpoints_gen_test.go index 51c659b54bb..e623d94d9aa 100644 --- a/internal/service/databrew/service_endpoints_gen_test.go +++ b/internal/service/databrew/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/dataexchange/service_endpoints_gen_test.go b/internal/service/dataexchange/service_endpoints_gen_test.go index e174eb195eb..1baaaf508f9 100644 --- a/internal/service/dataexchange/service_endpoints_gen_test.go +++ b/internal/service/dataexchange/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/datapipeline/service_endpoints_gen_test.go b/internal/service/datapipeline/service_endpoints_gen_test.go index 6ec7fe7bbff..a3d95f46a63 100644 --- a/internal/service/datapipeline/service_endpoints_gen_test.go +++ b/internal/service/datapipeline/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/datasync/service_endpoints_gen_test.go b/internal/service/datasync/service_endpoints_gen_test.go index 97bedbe9482..028c5d42e07 100644 --- a/internal/service/datasync/service_endpoints_gen_test.go +++ b/internal/service/datasync/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/datazone/service_endpoints_gen_test.go b/internal/service/datazone/service_endpoints_gen_test.go index d7d0f2730e8..aae9308e9e7 100644 --- a/internal/service/datazone/service_endpoints_gen_test.go +++ b/internal/service/datazone/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/dax/service_endpoints_gen_test.go b/internal/service/dax/service_endpoints_gen_test.go index f8fd2d90bb1..10cf23fbedd 100644 --- a/internal/service/dax/service_endpoints_gen_test.go +++ b/internal/service/dax/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/deploy/service_endpoints_gen_test.go b/internal/service/deploy/service_endpoints_gen_test.go index 2cf6c69e054..b353742fc29 100644 --- a/internal/service/deploy/service_endpoints_gen_test.go +++ b/internal/service/deploy/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/detective/service_endpoints_gen_test.go b/internal/service/detective/service_endpoints_gen_test.go index f7e14ad1877..48403c2a41e 100644 --- a/internal/service/detective/service_endpoints_gen_test.go +++ b/internal/service/detective/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/devicefarm/service_endpoints_gen_test.go b/internal/service/devicefarm/service_endpoints_gen_test.go index 2e2c4e8562a..4ecc07c29b7 100644 --- a/internal/service/devicefarm/service_endpoints_gen_test.go +++ b/internal/service/devicefarm/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/devopsguru/service_endpoints_gen_test.go b/internal/service/devopsguru/service_endpoints_gen_test.go index 668a2d21795..8d62ced20dc 100644 --- a/internal/service/devopsguru/service_endpoints_gen_test.go +++ b/internal/service/devopsguru/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/directconnect/service_endpoints_gen_test.go b/internal/service/directconnect/service_endpoints_gen_test.go index 90b0c2842b5..6b919e87ed4 100644 --- a/internal/service/directconnect/service_endpoints_gen_test.go +++ b/internal/service/directconnect/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/dlm/service_endpoints_gen_test.go b/internal/service/dlm/service_endpoints_gen_test.go index 3295da2ebcc..a65bd6ad748 100644 --- a/internal/service/dlm/service_endpoints_gen_test.go +++ b/internal/service/dlm/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/dms/service_endpoints_gen_test.go b/internal/service/dms/service_endpoints_gen_test.go index d277409befe..63071fdcae5 100644 --- a/internal/service/dms/service_endpoints_gen_test.go +++ b/internal/service/dms/service_endpoints_gen_test.go @@ -603,14 +603,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/docdb/service_endpoints_gen_test.go b/internal/service/docdb/service_endpoints_gen_test.go index d113991d47f..af619796439 100644 --- a/internal/service/docdb/service_endpoints_gen_test.go +++ b/internal/service/docdb/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/docdbelastic/service_endpoints_gen_test.go b/internal/service/docdbelastic/service_endpoints_gen_test.go index 25707f020e5..6916483559d 100644 --- a/internal/service/docdbelastic/service_endpoints_gen_test.go +++ b/internal/service/docdbelastic/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/drs/service_endpoints_gen_test.go b/internal/service/drs/service_endpoints_gen_test.go index 27959a892b6..8c0f1e29137 100644 --- a/internal/service/drs/service_endpoints_gen_test.go +++ b/internal/service/drs/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ds/service_endpoints_gen_test.go b/internal/service/ds/service_endpoints_gen_test.go index c638b73886b..ac5a70b6281 100644 --- a/internal/service/ds/service_endpoints_gen_test.go +++ b/internal/service/ds/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/dynamodb/service_endpoints_gen_test.go b/internal/service/dynamodb/service_endpoints_gen_test.go index 5a5a82b299a..0f6cfe52f25 100644 --- a/internal/service/dynamodb/service_endpoints_gen_test.go +++ b/internal/service/dynamodb/service_endpoints_gen_test.go @@ -584,14 +584,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ec2/service_endpoints_gen_test.go b/internal/service/ec2/service_endpoints_gen_test.go index bc8c454f559..2562197fec4 100644 --- a/internal/service/ec2/service_endpoints_gen_test.go +++ b/internal/service/ec2/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ecr/service_endpoints_gen_test.go b/internal/service/ecr/service_endpoints_gen_test.go index 7d7229bfa3c..3deb58277cd 100644 --- a/internal/service/ecr/service_endpoints_gen_test.go +++ b/internal/service/ecr/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ecrpublic/service_endpoints_gen_test.go b/internal/service/ecrpublic/service_endpoints_gen_test.go index b448239fdec..7e37283a6e9 100644 --- a/internal/service/ecrpublic/service_endpoints_gen_test.go +++ b/internal/service/ecrpublic/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ecs/service_endpoints_gen_test.go b/internal/service/ecs/service_endpoints_gen_test.go index 6a1fdeb5170..e9d48effa9c 100644 --- a/internal/service/ecs/service_endpoints_gen_test.go +++ b/internal/service/ecs/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/efs/service_endpoints_gen_test.go b/internal/service/efs/service_endpoints_gen_test.go index 0ef947028ad..61a57dfea0d 100644 --- a/internal/service/efs/service_endpoints_gen_test.go +++ b/internal/service/efs/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/eks/service_endpoints_gen_test.go b/internal/service/eks/service_endpoints_gen_test.go index 1181e9c6b6a..0fa3c6d0ed8 100644 --- a/internal/service/eks/service_endpoints_gen_test.go +++ b/internal/service/eks/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/elasticache/service_endpoints_gen_test.go b/internal/service/elasticache/service_endpoints_gen_test.go index 66561e6c6f0..70e9998d1a5 100644 --- a/internal/service/elasticache/service_endpoints_gen_test.go +++ b/internal/service/elasticache/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/elasticbeanstalk/service_endpoints_gen_test.go b/internal/service/elasticbeanstalk/service_endpoints_gen_test.go index 8f970bb66f2..43462450e44 100644 --- a/internal/service/elasticbeanstalk/service_endpoints_gen_test.go +++ b/internal/service/elasticbeanstalk/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/elasticsearch/service_endpoints_gen_test.go b/internal/service/elasticsearch/service_endpoints_gen_test.go index 62aed15f32e..f6de8349d9a 100644 --- a/internal/service/elasticsearch/service_endpoints_gen_test.go +++ b/internal/service/elasticsearch/service_endpoints_gen_test.go @@ -603,14 +603,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/elastictranscoder/service_endpoints_gen_test.go b/internal/service/elastictranscoder/service_endpoints_gen_test.go index 3a575e20f22..e6a41baf784 100644 --- a/internal/service/elastictranscoder/service_endpoints_gen_test.go +++ b/internal/service/elastictranscoder/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/elb/service_endpoints_gen_test.go b/internal/service/elb/service_endpoints_gen_test.go index aeae5bc8f16..ad123d7ebac 100644 --- a/internal/service/elb/service_endpoints_gen_test.go +++ b/internal/service/elb/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/elbv2/service_endpoints_gen_test.go b/internal/service/elbv2/service_endpoints_gen_test.go index 3ba453dd8d8..d7ce6644fbb 100644 --- a/internal/service/elbv2/service_endpoints_gen_test.go +++ b/internal/service/elbv2/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/emr/service_endpoints_gen_test.go b/internal/service/emr/service_endpoints_gen_test.go index 53e39f5f9a5..27002431070 100644 --- a/internal/service/emr/service_endpoints_gen_test.go +++ b/internal/service/emr/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/emrcontainers/service_endpoints_gen_test.go b/internal/service/emrcontainers/service_endpoints_gen_test.go index 175758645a7..b58a97fea91 100644 --- a/internal/service/emrcontainers/service_endpoints_gen_test.go +++ b/internal/service/emrcontainers/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/emrserverless/service_endpoints_gen_test.go b/internal/service/emrserverless/service_endpoints_gen_test.go index 9ed185d27b9..2ed18a4cbd1 100644 --- a/internal/service/emrserverless/service_endpoints_gen_test.go +++ b/internal/service/emrserverless/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/events/service_endpoints_gen_test.go b/internal/service/events/service_endpoints_gen_test.go index afff382f21f..5e5e311d92d 100644 --- a/internal/service/events/service_endpoints_gen_test.go +++ b/internal/service/events/service_endpoints_gen_test.go @@ -603,14 +603,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/evidently/service_endpoints_gen_test.go b/internal/service/evidently/service_endpoints_gen_test.go index c0afa167f98..a195eefe1df 100644 --- a/internal/service/evidently/service_endpoints_gen_test.go +++ b/internal/service/evidently/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/finspace/service_endpoints_gen_test.go b/internal/service/finspace/service_endpoints_gen_test.go index 98e53cb5923..8a85a733e82 100644 --- a/internal/service/finspace/service_endpoints_gen_test.go +++ b/internal/service/finspace/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/firehose/service_endpoints_gen_test.go b/internal/service/firehose/service_endpoints_gen_test.go index e5ce88f6d37..74df003a60f 100644 --- a/internal/service/firehose/service_endpoints_gen_test.go +++ b/internal/service/firehose/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/fis/service_endpoints_gen_test.go b/internal/service/fis/service_endpoints_gen_test.go index 9cf07d653af..e64c9ea488a 100644 --- a/internal/service/fis/service_endpoints_gen_test.go +++ b/internal/service/fis/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/fms/service_endpoints_gen_test.go b/internal/service/fms/service_endpoints_gen_test.go index 4518e79c8ef..96548e89c18 100644 --- a/internal/service/fms/service_endpoints_gen_test.go +++ b/internal/service/fms/service_endpoints_gen_test.go @@ -448,14 +448,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/fsx/service_endpoints_gen_test.go b/internal/service/fsx/service_endpoints_gen_test.go index 922b885044c..7613bd88b72 100644 --- a/internal/service/fsx/service_endpoints_gen_test.go +++ b/internal/service/fsx/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/gamelift/service_endpoints_gen_test.go b/internal/service/gamelift/service_endpoints_gen_test.go index c22cb9bbf14..7f2be02a7bf 100644 --- a/internal/service/gamelift/service_endpoints_gen_test.go +++ b/internal/service/gamelift/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/glacier/service_endpoints_gen_test.go b/internal/service/glacier/service_endpoints_gen_test.go index b468527e4d1..79eace34388 100644 --- a/internal/service/glacier/service_endpoints_gen_test.go +++ b/internal/service/glacier/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/globalaccelerator/service_endpoints_gen_test.go b/internal/service/globalaccelerator/service_endpoints_gen_test.go index 7cf86ae2a3c..e3c31fbaa33 100644 --- a/internal/service/globalaccelerator/service_endpoints_gen_test.go +++ b/internal/service/globalaccelerator/service_endpoints_gen_test.go @@ -448,14 +448,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/glue/service_endpoints_gen_test.go b/internal/service/glue/service_endpoints_gen_test.go index 9da7219779e..a18eecfda58 100644 --- a/internal/service/glue/service_endpoints_gen_test.go +++ b/internal/service/glue/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/grafana/service_endpoints_gen_test.go b/internal/service/grafana/service_endpoints_gen_test.go index d9db6aa43ca..d2c65bd14fb 100644 --- a/internal/service/grafana/service_endpoints_gen_test.go +++ b/internal/service/grafana/service_endpoints_gen_test.go @@ -603,14 +603,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/greengrass/service_endpoints_gen_test.go b/internal/service/greengrass/service_endpoints_gen_test.go index b05eb37fec9..2d40b8e1718 100644 --- a/internal/service/greengrass/service_endpoints_gen_test.go +++ b/internal/service/greengrass/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/groundstation/service_endpoints_gen_test.go b/internal/service/groundstation/service_endpoints_gen_test.go index 98438121a26..22e0664bdd6 100644 --- a/internal/service/groundstation/service_endpoints_gen_test.go +++ b/internal/service/groundstation/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/guardduty/service_endpoints_gen_test.go b/internal/service/guardduty/service_endpoints_gen_test.go index 744c3268cd7..6918c0b91ff 100644 --- a/internal/service/guardduty/service_endpoints_gen_test.go +++ b/internal/service/guardduty/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/healthlake/service_endpoints_gen_test.go b/internal/service/healthlake/service_endpoints_gen_test.go index 11200726be0..00be72faa2c 100644 --- a/internal/service/healthlake/service_endpoints_gen_test.go +++ b/internal/service/healthlake/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/iam/service_endpoints_gen_test.go b/internal/service/iam/service_endpoints_gen_test.go index 6f8b3786825..65b0cca8ed8 100644 --- a/internal/service/iam/service_endpoints_gen_test.go +++ b/internal/service/iam/service_endpoints_gen_test.go @@ -584,14 +584,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/identitystore/service_endpoints_gen_test.go b/internal/service/identitystore/service_endpoints_gen_test.go index f80aed4ade0..5223dc6845c 100644 --- a/internal/service/identitystore/service_endpoints_gen_test.go +++ b/internal/service/identitystore/service_endpoints_gen_test.go @@ -448,14 +448,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/imagebuilder/service_endpoints_gen_test.go b/internal/service/imagebuilder/service_endpoints_gen_test.go index 73686a1041e..d7e3580e7a8 100644 --- a/internal/service/imagebuilder/service_endpoints_gen_test.go +++ b/internal/service/imagebuilder/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/inspector/service_endpoints_gen_test.go b/internal/service/inspector/service_endpoints_gen_test.go index ca305ad3994..d47f8af331b 100644 --- a/internal/service/inspector/service_endpoints_gen_test.go +++ b/internal/service/inspector/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/inspector2/service_endpoints_gen_test.go b/internal/service/inspector2/service_endpoints_gen_test.go index 2523dc2b352..5a20d82d677 100644 --- a/internal/service/inspector2/service_endpoints_gen_test.go +++ b/internal/service/inspector2/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/internetmonitor/service_endpoints_gen_test.go b/internal/service/internetmonitor/service_endpoints_gen_test.go index f0434020f4c..85b663d8f8d 100644 --- a/internal/service/internetmonitor/service_endpoints_gen_test.go +++ b/internal/service/internetmonitor/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/iot/service_endpoints_gen_test.go b/internal/service/iot/service_endpoints_gen_test.go index bf6f67bff33..a40ed8f51e1 100644 --- a/internal/service/iot/service_endpoints_gen_test.go +++ b/internal/service/iot/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/iotanalytics/service_endpoints_gen_test.go b/internal/service/iotanalytics/service_endpoints_gen_test.go index 5b5f4a5f965..63c0f7de229 100644 --- a/internal/service/iotanalytics/service_endpoints_gen_test.go +++ b/internal/service/iotanalytics/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/iotevents/service_endpoints_gen_test.go b/internal/service/iotevents/service_endpoints_gen_test.go index a79d9486820..0aacc8fdf31 100644 --- a/internal/service/iotevents/service_endpoints_gen_test.go +++ b/internal/service/iotevents/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ivs/service_endpoints_gen_test.go b/internal/service/ivs/service_endpoints_gen_test.go index f5f62e5e571..a28d374f6cd 100644 --- a/internal/service/ivs/service_endpoints_gen_test.go +++ b/internal/service/ivs/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ivschat/service_endpoints_gen_test.go b/internal/service/ivschat/service_endpoints_gen_test.go index fd395364de1..cc80a69cd26 100644 --- a/internal/service/ivschat/service_endpoints_gen_test.go +++ b/internal/service/ivschat/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/kafka/service_endpoints_gen_test.go b/internal/service/kafka/service_endpoints_gen_test.go index 0e1cad4dc8f..47f10332b4a 100644 --- a/internal/service/kafka/service_endpoints_gen_test.go +++ b/internal/service/kafka/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/kafkaconnect/service_endpoints_gen_test.go b/internal/service/kafkaconnect/service_endpoints_gen_test.go index 1944d366551..78936adfcab 100644 --- a/internal/service/kafkaconnect/service_endpoints_gen_test.go +++ b/internal/service/kafkaconnect/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/kendra/service_endpoints_gen_test.go b/internal/service/kendra/service_endpoints_gen_test.go index afe8ae2b1d2..79d57dfe870 100644 --- a/internal/service/kendra/service_endpoints_gen_test.go +++ b/internal/service/kendra/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/keyspaces/service_endpoints_gen_test.go b/internal/service/keyspaces/service_endpoints_gen_test.go index 1981f82c75b..104751e42a4 100644 --- a/internal/service/keyspaces/service_endpoints_gen_test.go +++ b/internal/service/keyspaces/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/kinesis/service_endpoints_gen_test.go b/internal/service/kinesis/service_endpoints_gen_test.go index b26f7c8e725..18570e2d333 100644 --- a/internal/service/kinesis/service_endpoints_gen_test.go +++ b/internal/service/kinesis/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/kinesisanalytics/service_endpoints_gen_test.go b/internal/service/kinesisanalytics/service_endpoints_gen_test.go index d12211193c6..50f1209dfae 100644 --- a/internal/service/kinesisanalytics/service_endpoints_gen_test.go +++ b/internal/service/kinesisanalytics/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/kinesisanalyticsv2/service_endpoints_gen_test.go b/internal/service/kinesisanalyticsv2/service_endpoints_gen_test.go index 87a85205cf6..746fa577c6a 100644 --- a/internal/service/kinesisanalyticsv2/service_endpoints_gen_test.go +++ b/internal/service/kinesisanalyticsv2/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/kinesisvideo/service_endpoints_gen_test.go b/internal/service/kinesisvideo/service_endpoints_gen_test.go index 01cfc6e0e2a..8ee88636874 100644 --- a/internal/service/kinesisvideo/service_endpoints_gen_test.go +++ b/internal/service/kinesisvideo/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/kms/service_endpoints_gen_test.go b/internal/service/kms/service_endpoints_gen_test.go index 7b548b12fb2..5cfb45fb6e3 100644 --- a/internal/service/kms/service_endpoints_gen_test.go +++ b/internal/service/kms/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/lakeformation/service_endpoints_gen_test.go b/internal/service/lakeformation/service_endpoints_gen_test.go index 0f89fbd9d1f..26303e21a0e 100644 --- a/internal/service/lakeformation/service_endpoints_gen_test.go +++ b/internal/service/lakeformation/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/lambda/service_endpoints_gen_test.go b/internal/service/lambda/service_endpoints_gen_test.go index c3b9b403391..b521cf3d7f6 100644 --- a/internal/service/lambda/service_endpoints_gen_test.go +++ b/internal/service/lambda/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/launchwizard/service_endpoints_gen_test.go b/internal/service/launchwizard/service_endpoints_gen_test.go index 7ba10b35434..3c8fce5992d 100644 --- a/internal/service/launchwizard/service_endpoints_gen_test.go +++ b/internal/service/launchwizard/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/lexmodels/service_endpoints_gen_test.go b/internal/service/lexmodels/service_endpoints_gen_test.go index 30d172749f1..d35fa658569 100644 --- a/internal/service/lexmodels/service_endpoints_gen_test.go +++ b/internal/service/lexmodels/service_endpoints_gen_test.go @@ -688,14 +688,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/lexv2models/service_endpoints_gen_test.go b/internal/service/lexv2models/service_endpoints_gen_test.go index 04e4c8a4d65..dab711a0075 100644 --- a/internal/service/lexv2models/service_endpoints_gen_test.go +++ b/internal/service/lexv2models/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/licensemanager/service_endpoints_gen_test.go b/internal/service/licensemanager/service_endpoints_gen_test.go index 07e126a210a..4977d11f7a4 100644 --- a/internal/service/licensemanager/service_endpoints_gen_test.go +++ b/internal/service/licensemanager/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/lightsail/service_endpoints_gen_test.go b/internal/service/lightsail/service_endpoints_gen_test.go index 4b66fdcb547..07595d1915b 100644 --- a/internal/service/lightsail/service_endpoints_gen_test.go +++ b/internal/service/lightsail/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/logs/service_endpoints_gen_test.go b/internal/service/logs/service_endpoints_gen_test.go index 2a43a35018c..fc6f599af13 100644 --- a/internal/service/logs/service_endpoints_gen_test.go +++ b/internal/service/logs/service_endpoints_gen_test.go @@ -603,14 +603,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/lookoutmetrics/service_endpoints_gen_test.go b/internal/service/lookoutmetrics/service_endpoints_gen_test.go index 05fc8364fc6..bb4975163c5 100644 --- a/internal/service/lookoutmetrics/service_endpoints_gen_test.go +++ b/internal/service/lookoutmetrics/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/m2/service_endpoints_gen_test.go b/internal/service/m2/service_endpoints_gen_test.go index de5debb2c93..5550ecd6fb7 100644 --- a/internal/service/m2/service_endpoints_gen_test.go +++ b/internal/service/m2/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/macie2/service_endpoints_gen_test.go b/internal/service/macie2/service_endpoints_gen_test.go index 80a094eabaf..f8a8e469280 100644 --- a/internal/service/macie2/service_endpoints_gen_test.go +++ b/internal/service/macie2/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/mediaconnect/service_endpoints_gen_test.go b/internal/service/mediaconnect/service_endpoints_gen_test.go index 3f3e1213e9f..8a4351ffad0 100644 --- a/internal/service/mediaconnect/service_endpoints_gen_test.go +++ b/internal/service/mediaconnect/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/mediaconvert/service_endpoints_gen_test.go b/internal/service/mediaconvert/service_endpoints_gen_test.go index 51deed3013f..2f802b1f7fb 100644 --- a/internal/service/mediaconvert/service_endpoints_gen_test.go +++ b/internal/service/mediaconvert/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/medialive/service_endpoints_gen_test.go b/internal/service/medialive/service_endpoints_gen_test.go index d2ff84c4b6d..4d849e63551 100644 --- a/internal/service/medialive/service_endpoints_gen_test.go +++ b/internal/service/medialive/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/mediapackage/service_endpoints_gen_test.go b/internal/service/mediapackage/service_endpoints_gen_test.go index 2a4f6cdd788..1543ca65ecd 100644 --- a/internal/service/mediapackage/service_endpoints_gen_test.go +++ b/internal/service/mediapackage/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/mediapackagev2/service_endpoints_gen_test.go b/internal/service/mediapackagev2/service_endpoints_gen_test.go index fab2b6f1b32..3355ec9939e 100644 --- a/internal/service/mediapackagev2/service_endpoints_gen_test.go +++ b/internal/service/mediapackagev2/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/mediastore/service_endpoints_gen_test.go b/internal/service/mediastore/service_endpoints_gen_test.go index 15ae8686486..d09a6e5e8e5 100644 --- a/internal/service/mediastore/service_endpoints_gen_test.go +++ b/internal/service/mediastore/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/memorydb/service_endpoints_gen_test.go b/internal/service/memorydb/service_endpoints_gen_test.go index e1a0f90f420..b0bc3a83512 100644 --- a/internal/service/memorydb/service_endpoints_gen_test.go +++ b/internal/service/memorydb/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/mq/service_endpoints_gen_test.go b/internal/service/mq/service_endpoints_gen_test.go index a018a0c7826..455f0318d3d 100644 --- a/internal/service/mq/service_endpoints_gen_test.go +++ b/internal/service/mq/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/neptune/service_endpoints_gen_test.go b/internal/service/neptune/service_endpoints_gen_test.go index ae1a79862a2..9d62ffd63f7 100644 --- a/internal/service/neptune/service_endpoints_gen_test.go +++ b/internal/service/neptune/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/networkfirewall/service_endpoints_gen_test.go b/internal/service/networkfirewall/service_endpoints_gen_test.go index 09ef8d43516..a7abb1afc94 100644 --- a/internal/service/networkfirewall/service_endpoints_gen_test.go +++ b/internal/service/networkfirewall/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/networkmanager/service_endpoints_gen_test.go b/internal/service/networkmanager/service_endpoints_gen_test.go index d0e196defd7..da112b836e9 100644 --- a/internal/service/networkmanager/service_endpoints_gen_test.go +++ b/internal/service/networkmanager/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/networkmonitor/service_endpoints_gen_test.go b/internal/service/networkmonitor/service_endpoints_gen_test.go index 7182f23b502..96a0cfd89ae 100644 --- a/internal/service/networkmonitor/service_endpoints_gen_test.go +++ b/internal/service/networkmonitor/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/oam/service_endpoints_gen_test.go b/internal/service/oam/service_endpoints_gen_test.go index 6b10039fdfb..830082c2d8f 100644 --- a/internal/service/oam/service_endpoints_gen_test.go +++ b/internal/service/oam/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/opensearch/service_endpoints_gen_test.go b/internal/service/opensearch/service_endpoints_gen_test.go index 44171c3b91a..643e9534643 100644 --- a/internal/service/opensearch/service_endpoints_gen_test.go +++ b/internal/service/opensearch/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/opensearchserverless/service_endpoints_gen_test.go b/internal/service/opensearchserverless/service_endpoints_gen_test.go index 044dac2bdba..89a7301f56d 100644 --- a/internal/service/opensearchserverless/service_endpoints_gen_test.go +++ b/internal/service/opensearchserverless/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/opsworks/service_endpoints_gen_test.go b/internal/service/opsworks/service_endpoints_gen_test.go index 2873117e0d5..d7e053650a1 100644 --- a/internal/service/opsworks/service_endpoints_gen_test.go +++ b/internal/service/opsworks/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/organizations/service_endpoints_gen_test.go b/internal/service/organizations/service_endpoints_gen_test.go index a7f9700896e..ff4b9b31a5d 100644 --- a/internal/service/organizations/service_endpoints_gen_test.go +++ b/internal/service/organizations/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/osis/service_endpoints_gen_test.go b/internal/service/osis/service_endpoints_gen_test.go index 88ae205b501..de95d29fa99 100644 --- a/internal/service/osis/service_endpoints_gen_test.go +++ b/internal/service/osis/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/outposts/service_endpoints_gen_test.go b/internal/service/outposts/service_endpoints_gen_test.go index 7eb501943c2..1f5a9e58ca3 100644 --- a/internal/service/outposts/service_endpoints_gen_test.go +++ b/internal/service/outposts/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/pcaconnectorad/service_endpoints_gen_test.go b/internal/service/pcaconnectorad/service_endpoints_gen_test.go index 902131dd5cf..4294452fa25 100644 --- a/internal/service/pcaconnectorad/service_endpoints_gen_test.go +++ b/internal/service/pcaconnectorad/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/pcs/service_endpoints_gen_test.go b/internal/service/pcs/service_endpoints_gen_test.go index 81d9ad95d6b..d3537097fcd 100644 --- a/internal/service/pcs/service_endpoints_gen_test.go +++ b/internal/service/pcs/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/pinpoint/service_endpoints_gen_test.go b/internal/service/pinpoint/service_endpoints_gen_test.go index b077f7e1fdd..5a25cbf1312 100644 --- a/internal/service/pinpoint/service_endpoints_gen_test.go +++ b/internal/service/pinpoint/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/pinpointsmsvoicev2/service_endpoints_gen_test.go b/internal/service/pinpointsmsvoicev2/service_endpoints_gen_test.go index 08f908915ce..557df08cc89 100644 --- a/internal/service/pinpointsmsvoicev2/service_endpoints_gen_test.go +++ b/internal/service/pinpointsmsvoicev2/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/pipes/service_endpoints_gen_test.go b/internal/service/pipes/service_endpoints_gen_test.go index f86efd854b5..c7a08f24fd8 100644 --- a/internal/service/pipes/service_endpoints_gen_test.go +++ b/internal/service/pipes/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/polly/service_endpoints_gen_test.go b/internal/service/polly/service_endpoints_gen_test.go index 9530d3f7cec..0b0315e8f51 100644 --- a/internal/service/polly/service_endpoints_gen_test.go +++ b/internal/service/polly/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/pricing/service_endpoints_gen_test.go b/internal/service/pricing/service_endpoints_gen_test.go index 961af20d0c5..7b1f6eff603 100644 --- a/internal/service/pricing/service_endpoints_gen_test.go +++ b/internal/service/pricing/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/qbusiness/service_endpoints_gen_test.go b/internal/service/qbusiness/service_endpoints_gen_test.go index f676e02d47f..1d5142f2883 100644 --- a/internal/service/qbusiness/service_endpoints_gen_test.go +++ b/internal/service/qbusiness/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/qldb/service_endpoints_gen_test.go b/internal/service/qldb/service_endpoints_gen_test.go index 80e72aca36f..be4bc24d33e 100644 --- a/internal/service/qldb/service_endpoints_gen_test.go +++ b/internal/service/qldb/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/quicksight/service_endpoints_gen_test.go b/internal/service/quicksight/service_endpoints_gen_test.go index b4f929fee6c..163879b1285 100644 --- a/internal/service/quicksight/service_endpoints_gen_test.go +++ b/internal/service/quicksight/service_endpoints_gen_test.go @@ -449,14 +449,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ram/service_endpoints_gen_test.go b/internal/service/ram/service_endpoints_gen_test.go index 8aedd0ec185..41d38bec2c0 100644 --- a/internal/service/ram/service_endpoints_gen_test.go +++ b/internal/service/ram/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/rbin/service_endpoints_gen_test.go b/internal/service/rbin/service_endpoints_gen_test.go index 1c933ec17b3..b65e7801dc8 100644 --- a/internal/service/rbin/service_endpoints_gen_test.go +++ b/internal/service/rbin/service_endpoints_gen_test.go @@ -529,14 +529,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/rds/service_endpoints_gen_test.go b/internal/service/rds/service_endpoints_gen_test.go index 8a6dadf2367..9618c378606 100644 --- a/internal/service/rds/service_endpoints_gen_test.go +++ b/internal/service/rds/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/redshift/service_endpoints_gen_test.go b/internal/service/redshift/service_endpoints_gen_test.go index 65b75cbc57e..3e8b72a82ce 100644 --- a/internal/service/redshift/service_endpoints_gen_test.go +++ b/internal/service/redshift/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/redshiftdata/service_endpoints_gen_test.go b/internal/service/redshiftdata/service_endpoints_gen_test.go index b367764e86e..fc86a37801e 100644 --- a/internal/service/redshiftdata/service_endpoints_gen_test.go +++ b/internal/service/redshiftdata/service_endpoints_gen_test.go @@ -528,14 +528,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/redshiftserverless/service_endpoints_gen_test.go b/internal/service/redshiftserverless/service_endpoints_gen_test.go index 16c8901dcdd..da620ff9712 100644 --- a/internal/service/redshiftserverless/service_endpoints_gen_test.go +++ b/internal/service/redshiftserverless/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/rekognition/service_endpoints_gen_test.go b/internal/service/rekognition/service_endpoints_gen_test.go index 49e2d4acd86..c0fa50dd7f4 100644 --- a/internal/service/rekognition/service_endpoints_gen_test.go +++ b/internal/service/rekognition/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/resiliencehub/service_endpoints_gen_test.go b/internal/service/resiliencehub/service_endpoints_gen_test.go index baf29d605d0..b31ccfd5e02 100644 --- a/internal/service/resiliencehub/service_endpoints_gen_test.go +++ b/internal/service/resiliencehub/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/resourceexplorer2/service_endpoints_gen_test.go b/internal/service/resourceexplorer2/service_endpoints_gen_test.go index 211f81a37ec..59d4d24f8a2 100644 --- a/internal/service/resourceexplorer2/service_endpoints_gen_test.go +++ b/internal/service/resourceexplorer2/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/resourcegroups/service_endpoints_gen_test.go b/internal/service/resourcegroups/service_endpoints_gen_test.go index bf6d24625aa..f6223e4741f 100644 --- a/internal/service/resourcegroups/service_endpoints_gen_test.go +++ b/internal/service/resourcegroups/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/resourcegroupstaggingapi/service_endpoints_gen_test.go b/internal/service/resourcegroupstaggingapi/service_endpoints_gen_test.go index bfdcc6909f1..575bd2b1d70 100644 --- a/internal/service/resourcegroupstaggingapi/service_endpoints_gen_test.go +++ b/internal/service/resourcegroupstaggingapi/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/rolesanywhere/service_endpoints_gen_test.go b/internal/service/rolesanywhere/service_endpoints_gen_test.go index aa2984b5af4..3757d6725d2 100644 --- a/internal/service/rolesanywhere/service_endpoints_gen_test.go +++ b/internal/service/rolesanywhere/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/route53/service_endpoints_gen_test.go b/internal/service/route53/service_endpoints_gen_test.go index c99e9a86c2b..938634472c6 100644 --- a/internal/service/route53/service_endpoints_gen_test.go +++ b/internal/service/route53/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/route53domains/service_endpoints_gen_test.go b/internal/service/route53domains/service_endpoints_gen_test.go index eef4df7704a..27fbd43060d 100644 --- a/internal/service/route53domains/service_endpoints_gen_test.go +++ b/internal/service/route53domains/service_endpoints_gen_test.go @@ -448,14 +448,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/route53recoverycontrolconfig/service_endpoints_gen_test.go b/internal/service/route53recoverycontrolconfig/service_endpoints_gen_test.go index c3f0a6d57fa..e705a328409 100644 --- a/internal/service/route53recoverycontrolconfig/service_endpoints_gen_test.go +++ b/internal/service/route53recoverycontrolconfig/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/route53recoveryreadiness/service_endpoints_gen_test.go b/internal/service/route53recoveryreadiness/service_endpoints_gen_test.go index 854b1c2350b..ad42a20c5b7 100644 --- a/internal/service/route53recoveryreadiness/service_endpoints_gen_test.go +++ b/internal/service/route53recoveryreadiness/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/route53resolver/service_endpoints_gen_test.go b/internal/service/route53resolver/service_endpoints_gen_test.go index 7da8273ca84..ee0c9573211 100644 --- a/internal/service/route53resolver/service_endpoints_gen_test.go +++ b/internal/service/route53resolver/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/rum/service_endpoints_gen_test.go b/internal/service/rum/service_endpoints_gen_test.go index 34f4c585da7..85928df9970 100644 --- a/internal/service/rum/service_endpoints_gen_test.go +++ b/internal/service/rum/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/s3/service_endpoints_gen_test.go b/internal/service/s3/service_endpoints_gen_test.go index 4b9d357b354..069757a06ac 100644 --- a/internal/service/s3/service_endpoints_gen_test.go +++ b/internal/service/s3/service_endpoints_gen_test.go @@ -678,14 +678,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/s3outposts/service_endpoints_gen_test.go b/internal/service/s3outposts/service_endpoints_gen_test.go index 39714787d68..801a9e7b9a0 100644 --- a/internal/service/s3outposts/service_endpoints_gen_test.go +++ b/internal/service/s3outposts/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/sagemaker/service_endpoints_gen_test.go b/internal/service/sagemaker/service_endpoints_gen_test.go index 9aed3fb2303..a6a89855b33 100644 --- a/internal/service/sagemaker/service_endpoints_gen_test.go +++ b/internal/service/sagemaker/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/scheduler/service_endpoints_gen_test.go b/internal/service/scheduler/service_endpoints_gen_test.go index a6b5ed0cd10..832f4768991 100644 --- a/internal/service/scheduler/service_endpoints_gen_test.go +++ b/internal/service/scheduler/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/schemas/service_endpoints_gen_test.go b/internal/service/schemas/service_endpoints_gen_test.go index 7d72eb7e8df..1ef015fab9c 100644 --- a/internal/service/schemas/service_endpoints_gen_test.go +++ b/internal/service/schemas/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/secretsmanager/service_endpoints_gen_test.go b/internal/service/secretsmanager/service_endpoints_gen_test.go index 5381fd42941..a678e411d31 100644 --- a/internal/service/secretsmanager/service_endpoints_gen_test.go +++ b/internal/service/secretsmanager/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/securityhub/service_endpoints_gen_test.go b/internal/service/securityhub/service_endpoints_gen_test.go index 5048484f751..a5016a78224 100644 --- a/internal/service/securityhub/service_endpoints_gen_test.go +++ b/internal/service/securityhub/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/securitylake/service_endpoints_gen_test.go b/internal/service/securitylake/service_endpoints_gen_test.go index 47e5b8fa904..a025c31ebfa 100644 --- a/internal/service/securitylake/service_endpoints_gen_test.go +++ b/internal/service/securitylake/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/serverlessrepo/service_endpoints_gen_test.go b/internal/service/serverlessrepo/service_endpoints_gen_test.go index 0221d9496a6..13a395f0a39 100644 --- a/internal/service/serverlessrepo/service_endpoints_gen_test.go +++ b/internal/service/serverlessrepo/service_endpoints_gen_test.go @@ -603,14 +603,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/servicecatalog/service_endpoints_gen_test.go b/internal/service/servicecatalog/service_endpoints_gen_test.go index bf5ffc3d0fa..e0eabae2324 100644 --- a/internal/service/servicecatalog/service_endpoints_gen_test.go +++ b/internal/service/servicecatalog/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/servicecatalogappregistry/service_endpoints_gen_test.go b/internal/service/servicecatalogappregistry/service_endpoints_gen_test.go index fcf3b29af89..b09df78fb4b 100644 --- a/internal/service/servicecatalogappregistry/service_endpoints_gen_test.go +++ b/internal/service/servicecatalogappregistry/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/servicediscovery/service_endpoints_gen_test.go b/internal/service/servicediscovery/service_endpoints_gen_test.go index 286d5b863a1..49dd5a4ca8b 100644 --- a/internal/service/servicediscovery/service_endpoints_gen_test.go +++ b/internal/service/servicediscovery/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/servicequotas/service_endpoints_gen_test.go b/internal/service/servicequotas/service_endpoints_gen_test.go index e7ce9f9441c..afe671df671 100644 --- a/internal/service/servicequotas/service_endpoints_gen_test.go +++ b/internal/service/servicequotas/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ses/service_endpoints_gen_test.go b/internal/service/ses/service_endpoints_gen_test.go index 0e5de43ae24..2003c94a17d 100644 --- a/internal/service/ses/service_endpoints_gen_test.go +++ b/internal/service/ses/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/sesv2/service_endpoints_gen_test.go b/internal/service/sesv2/service_endpoints_gen_test.go index 32c34eadf7d..c5c901c9b4b 100644 --- a/internal/service/sesv2/service_endpoints_gen_test.go +++ b/internal/service/sesv2/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/sfn/service_endpoints_gen_test.go b/internal/service/sfn/service_endpoints_gen_test.go index b597f73a0f4..8929acbae15 100644 --- a/internal/service/sfn/service_endpoints_gen_test.go +++ b/internal/service/sfn/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/shield/service_endpoints_gen_test.go b/internal/service/shield/service_endpoints_gen_test.go index e253983b2b3..fb38f536e3d 100644 --- a/internal/service/shield/service_endpoints_gen_test.go +++ b/internal/service/shield/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/signer/service_endpoints_gen_test.go b/internal/service/signer/service_endpoints_gen_test.go index 1417f066054..b05fdec7081 100644 --- a/internal/service/signer/service_endpoints_gen_test.go +++ b/internal/service/signer/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/sns/service_endpoints_gen_test.go b/internal/service/sns/service_endpoints_gen_test.go index 029dbe90783..307754c9c25 100644 --- a/internal/service/sns/service_endpoints_gen_test.go +++ b/internal/service/sns/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/sqs/service_endpoints_gen_test.go b/internal/service/sqs/service_endpoints_gen_test.go index 0ff8978e191..c177070ccd3 100644 --- a/internal/service/sqs/service_endpoints_gen_test.go +++ b/internal/service/sqs/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ssm/service_endpoints_gen_test.go b/internal/service/ssm/service_endpoints_gen_test.go index 146052a71c5..f9d303ea2f8 100644 --- a/internal/service/ssm/service_endpoints_gen_test.go +++ b/internal/service/ssm/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ssmcontacts/service_endpoints_gen_test.go b/internal/service/ssmcontacts/service_endpoints_gen_test.go index 4c86b377747..a2eac6f33c5 100644 --- a/internal/service/ssmcontacts/service_endpoints_gen_test.go +++ b/internal/service/ssmcontacts/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ssmincidents/service_endpoints_gen_test.go b/internal/service/ssmincidents/service_endpoints_gen_test.go index 0c1b1781e5d..a3386dac68a 100644 --- a/internal/service/ssmincidents/service_endpoints_gen_test.go +++ b/internal/service/ssmincidents/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ssmquicksetup/service_endpoints_gen_test.go b/internal/service/ssmquicksetup/service_endpoints_gen_test.go index 4f351792957..d96cab74acf 100644 --- a/internal/service/ssmquicksetup/service_endpoints_gen_test.go +++ b/internal/service/ssmquicksetup/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ssmsap/service_endpoints_gen_test.go b/internal/service/ssmsap/service_endpoints_gen_test.go index be0cfe0fa7e..92641d00724 100644 --- a/internal/service/ssmsap/service_endpoints_gen_test.go +++ b/internal/service/ssmsap/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/sso/service_endpoints_gen_test.go b/internal/service/sso/service_endpoints_gen_test.go index d5d40e5c62d..721a424de6c 100644 --- a/internal/service/sso/service_endpoints_gen_test.go +++ b/internal/service/sso/service_endpoints_gen_test.go @@ -448,14 +448,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/ssoadmin/service_endpoints_gen_test.go b/internal/service/ssoadmin/service_endpoints_gen_test.go index 0cd8bcb969a..457846bff5e 100644 --- a/internal/service/ssoadmin/service_endpoints_gen_test.go +++ b/internal/service/ssoadmin/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/storagegateway/service_endpoints_gen_test.go b/internal/service/storagegateway/service_endpoints_gen_test.go index 14833be2cba..258bf851026 100644 --- a/internal/service/storagegateway/service_endpoints_gen_test.go +++ b/internal/service/storagegateway/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/sts/service_endpoints_gen_test.go b/internal/service/sts/service_endpoints_gen_test.go index d7a759d0ff7..575629852b2 100644 --- a/internal/service/sts/service_endpoints_gen_test.go +++ b/internal/service/sts/service_endpoints_gen_test.go @@ -584,14 +584,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/swf/service_endpoints_gen_test.go b/internal/service/swf/service_endpoints_gen_test.go index 3770ef7dce3..b875e94201f 100644 --- a/internal/service/swf/service_endpoints_gen_test.go +++ b/internal/service/swf/service_endpoints_gen_test.go @@ -448,14 +448,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/synthetics/service_endpoints_gen_test.go b/internal/service/synthetics/service_endpoints_gen_test.go index 197e0e958c1..ca753d947fb 100644 --- a/internal/service/synthetics/service_endpoints_gen_test.go +++ b/internal/service/synthetics/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/taxsettings/service_endpoints_gen_test.go b/internal/service/taxsettings/service_endpoints_gen_test.go index 4c737598da7..c5aea02bcbb 100644 --- a/internal/service/taxsettings/service_endpoints_gen_test.go +++ b/internal/service/taxsettings/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/timestreaminfluxdb/service_endpoints_gen_test.go b/internal/service/timestreaminfluxdb/service_endpoints_gen_test.go index e09334e09a8..343dd9f8e2f 100644 --- a/internal/service/timestreaminfluxdb/service_endpoints_gen_test.go +++ b/internal/service/timestreaminfluxdb/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/transcribe/service_endpoints_gen_test.go b/internal/service/transcribe/service_endpoints_gen_test.go index 20ce4111b72..7264758710e 100644 --- a/internal/service/transcribe/service_endpoints_gen_test.go +++ b/internal/service/transcribe/service_endpoints_gen_test.go @@ -526,14 +526,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/transfer/service_endpoints_gen_test.go b/internal/service/transfer/service_endpoints_gen_test.go index 703702f3ed4..b06fbada878 100644 --- a/internal/service/transfer/service_endpoints_gen_test.go +++ b/internal/service/transfer/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/verifiedpermissions/service_endpoints_gen_test.go b/internal/service/verifiedpermissions/service_endpoints_gen_test.go index fb87621a74e..e7d767882d2 100644 --- a/internal/service/verifiedpermissions/service_endpoints_gen_test.go +++ b/internal/service/verifiedpermissions/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/vpclattice/service_endpoints_gen_test.go b/internal/service/vpclattice/service_endpoints_gen_test.go index d3eca383193..5ddc2605126 100644 --- a/internal/service/vpclattice/service_endpoints_gen_test.go +++ b/internal/service/vpclattice/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/waf/service_endpoints_gen_test.go b/internal/service/waf/service_endpoints_gen_test.go index 9d3d5d968b2..d240a73737f 100644 --- a/internal/service/waf/service_endpoints_gen_test.go +++ b/internal/service/waf/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/wafregional/service_endpoints_gen_test.go b/internal/service/wafregional/service_endpoints_gen_test.go index 91cdb80f679..d2ce9e1fc8d 100644 --- a/internal/service/wafregional/service_endpoints_gen_test.go +++ b/internal/service/wafregional/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/wafv2/service_endpoints_gen_test.go b/internal/service/wafv2/service_endpoints_gen_test.go index 2946c9e85ef..fac47ef508a 100644 --- a/internal/service/wafv2/service_endpoints_gen_test.go +++ b/internal/service/wafv2/service_endpoints_gen_test.go @@ -449,14 +449,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/wellarchitected/service_endpoints_gen_test.go b/internal/service/wellarchitected/service_endpoints_gen_test.go index b87b57105cb..3c67298f49d 100644 --- a/internal/service/wellarchitected/service_endpoints_gen_test.go +++ b/internal/service/wellarchitected/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/worklink/service_endpoints_gen_test.go b/internal/service/worklink/service_endpoints_gen_test.go index aa464604a7d..ec7330b8ece 100644 --- a/internal/service/worklink/service_endpoints_gen_test.go +++ b/internal/service/worklink/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/workspaces/service_endpoints_gen_test.go b/internal/service/workspaces/service_endpoints_gen_test.go index 08f5e550afe..affd4f253cf 100644 --- a/internal/service/workspaces/service_endpoints_gen_test.go +++ b/internal/service/workspaces/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/workspacesweb/service_endpoints_gen_test.go b/internal/service/workspacesweb/service_endpoints_gen_test.go index f07d70b956c..a4f6f0e89f8 100644 --- a/internal/service/workspacesweb/service_endpoints_gen_test.go +++ b/internal/service/workspacesweb/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { diff --git a/internal/service/xray/service_endpoints_gen_test.go b/internal/service/xray/service_endpoints_gen_test.go index 7d153eedbc3..476a77a92df 100644 --- a/internal/service/xray/service_endpoints_gen_test.go +++ b/internal/service/xray/service_endpoints_gen_test.go @@ -446,14 +446,6 @@ func testEndpointCase(t *testing.T, region string, testcase endpointTestCase, ca } expectedDiags := testcase.expected.diags - expectedDiags = append( - expectedDiags, - errs.NewWarningDiagnostic( - "AWS account ID not found for provider", - "See https://registry.terraform.io/providers/hashicorp/aws/latest/docs#skip_requesting_account_id for implications.", - ), - ) - diags := p.Configure(ctx, terraformsdk.NewResourceConfigRaw(config)) if diff := cmp.Diff(diags, expectedDiags, cmp.Comparer(sdkdiag.Comparer)); diff != "" { From 2815774ecf27f3afc4dd1aa03022e69490405c03 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Fri, 22 Nov 2024 08:47:20 -0500 Subject: [PATCH 028/118] dependabot: Remove '/tools/awssdkpatch'. --- .github/dependabot.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 44574223b4d..a3e92a1002a 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -47,7 +47,6 @@ updates: - "/.ci/providerlint" - "/.ci/tools" - "/skaff" - - "/tools/awssdkpatch" - "/tools/tfsdk2fw" schedule: interval: "daily" From 35deeb7f363136c864aaaf4be2bdda1fd8b7fec5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Nov 2024 13:54:53 +0000 Subject: [PATCH 029/118] Bump the aws-sdk-go-v2 group across 1 directory with 20 updates Bumps the aws-sdk-go-v2 group with 19 updates in the / directory: | Package | From | To | | --- | --- | --- | | [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2) | `1.17.39` | `1.17.40` | | [github.com/aws/aws-sdk-go-v2/service/apigateway](https://github.com/aws/aws-sdk-go-v2) | `1.27.6` | `1.28.0` | | [github.com/aws/aws-sdk-go-v2/service/applicationautoscaling](https://github.com/aws/aws-sdk-go-v2) | `1.33.6` | `1.34.0` | | [github.com/aws/aws-sdk-go-v2/service/appsync](https://github.com/aws/aws-sdk-go-v2) | `1.39.3` | `1.40.0` | | [github.com/aws/aws-sdk-go-v2/service/cloudfront](https://github.com/aws/aws-sdk-go-v2) | `1.42.0` | `1.43.0` | | [github.com/aws/aws-sdk-go-v2/service/cloudtrail](https://github.com/aws/aws-sdk-go-v2) | `1.45.1` | `1.46.0` | | [github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs](https://github.com/aws/aws-sdk-go-v2) | `1.43.3` | `1.44.0` | | [github.com/aws/aws-sdk-go-v2/service/costexplorer](https://github.com/aws/aws-sdk-go-v2) | `1.43.6` | `1.44.0` | | [github.com/aws/aws-sdk-go-v2/service/dlm](https://github.com/aws/aws-sdk-go-v2) | `1.28.6` | `1.28.7` | | [github.com/aws/aws-sdk-go-v2/service/ec2](https://github.com/aws/aws-sdk-go-v2) | `1.192.0` | `1.193.0` | | [github.com/aws/aws-sdk-go-v2/service/elasticache](https://github.com/aws/aws-sdk-go-v2) | `1.43.3` | `1.44.0` | | [github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2](https://github.com/aws/aws-sdk-go-v2) | `1.42.0` | `1.42.1` | | [github.com/aws/aws-sdk-go-v2/service/iot](https://github.com/aws/aws-sdk-go-v2) | `1.60.1` | `1.61.0` | | [github.com/aws/aws-sdk-go-v2/service/lambda](https://github.com/aws/aws-sdk-go-v2) | `1.67.0` | `1.68.0` | | [github.com/aws/aws-sdk-go-v2/service/polly](https://github.com/aws/aws-sdk-go-v2) | `1.45.6` | `1.45.7` | | [github.com/aws/aws-sdk-go-v2/service/resiliencehub](https://github.com/aws/aws-sdk-go-v2) | `1.27.4` | `1.28.0` | | [github.com/aws/aws-sdk-go-v2/service/ssm](https://github.com/aws/aws-sdk-go-v2) | `1.55.6` | `1.56.0` | | [github.com/aws/aws-sdk-go-v2/service/ssmquicksetup](https://github.com/aws/aws-sdk-go-v2) | `1.2.7` | `1.3.0` | | [github.com/aws/aws-sdk-go-v2/service/xray](https://github.com/aws/aws-sdk-go-v2) | `1.29.6` | `1.30.0` | Updates `github.com/aws/aws-sdk-go-v2/feature/s3/manager` from 1.17.39 to 1.17.40 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/credentials/v1.17.39...credentials/v1.17.40) Updates `github.com/aws/aws-sdk-go-v2/service/apigateway` from 1.27.6 to 1.28.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.6...v1.28.0) Updates `github.com/aws/aws-sdk-go-v2/service/applicationautoscaling` from 1.33.6 to 1.34.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/service/s3/v1.34.0/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/sfn/v1.33.6...service/s3/v1.34.0) Updates `github.com/aws/aws-sdk-go-v2/service/appsync` from 1.39.3 to 1.40.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/ivs/v1.39.3...service/s3/v1.40.0) Updates `github.com/aws/aws-sdk-go-v2/service/cloudfront` from 1.42.0 to 1.43.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.42.0...service/s3/v1.43.0) Updates `github.com/aws/aws-sdk-go-v2/service/cloudtrail` from 1.45.1 to 1.46.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.45.1...service/s3/v1.46.0) Updates `github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs` from 1.43.3 to 1.44.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/ssm/v1.43.3...service/s3/v1.44.0) Updates `github.com/aws/aws-sdk-go-v2/service/costexplorer` from 1.43.6 to 1.44.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/fsx/v1.43.6...service/s3/v1.44.0) Updates `github.com/aws/aws-sdk-go-v2/service/dlm` from 1.28.6 to 1.28.7 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/sts/v1.28.6...service/mgn/v1.28.7) Updates `github.com/aws/aws-sdk-go-v2/service/ec2` from 1.192.0 to 1.193.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/ec2/v1.192.0...service/ec2/v1.193.0) Updates `github.com/aws/aws-sdk-go-v2/service/elasticache` from 1.43.3 to 1.44.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/ssm/v1.43.3...service/s3/v1.44.0) Updates `github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2` from 1.42.0 to 1.42.1 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.42.0...service/s3/v1.42.1) Updates `github.com/aws/aws-sdk-go-v2/service/iot` from 1.60.1 to 1.61.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.60.1...service/s3/v1.61.0) Updates `github.com/aws/aws-sdk-go-v2/service/lambda` from 1.67.0 to 1.68.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.67.0...service/s3/v1.68.0) Updates `github.com/aws/aws-sdk-go-v2/service/polly` from 1.45.6 to 1.45.7 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/polly/v1.45.6...service/polly/v1.45.7) Updates `github.com/aws/aws-sdk-go-v2/service/resiliencehub` from 1.27.4 to 1.28.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.27.4...v1.28.0) Updates `github.com/aws/aws-sdk-go-v2/service/s3` from 1.67.1 to 1.68.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.67.1...service/s3/v1.68.0) Updates `github.com/aws/aws-sdk-go-v2/service/ssm` from 1.55.6 to 1.56.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/iot/v1.55.6...service/s3/v1.56.0) Updates `github.com/aws/aws-sdk-go-v2/service/ssmquicksetup` from 1.2.7 to 1.3.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/v1.3.0/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/pcs/v1.2.7...v1.3.0) Updates `github.com/aws/aws-sdk-go-v2/service/xray` from 1.29.6 to 1.30.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/pi/v1.29.6...v1.30.0) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/feature/s3/manager dependency-type: direct:production update-type: version-update:semver-patch dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/apigateway dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/applicationautoscaling dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/appsync dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudfront dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudtrail dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/costexplorer dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/dlm dependency-type: direct:production update-type: version-update:semver-patch dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/ec2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/elasticache dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/iot dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/lambda dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/polly dependency-type: direct:production update-type: version-update:semver-patch dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/resiliencehub dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/s3 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/ssm dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/ssmquicksetup dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/xray dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 ... Signed-off-by: dependabot[bot] --- go.mod | 40 ++++++++++++++--------------- go.sum | 80 +++++++++++++++++++++++++++++----------------------------- 2 files changed, 60 insertions(+), 60 deletions(-) diff --git a/go.mod b/go.mod index ef370c98090..f3922944f55 100644 --- a/go.mod +++ b/go.mod @@ -15,26 +15,26 @@ require ( github.com/aws/aws-sdk-go-v2/config v1.28.5 github.com/aws/aws-sdk-go-v2/credentials v1.17.46 github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.20 - github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.39 + github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.40 github.com/aws/aws-sdk-go-v2/service/accessanalyzer v1.36.1 github.com/aws/aws-sdk-go-v2/service/account v1.21.6 github.com/aws/aws-sdk-go-v2/service/acm v1.30.6 github.com/aws/aws-sdk-go-v2/service/acmpca v1.37.7 github.com/aws/aws-sdk-go-v2/service/amp v1.30.3 github.com/aws/aws-sdk-go-v2/service/amplify v1.27.4 - github.com/aws/aws-sdk-go-v2/service/apigateway v1.27.6 + github.com/aws/aws-sdk-go-v2/service/apigateway v1.28.0 github.com/aws/aws-sdk-go-v2/service/apigatewayv2 v1.24.6 github.com/aws/aws-sdk-go-v2/service/appconfig v1.36.0 github.com/aws/aws-sdk-go-v2/service/appfabric v1.11.6 github.com/aws/aws-sdk-go-v2/service/appflow v1.45.7 github.com/aws/aws-sdk-go-v2/service/appintegrations v1.30.6 - github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.33.6 + github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.34.0 github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.29.4 github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.7.1 github.com/aws/aws-sdk-go-v2/service/appmesh v1.29.6 github.com/aws/aws-sdk-go-v2/service/apprunner v1.32.6 github.com/aws/aws-sdk-go-v2/service/appstream v1.41.6 - github.com/aws/aws-sdk-go-v2/service/appsync v1.39.3 + github.com/aws/aws-sdk-go-v2/service/appsync v1.40.0 github.com/aws/aws-sdk-go-v2/service/athena v1.48.4 github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.6 github.com/aws/aws-sdk-go-v2/service/autoscaling v1.50.0 @@ -53,13 +53,13 @@ require ( github.com/aws/aws-sdk-go-v2/service/cloud9 v1.28.6 github.com/aws/aws-sdk-go-v2/service/cloudcontrol v1.23.1 github.com/aws/aws-sdk-go-v2/service/cloudformation v1.56.0 - github.com/aws/aws-sdk-go-v2/service/cloudfront v1.42.0 + github.com/aws/aws-sdk-go-v2/service/cloudfront v1.43.0 github.com/aws/aws-sdk-go-v2/service/cloudfrontkeyvaluestore v1.8.6 github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.27.7 github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.26.5 - github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.45.1 + github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.46.0 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.1 - github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.43.3 + github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.44.0 github.com/aws/aws-sdk-go-v2/service/codeartifact v1.33.6 github.com/aws/aws-sdk-go-v2/service/codebuild v1.49.1 github.com/aws/aws-sdk-go-v2/service/codecatalyst v1.17.6 @@ -80,7 +80,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.6 github.com/aws/aws-sdk-go-v2/service/controltower v1.20.0 github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.6 - github.com/aws/aws-sdk-go-v2/service/costexplorer v1.43.6 + github.com/aws/aws-sdk-go-v2/service/costexplorer v1.44.0 github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.11.0 github.com/aws/aws-sdk-go-v2/service/customerprofiles v1.43.0 github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.44.4 @@ -95,21 +95,21 @@ require ( github.com/aws/aws-sdk-go-v2/service/devopsguru v1.34.6 github.com/aws/aws-sdk-go-v2/service/directconnect v1.29.6 github.com/aws/aws-sdk-go-v2/service/directoryservice v1.30.7 - github.com/aws/aws-sdk-go-v2/service/dlm v1.28.6 + github.com/aws/aws-sdk-go-v2/service/dlm v1.28.7 github.com/aws/aws-sdk-go-v2/service/docdb v1.39.5 github.com/aws/aws-sdk-go-v2/service/docdbelastic v1.14.3 github.com/aws/aws-sdk-go-v2/service/drs v1.30.6 github.com/aws/aws-sdk-go-v2/service/dynamodb v1.37.1 - github.com/aws/aws-sdk-go-v2/service/ec2 v1.192.0 + github.com/aws/aws-sdk-go-v2/service/ec2 v1.193.0 github.com/aws/aws-sdk-go-v2/service/ecr v1.36.6 github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.6 github.com/aws/aws-sdk-go-v2/service/ecs v1.52.0 github.com/aws/aws-sdk-go-v2/service/efs v1.34.0 github.com/aws/aws-sdk-go-v2/service/eks v1.52.1 - github.com/aws/aws-sdk-go-v2/service/elasticache v1.43.3 + github.com/aws/aws-sdk-go-v2/service/elasticache v1.44.0 github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.5 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.28.5 - github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.42.0 + github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.42.1 github.com/aws/aws-sdk-go-v2/service/elasticsearchservice v1.32.6 github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.27.6 github.com/aws/aws-sdk-go-v2/service/emr v1.46.4 @@ -137,7 +137,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/inspector v1.25.6 github.com/aws/aws-sdk-go-v2/service/inspector2 v1.33.1 github.com/aws/aws-sdk-go-v2/service/internetmonitor v1.20.1 - github.com/aws/aws-sdk-go-v2/service/iot v1.60.1 + github.com/aws/aws-sdk-go-v2/service/iot v1.61.0 github.com/aws/aws-sdk-go-v2/service/iotanalytics v1.26.6 github.com/aws/aws-sdk-go-v2/service/iotevents v1.27.6 github.com/aws/aws-sdk-go-v2/service/ivs v1.42.1 @@ -152,7 +152,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/kinesisvideo v1.27.6 github.com/aws/aws-sdk-go-v2/service/kms v1.37.6 github.com/aws/aws-sdk-go-v2/service/lakeformation v1.38.3 - github.com/aws/aws-sdk-go-v2/service/lambda v1.67.0 + github.com/aws/aws-sdk-go-v2/service/lambda v1.68.0 github.com/aws/aws-sdk-go-v2/service/launchwizard v1.8.6 github.com/aws/aws-sdk-go-v2/service/lexmodelbuildingservice v1.28.6 github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.49.6 @@ -189,7 +189,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/pinpoint v1.34.6 github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.18.1 github.com/aws/aws-sdk-go-v2/service/pipes v1.18.4 - github.com/aws/aws-sdk-go-v2/service/polly v1.45.6 + github.com/aws/aws-sdk-go-v2/service/polly v1.45.7 github.com/aws/aws-sdk-go-v2/service/pricing v1.32.6 github.com/aws/aws-sdk-go-v2/service/qbusiness v1.16.1 github.com/aws/aws-sdk-go-v2/service/qldb v1.25.6 @@ -201,7 +201,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.31.3 github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.24.3 github.com/aws/aws-sdk-go-v2/service/rekognition v1.45.7 - github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.27.4 + github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.28.0 github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.16.1 github.com/aws/aws-sdk-go-v2/service/resourcegroups v1.27.6 github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.25.6 @@ -213,7 +213,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/route53recoveryreadiness v1.21.6 github.com/aws/aws-sdk-go-v2/service/route53resolver v1.34.1 github.com/aws/aws-sdk-go-v2/service/rum v1.21.6 - github.com/aws/aws-sdk-go-v2/service/s3 v1.67.1 + github.com/aws/aws-sdk-go-v2/service/s3 v1.68.0 github.com/aws/aws-sdk-go-v2/service/s3control v1.50.1 github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.6 github.com/aws/aws-sdk-go-v2/service/sagemaker v1.167.1 @@ -234,10 +234,10 @@ require ( github.com/aws/aws-sdk-go-v2/service/signer v1.26.6 github.com/aws/aws-sdk-go-v2/service/sns v1.33.5 github.com/aws/aws-sdk-go-v2/service/sqs v1.37.1 - github.com/aws/aws-sdk-go-v2/service/ssm v1.55.6 + github.com/aws/aws-sdk-go-v2/service/ssm v1.56.0 github.com/aws/aws-sdk-go-v2/service/ssmcontacts v1.26.6 github.com/aws/aws-sdk-go-v2/service/ssmincidents v1.34.6 - github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.2.7 + github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.3.0 github.com/aws/aws-sdk-go-v2/service/ssmsap v1.18.6 github.com/aws/aws-sdk-go-v2/service/sso v1.24.6 github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.29.6 @@ -259,7 +259,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/worklink v1.23.2 github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.0 github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.25.0 - github.com/aws/aws-sdk-go-v2/service/xray v1.29.6 + github.com/aws/aws-sdk-go-v2/service/xray v1.30.0 github.com/aws/smithy-go v1.22.1 github.com/beevik/etree v1.4.1 github.com/cedar-policy/cedar-go v0.1.0 diff --git a/go.sum b/go.sum index b3bc9b6a9c6..6225432200d 100644 --- a/go.sum +++ b/go.sum @@ -33,8 +33,8 @@ github.com/aws/aws-sdk-go-v2/credentials v1.17.46 h1:AU7RcriIo2lXjUfHFnFKYsLCwgb github.com/aws/aws-sdk-go-v2/credentials v1.17.46/go.mod h1:1FmYyLGL08KQXQ6mcTlifyFXfJVCNJTVGuQP4m0d/UA= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.20 h1:sDSXIrlsFSFJtWKLQS4PUWRvrT580rrnuLydJrCQ/yA= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.20/go.mod h1:WZ/c+w0ofps+/OUqMwWgnfrgzZH1DZO1RIkktICsqnY= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.39 h1:Bdepdtm7SAUxPIZj6x4qg5al04R6tZa965T/j597XxM= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.39/go.mod h1:AudGmEyVwvi3k5MVpEZP2NEVF1HqtZoMze42Uq1RTiE= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.40 h1:CbalQNEYQljzAJ+3beY8FQBShdLNLpJzHL4h/5LSFMc= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.40/go.mod h1:1iYVr/urNWuZ7WZ1829FSE7RRTaXvzFdwrEQV8Z40cE= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.24 h1:4usbeaes3yJnCFC7kfeyhkdkPtoRYPa/hTmCqMpKpLI= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.24/go.mod h1:5CI1JemjVwde8m2WG3cz23qHKPOxbpkq0HaoreEgLIY= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.24 h1:N1zsICrQglfzaBnrfM0Ys00860C+QFwu6u/5+LomP+o= @@ -55,8 +55,8 @@ github.com/aws/aws-sdk-go-v2/service/amp v1.30.3 h1:28FOQuvHpWMdEYK9x89FszjBmwGf github.com/aws/aws-sdk-go-v2/service/amp v1.30.3/go.mod h1:QbCuQItcTOX7oQR9Nn9nGveBCqSad391I5ReOyQmtag= github.com/aws/aws-sdk-go-v2/service/amplify v1.27.4 h1:wnfodLD2dlJXX4CgYQh18nvo18dPjqZEWrtYZ6DWGh0= github.com/aws/aws-sdk-go-v2/service/amplify v1.27.4/go.mod h1:hmHZYJI1CZlr2V/qTBE8r+/U353Gn/7pOoxNpfFmZuI= -github.com/aws/aws-sdk-go-v2/service/apigateway v1.27.6 h1:CmWQaz97Uy830BdSSVw/D+K4rGQUN/u9D1Zjh/HLJ/w= -github.com/aws/aws-sdk-go-v2/service/apigateway v1.27.6/go.mod h1:WP+ceHdK5RAijZxABi1mH1kCZmQKRJNKwV+cj0iVr44= +github.com/aws/aws-sdk-go-v2/service/apigateway v1.28.0 h1:BkESaUndLOn3ZFTq4Eho347yvtiJxEQf1HWxgVu2RVI= +github.com/aws/aws-sdk-go-v2/service/apigateway v1.28.0/go.mod h1:WP+ceHdK5RAijZxABi1mH1kCZmQKRJNKwV+cj0iVr44= github.com/aws/aws-sdk-go-v2/service/apigatewayv2 v1.24.6 h1:wNUMxMjviF0fbO1pWKVFT1xDRa+BY2qwW6+YJkgIRvI= github.com/aws/aws-sdk-go-v2/service/apigatewayv2 v1.24.6/go.mod h1:pCq9ErKoUWYFfmpENhlWuhBF+NNNwVOXNrZA5C480eM= github.com/aws/aws-sdk-go-v2/service/appconfig v1.36.0 h1:6IlrKbN6rVw2wdVxm4WQ5nI/Np0eTydc5Lsa1Vq+cBs= @@ -67,8 +67,8 @@ github.com/aws/aws-sdk-go-v2/service/appflow v1.45.7 h1:UfxkfxuI4Ksq33InChPPDFg/ github.com/aws/aws-sdk-go-v2/service/appflow v1.45.7/go.mod h1:kJIzLElxd30701jCUv8leaH4GGrCCfoxpNUULd7+rK8= github.com/aws/aws-sdk-go-v2/service/appintegrations v1.30.6 h1:wUhwc2GcAZ4m00sVu2gQ9ugn5Jxk3EjZPf9KxIM+aZo= github.com/aws/aws-sdk-go-v2/service/appintegrations v1.30.6/go.mod h1:ivsyQDuUvZ2HIjoACH4KiSkaP3/rQVjPpb4yUurgPCU= -github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.33.6 h1:tA9FFJKQEPZ1YXuO+ZIMXBYy7Jrsz5SJ4feg/zb82Ig= -github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.33.6/go.mod h1:XBKTLJ2N61HegfI0sroliDC1MNX0L3ApqCfNoZ9POAA= +github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.34.0 h1:GepjPOtTMErWuKclEcfUtibA2gP8kLlL6gglC2YJEMU= +github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.34.0/go.mod h1:XBKTLJ2N61HegfI0sroliDC1MNX0L3ApqCfNoZ9POAA= github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.29.4 h1:NiytCBlDQWHo7GWomxI7sBayGgYikFLRWGx67mab42o= github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.29.4/go.mod h1:S/E1rruraVCEM0H11AAlulupi00RyhGmARep6mgJgec= github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.7.1 h1:UU84hkab8PQfrTM8jJjEQvfYns1meYkXWcCQs7uuiSo= @@ -79,8 +79,8 @@ github.com/aws/aws-sdk-go-v2/service/apprunner v1.32.6 h1:Wqlx6m821gv7qXMJQ3f7Ju github.com/aws/aws-sdk-go-v2/service/apprunner v1.32.6/go.mod h1:liN6AXsZpCSw888Vdsc1OSeKuEVvWek31jv41mn4KCA= github.com/aws/aws-sdk-go-v2/service/appstream v1.41.6 h1:Y/npDc6JZ9rxarIqZOWZllxgtZLLjFXvwTjuhpoSqW8= github.com/aws/aws-sdk-go-v2/service/appstream v1.41.6/go.mod h1:Ex0sRVuADGJBCsP8Yvsuu+RTeAydhj5OrXxu99OlE+w= -github.com/aws/aws-sdk-go-v2/service/appsync v1.39.3 h1:2NOsVvQv5mMor0EuI8EunbuhxQHjSWUhaCqhADKCsBU= -github.com/aws/aws-sdk-go-v2/service/appsync v1.39.3/go.mod h1:d+xpwZCcffeV4l4bM1xjQgINiNPUlmwKQSkoaAnMjVE= +github.com/aws/aws-sdk-go-v2/service/appsync v1.40.0 h1:FgT5r1MEc4ZAxmYGw4VcobadiEno6CggVP+GTm2SK5I= +github.com/aws/aws-sdk-go-v2/service/appsync v1.40.0/go.mod h1:d+xpwZCcffeV4l4bM1xjQgINiNPUlmwKQSkoaAnMjVE= github.com/aws/aws-sdk-go-v2/service/athena v1.48.4 h1:FbHOJ4JekyaFLE5SG0yuHryYRuaHXd9rO4QMYK4NH5A= github.com/aws/aws-sdk-go-v2/service/athena v1.48.4/go.mod h1:sAM9gz5RsYx3nBYISXE9CRnQVk7WtCs6SjCZvygmtzQ= github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.6 h1:TLXugBC1lQUGMcVhUTdRiUnX4ulOs13hGvBlw4bBkSE= @@ -117,20 +117,20 @@ github.com/aws/aws-sdk-go-v2/service/cloudcontrol v1.23.1 h1:x4XUX/gadOFFsX5ndid github.com/aws/aws-sdk-go-v2/service/cloudcontrol v1.23.1/go.mod h1:8vDrlyLzxWUybo1E4Rh2UVUPM9cyu+GgTYkwFCRV6h4= github.com/aws/aws-sdk-go-v2/service/cloudformation v1.56.0 h1:zmXJiEm/fQYtFDLIUsZrcPIjTrL3R/noFICGlYBj3Ww= github.com/aws/aws-sdk-go-v2/service/cloudformation v1.56.0/go.mod h1:9nOjXCDKE+QMK4JaCrLl36PU+VEfJmI7WVehYmojO8s= -github.com/aws/aws-sdk-go-v2/service/cloudfront v1.42.0 h1:HALzRSv9rQiViTmTngO7mHQ2hZVHN1xArAofDtLCkuE= -github.com/aws/aws-sdk-go-v2/service/cloudfront v1.42.0/go.mod h1:KC7JSdRScZQpZJDJp4ze9elsg8QIWIoABjmCzDS4rtg= +github.com/aws/aws-sdk-go-v2/service/cloudfront v1.43.0 h1:Ny0HHch5IyjWd3Hh/csFvAZFPDHvu7eeePFh7+BnbZ8= +github.com/aws/aws-sdk-go-v2/service/cloudfront v1.43.0/go.mod h1:KC7JSdRScZQpZJDJp4ze9elsg8QIWIoABjmCzDS4rtg= github.com/aws/aws-sdk-go-v2/service/cloudfrontkeyvaluestore v1.8.6 h1:dke8UJCJrHoscyZ1dIPgy3cxoLdets5LnoXO9jlW2bM= github.com/aws/aws-sdk-go-v2/service/cloudfrontkeyvaluestore v1.8.6/go.mod h1:A42W0NdVTnuXFemvBZY/nNVnVKgTVJBv06fQTtVvLuo= github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.27.7 h1:Ymxy7Hrq/Gax/w++W0t1E2ptd9W4/nFAGl3Ls50npDI= github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.27.7/go.mod h1:W4rh804hNs3jvIUVrZU7W6ZzufPUTn2fvjFwDLg75Vk= github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.26.5 h1:qv4Vmbrmq556QW1geLfnVU04FKotI85HgCVup2CHC0I= github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.26.5/go.mod h1:bLUwLj8J6hdXNYgrlrBmYaC6k+WRiWVuuj82l4cE+dE= -github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.45.1 h1:AosFx25ZlkWnNggOUuhBcG2Yx+SDRNBcV6W2+PctH+Q= -github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.45.1/go.mod h1:1UmWM2dmPjAP9GndptgNB5ZO1GnVRHFUX5JK0RB+ozY= +github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.46.0 h1:Rqsc2iSjGyl+/4B26d7I2lyzIO0RNY7OhLs+RwSL5Ps= +github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.46.0/go.mod h1:1UmWM2dmPjAP9GndptgNB5ZO1GnVRHFUX5JK0RB+ozY= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.1 h1:FbjhJTRoTujDYDwTnnE46Km5Qh1mMSH+BwTL4ODFifg= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.1/go.mod h1:OwyCzHw6CH8pkLqT8uoCkOgUsgm11LTfexLZyRy6fBg= -github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.43.3 h1:hKIu7ziYNid9JAuPX5TMgfEKiGyJiPO7Icdc920uLMI= -github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.43.3/go.mod h1:Qbr4yfpNqVNl69l/GEDK+8wxLf/vHi0ChoiSDzD7thU= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.44.0 h1:OREVd94+oXW5a+3SSUAo4K0L5ci8cucCLu+PSiek8OU= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.44.0/go.mod h1:Qbr4yfpNqVNl69l/GEDK+8wxLf/vHi0ChoiSDzD7thU= github.com/aws/aws-sdk-go-v2/service/codeartifact v1.33.6 h1:Uu7boDJDhHI3P9AjMPu9/bdSfOoTlhowBTUPswP5avM= github.com/aws/aws-sdk-go-v2/service/codeartifact v1.33.6/go.mod h1:MledsPnJ3IBEYa7pWbYIitZDbSOftxNjRCxrEm5W9L0= github.com/aws/aws-sdk-go-v2/service/codebuild v1.49.1 h1:rVfkJ2IsXFUB2dRyjoCcED1LQPeTwiOGSxB2tzItrL8= @@ -171,8 +171,8 @@ github.com/aws/aws-sdk-go-v2/service/controltower v1.20.0 h1:4YuCMtKeY+TwG277Rh/ github.com/aws/aws-sdk-go-v2/service/controltower v1.20.0/go.mod h1:Wwtsq9vGGX+s+z2CAU6nNVQnQUp6tP12FmGK8Gauy7M= github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.6 h1:osGnDbG5/5BHoExuVOK1EN0a9cLfZ8NdqB7luLInxOA= github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.6/go.mod h1:Rkaugb0V6ZcPs8GzhnEjbq+EB9K+GASbOMdxiDzTZX4= -github.com/aws/aws-sdk-go-v2/service/costexplorer v1.43.6 h1:tGvfq+De4uRTaLA1qAbCnbGrJRkQutB2yxQ9sattbyw= -github.com/aws/aws-sdk-go-v2/service/costexplorer v1.43.6/go.mod h1:rwuImPfFVkoKeuAkGrlDSFm9pT9veoRNoH25IG9Jco0= +github.com/aws/aws-sdk-go-v2/service/costexplorer v1.44.0 h1:BgV+wmUYKuK2yHaGMgxUCqzk/yog/vvQIBtjq1uOgGM= +github.com/aws/aws-sdk-go-v2/service/costexplorer v1.44.0/go.mod h1:rwuImPfFVkoKeuAkGrlDSFm9pT9veoRNoH25IG9Jco0= github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.11.0 h1:nV8WhW54iNT4XYZphMG5zfxhpe8POhi67Dp5uHCVk80= github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.11.0/go.mod h1:CPai3cHY5BMDEFDcUW4JrkN0vo+L3IyJgF/+Ddlm3wc= github.com/aws/aws-sdk-go-v2/service/customerprofiles v1.43.0 h1:LnSDxvx4MoC59r50lHfyDmKFtT4DVeicBn6ci+gvQ/E= @@ -201,8 +201,8 @@ github.com/aws/aws-sdk-go-v2/service/directconnect v1.29.6 h1:sXYEoFEo7GLwRwqY2R github.com/aws/aws-sdk-go-v2/service/directconnect v1.29.6/go.mod h1:E2hAfYPWIpsei0SCp8ykbHcXFON8Knf1oBVdlwUMuVE= github.com/aws/aws-sdk-go-v2/service/directoryservice v1.30.7 h1:ZwecDiXujdrRm5C8UGwdcF9YpV83lgXfzBgUEF5KeME= github.com/aws/aws-sdk-go-v2/service/directoryservice v1.30.7/go.mod h1:ndWayMkDqmOHWM2OcX8Uno6i6gSNm2O8UBNkQjQHpFg= -github.com/aws/aws-sdk-go-v2/service/dlm v1.28.6 h1:dkGszLw6/TazWioiI8i6u3uuDCdVw/ur+voFtNVEUYw= -github.com/aws/aws-sdk-go-v2/service/dlm v1.28.6/go.mod h1:r1kmK6s90DSs6cxF3UvQAGI5LMVEySns/AWL7Rc6fH4= +github.com/aws/aws-sdk-go-v2/service/dlm v1.28.7 h1:gcQxVPVOqGaltkiGow3KxZN4srjmJeVXt4xzY21VqdU= +github.com/aws/aws-sdk-go-v2/service/dlm v1.28.7/go.mod h1:r1kmK6s90DSs6cxF3UvQAGI5LMVEySns/AWL7Rc6fH4= github.com/aws/aws-sdk-go-v2/service/docdb v1.39.5 h1:gWPt2urz9yNjcNcPQ097utT1VGdoeB47yMz2strJrZo= github.com/aws/aws-sdk-go-v2/service/docdb v1.39.5/go.mod h1:3MWrxWaAZsyjlR7sPSnps1uaVQZs8zIdS4lWDCUVD3g= github.com/aws/aws-sdk-go-v2/service/docdbelastic v1.14.3 h1:CqabKk/auDP8y6gjxpHNQ9pavQA1mKe4YopiC10U1co= @@ -211,8 +211,8 @@ github.com/aws/aws-sdk-go-v2/service/drs v1.30.6 h1:gRx0PWMok7r3zmoiwdFzYRyJwp2R github.com/aws/aws-sdk-go-v2/service/drs v1.30.6/go.mod h1:k4mtLg6LgO18IaHeQX9bCms31VSXidi44A1oqMiJ6CA= github.com/aws/aws-sdk-go-v2/service/dynamodb v1.37.1 h1:vucMirlM6D+RDU8ncKaSZ/5dGrXNajozVwpmWNPn2gQ= github.com/aws/aws-sdk-go-v2/service/dynamodb v1.37.1/go.mod h1:fceORfs010mNxZbQhfqUjUeHlTwANmIT4mvHamuUaUg= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.192.0 h1:mNTVdPohLShrsPSyuOCyugLx1DQGCludmuiIsminhUk= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.192.0/go.mod h1:mzj8EEjIHSN2oZRXiw1Dd+uB4HZTl7hC8nBzX9IZMWw= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.193.0 h1:RhSoBFT5/8tTmIseJUXM6INTXTQDF8+0oyxWBnozIms= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.193.0/go.mod h1:mzj8EEjIHSN2oZRXiw1Dd+uB4HZTl7hC8nBzX9IZMWw= github.com/aws/aws-sdk-go-v2/service/ecr v1.36.6 h1:zg+3FGHA0PBs0KM25qE/rOf2o5zsjNa1g/Qq83+SDI0= github.com/aws/aws-sdk-go-v2/service/ecr v1.36.6/go.mod h1:ZSq54Z9SIsOTf1Efwgw1msilSs4XVEfVQiP9nYVnKpM= github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.6 h1:9DXEMWmABYPz/NXSFmp9Y14yI5FQ5jmPPvllS9hXXfY= @@ -223,14 +223,14 @@ github.com/aws/aws-sdk-go-v2/service/efs v1.34.0 h1:0VpBMWwpq5UuhneIWO19+/Mp5DmF github.com/aws/aws-sdk-go-v2/service/efs v1.34.0/go.mod h1:WBUkzX6kKt36+zyeTQYxySd0TPuvNQhNWG6vRrNBzJw= github.com/aws/aws-sdk-go-v2/service/eks v1.52.1 h1:XqyUdJbXQxY48CbBtN9a51HoTQy/kTIwrWiruRDsydk= github.com/aws/aws-sdk-go-v2/service/eks v1.52.1/go.mod h1:WTfZ/+I7aSMEna6iYm1Kjne9A8f1MyxXNfp6hCa1+Bk= -github.com/aws/aws-sdk-go-v2/service/elasticache v1.43.3 h1:rMitMatUyTL02GTh5ITa2mon+Xp6iWrISgwWmAmzGFY= -github.com/aws/aws-sdk-go-v2/service/elasticache v1.43.3/go.mod h1:yx9zxw7KuLQoIdf0ajFjNhsIve273fJDMmF/BprT8Vc= +github.com/aws/aws-sdk-go-v2/service/elasticache v1.44.0 h1:Fyzf7cqohTLamP8kht9xvkMJT3HXmz0IQGdRMk1tdJk= +github.com/aws/aws-sdk-go-v2/service/elasticache v1.44.0/go.mod h1:yx9zxw7KuLQoIdf0ajFjNhsIve273fJDMmF/BprT8Vc= github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.5 h1:bCj+S/v35iLUnHp8DiIC92sdWYweLUjBDSLFbw7vHQ0= github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.5/go.mod h1:gOJmxmxThaTRM7r8WZ6BeOCl14UE48lSgMca7U4/oMM= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.28.5 h1:12Fm4tTwFk2Url99X56hdKXKVK7suzZKjtdXAILne4g= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.28.5/go.mod h1:qnlecrYsTCjPhGuF+3SZaz7WGuNz/T3L/Q8a3Yc7uww= -github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.42.0 h1:C4/D90/j3EF/SokpC4HO1aPMkZV1dgqUbmejdpxQiAE= -github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.42.0/go.mod h1:pZP3I+Ts+XuhJJtZE49+ABVjfxm7u9/hxcNUYSpY3OE= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.42.1 h1:7CbnVh+BXerN1kiqTbm3Y2GkaaAiZ26v9GMlb0nubYo= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.42.1/go.mod h1:pZP3I+Ts+XuhJJtZE49+ABVjfxm7u9/hxcNUYSpY3OE= github.com/aws/aws-sdk-go-v2/service/elasticsearchservice v1.32.6 h1:j19Nazjj1qrrm7DufPO53F9FFzrUDlphsqpNn0HU3fg= github.com/aws/aws-sdk-go-v2/service/elasticsearchservice v1.32.6/go.mod h1:6QH9UwlCk7m5PoCPH+/UZtStdP8dLg7CzJJ/52o2pAU= github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.27.6 h1:oV6JszCETDPPHkqZahjVUaP8IlWDSUm2B5lRISvsL2g= @@ -295,8 +295,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.5 h1:P1doBzv5VEg1ON github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.5/go.mod h1:NOP+euMW7W3Ukt28tAxPuoWao4rhhqJD3QEBk7oCg7w= github.com/aws/aws-sdk-go-v2/service/internetmonitor v1.20.1 h1:bMINUQ0Vx+W0F55LdM/QNmCyy4EpGNFRZxtEY9YY9Y4= github.com/aws/aws-sdk-go-v2/service/internetmonitor v1.20.1/go.mod h1:FwrxOAc2QpAXWHy6pPDHqQpQy/2NuZcdvj1x+lfQEek= -github.com/aws/aws-sdk-go-v2/service/iot v1.60.1 h1:od5vzNqjcpoJQ+QjfcysAvVIdTL41b4m7uVqHBtnSYk= -github.com/aws/aws-sdk-go-v2/service/iot v1.60.1/go.mod h1:S3rkM2vxkYQdO+eEfv7EKzL11An45GCt2/lcnI5LbU0= +github.com/aws/aws-sdk-go-v2/service/iot v1.61.0 h1:VsaQ+YkTqF7R/GbzWGdT9NVhKoxhw67eSC4JIA1QH2k= +github.com/aws/aws-sdk-go-v2/service/iot v1.61.0/go.mod h1:S3rkM2vxkYQdO+eEfv7EKzL11An45GCt2/lcnI5LbU0= github.com/aws/aws-sdk-go-v2/service/iotanalytics v1.26.6 h1:HCNKm01tmleHcWYZQ9xHreJx0+2mWetldsfHK5G2LZs= github.com/aws/aws-sdk-go-v2/service/iotanalytics v1.26.6/go.mod h1:YBeFAvdZ9sTyody+TwjI++jM7+A+gGMdNxUrssNDnlI= github.com/aws/aws-sdk-go-v2/service/iotevents v1.27.6 h1:6jqw638zUZ+hCrb40uzIXL/4b6o75Yykrt5gJVtorUU= @@ -325,8 +325,8 @@ github.com/aws/aws-sdk-go-v2/service/kms v1.37.6 h1:CZImQdb1QbU9sGgJ9IswhVkxAcjk github.com/aws/aws-sdk-go-v2/service/kms v1.37.6/go.mod h1:YJDdlK0zsyxVBxGU48AR/Mi8DMrGdc1E3Yij4fNrONA= github.com/aws/aws-sdk-go-v2/service/lakeformation v1.38.3 h1:vbc9pblnCXXwSGnUW6abjBH2nN66nifZzPfh0fapXl0= github.com/aws/aws-sdk-go-v2/service/lakeformation v1.38.3/go.mod h1:GSrO+Jr1SM/Jfdd52DIN48EY2tbhgk02nogvzpLkFks= -github.com/aws/aws-sdk-go-v2/service/lambda v1.67.0 h1:3BbFvl2FPtIIS6NEE/nnytkES85Kl93/VDAFICtGzfM= -github.com/aws/aws-sdk-go-v2/service/lambda v1.67.0/go.mod h1:guz2K3x4FKSdDaoeB+TPVgJNU9oj2gftbp5cR8ela1A= +github.com/aws/aws-sdk-go-v2/service/lambda v1.68.0 h1:iOeBeG/kwavag7SR2obST2YVIika2Bt+BvKUdFYDN30= +github.com/aws/aws-sdk-go-v2/service/lambda v1.68.0/go.mod h1:guz2K3x4FKSdDaoeB+TPVgJNU9oj2gftbp5cR8ela1A= github.com/aws/aws-sdk-go-v2/service/launchwizard v1.8.6 h1:+GPVOamTqDV7sSYzvziM4WbEv4u5jw/2bVYDl5NnmNU= github.com/aws/aws-sdk-go-v2/service/launchwizard v1.8.6/go.mod h1:2KF56C6mZldwDGFF/vyv83VGXqDVpAaH3NwBE2+OTtw= github.com/aws/aws-sdk-go-v2/service/lexmodelbuildingservice v1.28.6 h1:G6qKJwPyBMvFyWjAWW7lbZoN6VsYBCPxzjrQRKCexFg= @@ -399,8 +399,8 @@ github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.18.1 h1:Rq87gPsr+seXV github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.18.1/go.mod h1:7ouFIQqHwpK5rnzhCkDfF3LioqoOiQs5UD7ANRhxCsg= github.com/aws/aws-sdk-go-v2/service/pipes v1.18.4 h1:hkcI3Is0nBoo0RwMCTY3N9jd3kLbF3eELkmb5xeWDWA= github.com/aws/aws-sdk-go-v2/service/pipes v1.18.4/go.mod h1:ubOlYYLTKhB0FNA85qTHyJGsTTR20T406ywZBXZdcNs= -github.com/aws/aws-sdk-go-v2/service/polly v1.45.6 h1:BB7f5DkU0M86skyEWjCCu2WaiLLPlZzl97np014XQJ8= -github.com/aws/aws-sdk-go-v2/service/polly v1.45.6/go.mod h1:Rp9B8Z/0JVupwGQZavo5YmYjI8mF6wNIv5+Dv4IQb3M= +github.com/aws/aws-sdk-go-v2/service/polly v1.45.7 h1:vjSRnb6eE/VeWy5sicCbp1uG3yn9idstyJ9fiwydFv4= +github.com/aws/aws-sdk-go-v2/service/polly v1.45.7/go.mod h1:Rp9B8Z/0JVupwGQZavo5YmYjI8mF6wNIv5+Dv4IQb3M= github.com/aws/aws-sdk-go-v2/service/pricing v1.32.6 h1:ZzoCQskTXjZBqKW9ZpUFUBCcK22TQZWbO+6PbX8Gu2U= github.com/aws/aws-sdk-go-v2/service/pricing v1.32.6/go.mod h1:9U+el9JTtl0llHl7GimPXMmqNHkjgMeV9vMVvznTqfs= github.com/aws/aws-sdk-go-v2/service/qbusiness v1.16.1 h1:h0NRI0sp2vSW3pocytiirHXzUzqz7sAKtECLucRjLo8= @@ -423,8 +423,8 @@ github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.24.3 h1:kK6hgb+NPtKbV github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.24.3/go.mod h1:rM2oYKRheMpuxjJ7fkIqoegIVdG4GkdOqRx1PSx9xYs= github.com/aws/aws-sdk-go-v2/service/rekognition v1.45.7 h1:kC6qaN1AVzhBzDo/0sUCdkJVcamuMslppfys4oGtxR4= github.com/aws/aws-sdk-go-v2/service/rekognition v1.45.7/go.mod h1:/OYd+ham4lcrARFxWjW+TzBZ0u1gprKqbOUAnX4e0D4= -github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.27.4 h1:DDV5IgFQaDoPiPK04iZfoDhW17z8jSWzbeOP+Voh474= -github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.27.4/go.mod h1:qjJmrIFydKnYY0o/pzlSRiVW3MlfexrcfLGprTB9RGU= +github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.28.0 h1:j4tpuJDBBOrjO0nu0/OYF+npDe0zUKDh87Bvu6xMm5M= +github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.28.0/go.mod h1:qjJmrIFydKnYY0o/pzlSRiVW3MlfexrcfLGprTB9RGU= github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.16.1 h1:4sLI1tQYWtjUKbGcqi24jrK9yCRj9dzDlpoHI0nPBBM= github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.16.1/go.mod h1:/BvZpktD03eMkAyP9EJgIZ/0KpfCKAokOo+rFAPWNQo= github.com/aws/aws-sdk-go-v2/service/resourcegroups v1.27.6 h1:1Xt2iiHMw+5WwGLaKZ7KhB+NabAHdPo2pPmSQJO9RAY= @@ -447,8 +447,8 @@ github.com/aws/aws-sdk-go-v2/service/route53resolver v1.34.1 h1:FlKzCc4JH3i87BpF github.com/aws/aws-sdk-go-v2/service/route53resolver v1.34.1/go.mod h1:Srhr/nWE3+IKKhOqUBc/hYmdgCgxt2Z91GMFFtJyOeE= github.com/aws/aws-sdk-go-v2/service/rum v1.21.6 h1:4U/ss6VTGPGvnSzDyojk/atrOWhJ9OPh4RHwYEm86aA= github.com/aws/aws-sdk-go-v2/service/rum v1.21.6/go.mod h1:kAUyICwBeSM4d/WWS2ZcRz9RLtd0ZuDEQbTf4YCmcbA= -github.com/aws/aws-sdk-go-v2/service/s3 v1.67.1 h1:LXLnDfjT/P6SPIaCE86xCOjJROPn4FNB2EdN68vMK5c= -github.com/aws/aws-sdk-go-v2/service/s3 v1.67.1/go.mod h1:ralv4XawHjEMaHOWnTFushl0WRqim/gQWesAMF6hTow= +github.com/aws/aws-sdk-go-v2/service/s3 v1.68.0 h1:bFpcqdwtAEsgpZXvkTxIThFQx/EM0oV6kXmfFIGjxME= +github.com/aws/aws-sdk-go-v2/service/s3 v1.68.0/go.mod h1:ralv4XawHjEMaHOWnTFushl0WRqim/gQWesAMF6hTow= github.com/aws/aws-sdk-go-v2/service/s3control v1.50.1 h1:WjVnnNd++hjjmuODULNfZaW2zEKZVrDGZvdQUK2dF8M= github.com/aws/aws-sdk-go-v2/service/s3control v1.50.1/go.mod h1:ymXHnBHIxM/iqrgGphFuoUfuczoy4inIr2LH8PRj8NQ= github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.6 h1:zzoRIW5fgL23XkMtW4eDNMvWreQLOJNeFCK2tmjfz1w= @@ -489,14 +489,14 @@ github.com/aws/aws-sdk-go-v2/service/sns v1.33.5 h1:nJDOsZumqKsejsiGKgpezFzI2oat github.com/aws/aws-sdk-go-v2/service/sns v1.33.5/go.mod h1:SODr0Lu3lFdT0SGsGX1TzFTapwveBrT5wztVoYtppm8= github.com/aws/aws-sdk-go-v2/service/sqs v1.37.1 h1:39WvSrVq9DD6UHkD+fx5x19P5KpRQfNdtgReDVNbelc= github.com/aws/aws-sdk-go-v2/service/sqs v1.37.1/go.mod h1:3gwPzC9LER/BTQdQZ3r6dUktb1rSjABF1D3Sr6nS7VU= -github.com/aws/aws-sdk-go-v2/service/ssm v1.55.6 h1:mh6Osa3cjwaaVSzJ92a8x1dBh8XQ7ekKLHyhjtx5RRw= -github.com/aws/aws-sdk-go-v2/service/ssm v1.55.6/go.mod h1:l9qF25TzH95FhcIak6e4vt79KE4I7M2Nf59eMUVjj6c= +github.com/aws/aws-sdk-go-v2/service/ssm v1.56.0 h1:mADKqoZaodipGgiZfuAjtlcr4IVBtXPZKVjkzUZCCYM= +github.com/aws/aws-sdk-go-v2/service/ssm v1.56.0/go.mod h1:l9qF25TzH95FhcIak6e4vt79KE4I7M2Nf59eMUVjj6c= github.com/aws/aws-sdk-go-v2/service/ssmcontacts v1.26.6 h1:mYRRsmR2P2tGRzoAWOc0dhh6/wm5xF9MRkMJ/OJdkNk= github.com/aws/aws-sdk-go-v2/service/ssmcontacts v1.26.6/go.mod h1:aTtebl9x8vxZTTUamDzvujt1OICEpcZED1oCi80yyJw= github.com/aws/aws-sdk-go-v2/service/ssmincidents v1.34.6 h1:dqJenl1BmS8fQWI8Ol/h3WdME5lRiYdmggoHv1fihVY= github.com/aws/aws-sdk-go-v2/service/ssmincidents v1.34.6/go.mod h1:NU/CID+MNfIEoHY+XOQ4xvtF8vPm0eco0thWTY2EM9o= -github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.2.7 h1:d26uTPkNtnu91NP0+OUAiJL8HoBqzexaElP+8e97zRM= -github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.2.7/go.mod h1:MtHMOMSvnNeeu3F5WP30eZwSp1qRbxjkT2xor1mb/H4= +github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.3.0 h1:SYNFn4FRwdrh0tWdRBcrVN1T3/QgisV/E68/y+0cda8= +github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.3.0/go.mod h1:MtHMOMSvnNeeu3F5WP30eZwSp1qRbxjkT2xor1mb/H4= github.com/aws/aws-sdk-go-v2/service/ssmsap v1.18.6 h1:uJACk0uiWe+s5Y7CWo15ojwRS4uwxBsfjrcG/QxztKo= github.com/aws/aws-sdk-go-v2/service/ssmsap v1.18.6/go.mod h1:v676cxw/KjLk2vM97EL/nrpiX160mY97QErDa2ArdUs= github.com/aws/aws-sdk-go-v2/service/sso v1.24.6 h1:3zu537oLmsPfDMyjnUS2g+F2vITgy5pB74tHI+JBNoM= @@ -541,8 +541,8 @@ github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.0 h1:7rGPAEvw9t7crYz4C4n80 github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.0/go.mod h1:ZKS7KNf+/ecd+vfEVnfee4ZKg09jrB6/14Qnf79Y+so= github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.25.0 h1:H5JtZI/cuMrzvzl44q542vCr3w3EHlYl5+0ac9MdAik= github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.25.0/go.mod h1:NgEGK1Ex63erNYNTWMenNczoi8/nguJvIvobKYp1LQ8= -github.com/aws/aws-sdk-go-v2/service/xray v1.29.6 h1:petUl/lqCEs41/fs28skMHZZsBah5oQk6uHKZSBqApk= -github.com/aws/aws-sdk-go-v2/service/xray v1.29.6/go.mod h1:+wep8ElVmvR0bCsQ1SQWMKhAlA3+Ks0+uitEfYQ8zO8= +github.com/aws/aws-sdk-go-v2/service/xray v1.30.0 h1:3kGcueLqlC3x5LqVWgckz38Kd5pHqpzhVC95beoZVyI= +github.com/aws/aws-sdk-go-v2/service/xray v1.30.0/go.mod h1:+wep8ElVmvR0bCsQ1SQWMKhAlA3+Ks0+uitEfYQ8zO8= github.com/aws/smithy-go v1.22.1 h1:/HPHZQ0g7f4eUeK6HKglFz8uwVfZKgoI25rb/J+dnro= github.com/aws/smithy-go v1.22.1/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/beevik/etree v1.4.1 h1:PmQJDDYahBGNKDcpdX8uPy1xRCwoCGVUiW669MEirVI= From 92431818cc10f549f62d90824ab5dc60d0b5bc30 Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Fri, 22 Nov 2024 09:12:41 -0500 Subject: [PATCH 030/118] .github/workflows: fix formatting in `post_publish` shell script (#40245) A missed quote caused the script to fail during the `v5.77.0` release. ``` /home/runner/work/_temp/b9a14e53-10ad-497f-a91b-d57575e541f4.sh: line 12: unexpected EOF while looking for matching `"' Error: Process completed with exit code 2. ``` --- .github/workflows/post_publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/post_publish.yml b/.github/workflows/post_publish.yml index 2b413eef138..84ada517445 100644 --- a/.github/workflows/post_publish.yml +++ b/.github/workflows/post_publish.yml @@ -69,7 +69,7 @@ jobs: sleep 1h else echo "Registry and Github Version matches" - echo "current=$LATEST_VERSION >> "$GITHUB_OUTPUT" + echo "current=$LATEST_VERSION" >> "$GITHUB_OUTPUT" fi done From 26af539e9ae47b7d454932e1685b18b79054a7be Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Nov 2024 14:17:53 +0000 Subject: [PATCH 031/118] Bump github.com/hashicorp/terraform-plugin-sdk/v2 in /.ci/providerlint Bumps [github.com/hashicorp/terraform-plugin-sdk/v2](https://github.com/hashicorp/terraform-plugin-sdk) from 2.34.0 to 2.35.0. - [Release notes](https://github.com/hashicorp/terraform-plugin-sdk/releases) - [Changelog](https://github.com/hashicorp/terraform-plugin-sdk/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/terraform-plugin-sdk/compare/v2.34.0...v2.35.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/terraform-plugin-sdk/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .ci/providerlint/go.mod | 2 +- .ci/providerlint/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.ci/providerlint/go.mod b/.ci/providerlint/go.mod index b4bd483e345..968fda4c5e6 100644 --- a/.ci/providerlint/go.mod +++ b/.ci/providerlint/go.mod @@ -7,7 +7,7 @@ toolchain go1.23.3 require ( github.com/bflad/tfproviderlint v0.30.0 github.com/hashicorp/aws-sdk-go-base/v2 v2.0.0-beta.59 - github.com/hashicorp/terraform-plugin-sdk/v2 v2.34.0 + github.com/hashicorp/terraform-plugin-sdk/v2 v2.35.0 golang.org/x/tools v0.27.0 ) diff --git a/.ci/providerlint/go.sum b/.ci/providerlint/go.sum index 7606dc37bb5..4045f453ef2 100644 --- a/.ci/providerlint/go.sum +++ b/.ci/providerlint/go.sum @@ -85,8 +85,8 @@ github.com/hashicorp/terraform-plugin-go v0.25.0 h1:oi13cx7xXA6QciMcpcFi/rwA974r github.com/hashicorp/terraform-plugin-go v0.25.0/go.mod h1:+SYagMYadJP86Kvn+TGeV+ofr/R3g4/If0O5sO96MVw= github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0= github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow= -github.com/hashicorp/terraform-plugin-sdk/v2 v2.34.0 h1:kJiWGx2kiQVo97Y5IOGR4EMcZ8DtMswHhUuFibsCQQE= -github.com/hashicorp/terraform-plugin-sdk/v2 v2.34.0/go.mod h1:sl/UoabMc37HA6ICVMmGO+/0wofkVIRxf+BMb/dnoIg= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.35.0 h1:wyKCCtn6pBBL46c1uIIBNUOWlNfYXfXpVo16iDyLp8Y= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.35.0/go.mod h1:B0Al8NyYVr8Mp/KLwssKXG1RqnTk7FySqSn4fRuLNgw= github.com/hashicorp/terraform-registry-address v0.2.3 h1:2TAiKJ1A3MAkZlH1YI/aTVcLZRu7JseiXNRHbOAyoTI= github.com/hashicorp/terraform-registry-address v0.2.3/go.mod h1:lFHA76T8jfQteVfT7caREqguFrW3c4MFSPhZB7HHgUM= github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S52uzrw4x0jKQ= From 5492e4225a1a351b5ba489ed9d61f549a1c5a719 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Nov 2024 09:18:30 -0500 Subject: [PATCH 032/118] Bump codelytv/pr-size-labeler from 1.10.1 to 1.10.2 (#40254) Bumps [codelytv/pr-size-labeler](https://github.com/codelytv/pr-size-labeler) from 1.10.1 to 1.10.2. - [Release notes](https://github.com/codelytv/pr-size-labeler/releases) - [Commits](https://github.com/codelytv/pr-size-labeler/compare/c7a55a022747628b50f3eb5bf863b9e796b8f274...1c3422395d899286d5ee2c809fd5aed264d5eb9b) --- updated-dependencies: - dependency-name: codelytv/pr-size-labeler dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/pull_request_target.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pull_request_target.yml b/.github/workflows/pull_request_target.yml index fb25e93a871..16ede6f2207 100644 --- a/.github/workflows/pull_request_target.yml +++ b/.github/workflows/pull_request_target.yml @@ -35,7 +35,7 @@ jobs: - name: Apply Size Labels if: contains(fromJSON('["opened", "edited"]'), github.event.action) - uses: codelytv/pr-size-labeler@c7a55a022747628b50f3eb5bf863b9e796b8f274 # v1.10.1 + uses: codelytv/pr-size-labeler@1c3422395d899286d5ee2c809fd5aed264d5eb9b # v1.10.2 with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} xs_label: "size/XS" From 90584cbb3a6f46861950d234cecd7f04c3be6528 Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Fri, 22 Nov 2024 09:28:59 -0500 Subject: [PATCH 033/118] chore: revert cdktf documentation changes Updates to these pages and handled by an automated job scheduled to run weekly. --- website/docs/cdktf/python/r/lb_target_group.html.markdown | 2 +- website/docs/cdktf/typescript/r/lb_target_group.html.markdown | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/website/docs/cdktf/python/r/lb_target_group.html.markdown b/website/docs/cdktf/python/r/lb_target_group.html.markdown index 7545ab37574..c98c603d14e 100644 --- a/website/docs/cdktf/python/r/lb_target_group.html.markdown +++ b/website/docs/cdktf/python/r/lb_target_group.html.markdown @@ -227,7 +227,7 @@ This resource supports the following arguments: * When the `target_type` is `lambda`, values can be between `200` and `499`. The default is `200`. * `path` - (May be required) Destination for the health check request. Required for HTTP/HTTPS ALB and HTTP NLB. Only applies to HTTP/HTTPS. * For HTTP and HTTPS health checks, the default is `/`. - * For gRPC health checks, the default is `/AWS.ALB/healthcheck`. + * For gRPC health checks, the default is `/Amazon Web Services.ALB/healthcheck`. * `port` - (Optional) The port the load balancer uses when performing health checks on targets. Valid values are either `traffic-port`, to use the same port as the target group, or a valid port number between `1` and `65536`. Default is `traffic-port`. diff --git a/website/docs/cdktf/typescript/r/lb_target_group.html.markdown b/website/docs/cdktf/typescript/r/lb_target_group.html.markdown index d2f1f5af0a1..13caaa69afd 100644 --- a/website/docs/cdktf/typescript/r/lb_target_group.html.markdown +++ b/website/docs/cdktf/typescript/r/lb_target_group.html.markdown @@ -246,7 +246,7 @@ This resource supports the following arguments: * When the `targetType` is `lambda`, values can be between `200` and `499`. The default is `200`. * `path` - (May be required) Destination for the health check request. Required for HTTP/HTTPS ALB and HTTP NLB. Only applies to HTTP/HTTPS. * For HTTP and HTTPS health checks, the default is `/`. - * For gRPC health checks, the default is `/AWS.ALB/healthcheck`. + * For gRPC health checks, the default is `/Amazon Web Services.ALB/healthcheck`. * `port` - (Optional) The port the load balancer uses when performing health checks on targets. Valid values are either `traffic-port`, to use the same port as the target group, or a valid port number between `1` and `65536`. Default is `traffic-port`. From e2f9749ce5a745856f1311d26872df0dd34fa200 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 22 Nov 2024 10:07:26 -0500 Subject: [PATCH 034/118] Update caps --- internal/service/rds/cluster_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/service/rds/cluster_test.go b/internal/service/rds/cluster_test.go index f06c652ddfa..5809dd64c20 100644 --- a/internal/service/rds/cluster_test.go +++ b/internal/service/rds/cluster_test.go @@ -563,7 +563,7 @@ func TestAccRDSCluster_storageTypeIo2(t *testing.T) { }) } -func TestAccRDSCluster_storageTypeGeneralPurposeToProvisionedIops(t *testing.T) { +func TestAccRDSCluster_storageTypeGeneralPurposeToProvisionedIOPS(t *testing.T) { ctx := acctest.Context(t) if testing.Short() { t.Skip("skipping long-running test in short mode") From 305ee6917ec253027b1f9c9c20a03277f2565599 Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Fri, 22 Nov 2024 10:29:32 -0500 Subject: [PATCH 035/118] r/aws_s3_bucket_lifecycle_configuration: S3 directory buckets are now supported (#40268) Removes a note from the `aws_s3_bucket_lifecycle_configuration` documentation indicating directory buckets are not supported and adjusts the expected result from an acceptance test applying a lifecycle configuration to an S3 directory bucket. ```console % make testacc PKG=s3 TESTS=TestAccS3BucketLifecycleConfiguration_directoryBucket make: Verifying source code with gofmt... ==> Checking that code complies with gofmt requirements... TF_ACC=1 go1.23.2 test ./internal/service/s3/... -v -count 1 -parallel 20 -run='TestAccS3BucketLifecycleConfiguration_directoryBucket' -timeout 360m 2024/11/13 10:55:38 Initializing Terraform AWS Provider... --- PASS: TestAccS3BucketLifecycleConfiguration_directoryBucket (71.37s) PASS ok github.com/hashicorp/terraform-provider-aws/internal/service/s3 77.827s ``` ```console % make testacc PKG=s3 TESTS=TestAccS3BucketLifecycleConfiguration_ make: Verifying source code with gofmt... ==> Checking that code complies with gofmt requirements... TF_ACC=1 go1.23.2 test ./internal/service/s3/... -v -count 1 -parallel 20 -run='TestAccS3BucketLifecycleConfiguration_' -timeout 360m 2024/11/13 10:59:44 Initializing Terraform AWS Provider... --- PASS: TestAccS3BucketLifecycleConfiguration_migrate_noChange (78.59s) === CONT TestAccS3BucketLifecycleConfiguration_Filter_ObjectSizeLessThan --- PASS: TestAccS3BucketLifecycleConfiguration_TransitionDate_standardIa (84.27s) === CONT TestAccS3BucketLifecycleConfiguration_filterWithPrefix --- PASS: TestAccS3BucketLifecycleConfiguration_basic (84.74s) === CONT TestAccS3BucketLifecycleConfiguration_Filter_ObjectSizeGreaterThan --- PASS: TestAccS3BucketLifecycleConfiguration_nonCurrentVersionTransition (98.02s) === CONT TestAccS3BucketLifecycleConfiguration_EmptyFilter_NonCurrentVersions --- PASS: TestAccS3BucketLifecycleConfiguration_multipleRules (98.13s) === CONT TestAccS3BucketLifecycleConfiguration_migrate_withChange --- PASS: TestAccS3BucketLifecycleConfiguration_nonCurrentVersionExpiration (98.17s) === CONT TestAccS3BucketLifecycleConfiguration_disappears --- PASS: TestAccS3BucketLifecycleConfiguration_Filter_ObjectSizeRangeAndPrefix (98.19s) === CONT TestAccS3BucketLifecycleConfiguration_directoryBucket --- PASS: TestAccS3BucketLifecycleConfiguration_Filter_ObjectSizeRange (98.25s) === CONT TestAccS3BucketLifecycleConfiguration_TransitionZeroDays_intelligentTiering === CONT TestAccS3BucketLifecycleConfiguration_TransitionStorageClassOnly_intelligentTiering --- PASS: TestAccS3BucketLifecycleConfiguration_prefix (98.25s) --- PASS: TestAccS3BucketLifecycleConfiguration_RuleExpiration_emptyBlock (98.29s) --- PASS: TestAccS3BucketLifecycleConfiguration_Filter_ObjectSizeGreaterThanZero (98.31s) --- PASS: TestAccS3BucketLifecycleConfiguration_TransitionDate_intelligentTiering (98.33s) --- PASS: TestAccS3BucketLifecycleConfiguration_multipleRules_noFilterOrPrefix (98.36s) --- PASS: TestAccS3BucketLifecycleConfiguration_Filter_Tag (98.59s) --- PASS: TestAccS3BucketLifecycleConfiguration_Update_filterWithAndToFilterWithPrefix (147.79s) --- PASS: TestAccS3BucketLifecycleConfiguration_Filter_ObjectSizeLessThan (70.62s) --- PASS: TestAccS3BucketLifecycleConfiguration_disappears (53.85s) --- PASS: TestAccS3BucketLifecycleConfiguration_basicTransitionDefaultMinimumObjectSize (161.15s) --- PASS: TestAccS3BucketLifecycleConfiguration_Filter_ObjectSizeGreaterThan (81.24s) --- PASS: TestAccS3BucketLifecycleConfiguration_migrate_withChange (69.07s) --- PASS: TestAccS3BucketLifecycleConfiguration_EmptyFilter_NonCurrentVersions (72.11s) --- PASS: TestAccS3BucketLifecycleConfiguration_TransitionZeroDays_intelligentTiering (71.88s) --- PASS: TestAccS3BucketLifecycleConfiguration_TransitionStorageClassOnly_intelligentTiering (71.88s) --- PASS: TestAccS3BucketLifecycleConfiguration_directoryBucket (72.67s) --- PASS: TestAccS3BucketLifecycleConfiguration_ruleAbortIncompleteMultipartUpload (175.15s) --- PASS: TestAccS3BucketLifecycleConfiguration_RuleExpiration_expireMarkerOnly (175.49s) --- PASS: TestAccS3BucketLifecycleConfiguration_TransitionUpdateBetweenDaysAndDate_intelligentTiering (226.45s) --- PASS: TestAccS3BucketLifecycleConfiguration_disableRule (234.25s) --- PASS: TestAccS3BucketLifecycleConfiguration_filterWithPrefix (157.02s) PASS ok github.com/hashicorp/terraform-provider-aws/internal/service/s3 247.725s ``` --- .changelog/40268.txt | 3 +++ .../s3/bucket_lifecycle_configuration_test.go | 18 ++++++++++++++--- ...cket_lifecycle_configuration.html.markdown | 20 +++++++++---------- 3 files changed, 27 insertions(+), 14 deletions(-) create mode 100644 .changelog/40268.txt diff --git a/.changelog/40268.txt b/.changelog/40268.txt new file mode 100644 index 00000000000..a32f43f014f --- /dev/null +++ b/.changelog/40268.txt @@ -0,0 +1,3 @@ +```release-note:note +resource/aws_s3_bucket_lifecycle_configuration: Lifecycle configurations can now be applied to directory buckets +``` diff --git a/internal/service/s3/bucket_lifecycle_configuration_test.go b/internal/service/s3/bucket_lifecycle_configuration_test.go index e6aac6b1cfc..1064fe4ca50 100644 --- a/internal/service/s3/bucket_lifecycle_configuration_test.go +++ b/internal/service/s3/bucket_lifecycle_configuration_test.go @@ -9,7 +9,6 @@ import ( "testing" "time" - "github.com/YakDriver/regexache" "github.com/aws/aws-sdk-go-v2/service/s3/types" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" @@ -1053,6 +1052,7 @@ func TestAccS3BucketLifecycleConfiguration_Update_filterWithAndToFilterWithPrefi func TestAccS3BucketLifecycleConfiguration_directoryBucket(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_s3_bucket_lifecycle_configuration.test" resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) }, @@ -1061,8 +1061,20 @@ func TestAccS3BucketLifecycleConfiguration_directoryBucket(t *testing.T) { CheckDestroy: testAccCheckBucketLifecycleConfigurationDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccBucketLifecycleConfigurationConfig_directoryBucket(rName), - ExpectError: regexache.MustCompile(`MethodNotAllowed: The specified method is not allowed against this resource`), + Config: testAccBucketLifecycleConfigurationConfig_directoryBucket(rName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckBucketLifecycleConfigurationExists(ctx, resourceName), + resource.TestCheckResourceAttrPair(resourceName, names.AttrBucket, "aws_s3_directory_bucket.test", names.AttrBucket), + resource.TestCheckResourceAttr(resourceName, acctest.CtRulePound, "1"), + resource.TestCheckResourceAttr(resourceName, "rule.0.status", "Enabled"), + resource.TestCheckResourceAttr(resourceName, "rule.0.expiration.#", "1"), + resource.TestCheckResourceAttr(resourceName, "rule.0.expiration.0.days", "365"), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, }, }, }) diff --git a/website/docs/r/s3_bucket_lifecycle_configuration.html.markdown b/website/docs/r/s3_bucket_lifecycle_configuration.html.markdown index 16c0ad7de9f..f7c434ba7f9 100644 --- a/website/docs/r/s3_bucket_lifecycle_configuration.html.markdown +++ b/website/docs/r/s3_bucket_lifecycle_configuration.html.markdown @@ -18,14 +18,12 @@ An S3 Lifecycle configuration consists of one or more Lifecycle rules. Each rule For more information see the Amazon S3 User Guide on [`Lifecycle Configuration Elements`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html). -~> **NOTE:** S3 Buckets only support a single lifecycle configuration. Declaring multiple `aws_s3_bucket_lifecycle_configuration` resources to the same S3 Bucket will cause a perpetual difference in configuration. +~> S3 Buckets only support a single lifecycle configuration. Declaring multiple `aws_s3_bucket_lifecycle_configuration` resources to the same S3 Bucket will cause a perpetual difference in configuration. -~> **NOTE:** Lifecycle configurations may take some time to fully propagate to all AWS S3 systems. +~> Lifecycle configurations may take some time to fully propagate to all AWS S3 systems. Running Terraform operations shortly after creating a lifecycle configuration may result in changes that affect configuration idempotence. See the Amazon S3 User Guide on [setting lifecycle configuration on a bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html). --> This resource cannot be used with S3 directory buckets. - ## Example Usage ### With neither a filter nor prefix specified @@ -374,12 +372,12 @@ This resource supports the following arguments: ### rule -~> **NOTE:** The `filter` argument, while Optional, is required if the `rule` configuration block does not contain a `prefix` **and** you intend to override the default behavior of setting the rule to filter objects with the empty string prefix (`""`). +~> The `filter` argument, while Optional, is required if the `rule` configuration block does not contain a `prefix` **and** you intend to override the default behavior of setting the rule to filter objects with the empty string prefix (`""`). Since `prefix` is deprecated by Amazon S3 and will be removed in the next major version of the Terraform AWS Provider, we recommend users either specify `filter` or leave both `filter` and `prefix` unspecified. -~> **NOTE:** A rule cannot be updated from having a filter (via either the `rule.filter` parameter or when neither `rule.filter` and `rule.prefix` are specified) to only having a prefix via the `rule.prefix` parameter. +~> A rule cannot be updated from having a filter (via either the `rule.filter` parameter or when neither `rule.filter` and `rule.prefix` are specified) to only having a prefix via the `rule.prefix` parameter. -~> **NOTE** Terraform cannot distinguish a difference between configurations that use `rule.filter {}` and configurations that neither use `rule.filter` nor `rule.prefix`, so a rule cannot be updated from applying to all objects in the bucket via `rule.filter {}` to applying to a subset of objects based on the key prefix `""` and vice versa. +~> Terraform cannot distinguish a difference between configurations that use `rule.filter {}` and configurations that neither use `rule.filter` nor `rule.prefix`, so a rule cannot be updated from applying to all objects in the bucket via `rule.filter {}` to applying to a subset of objects based on the key prefix `""` and vice versa. The `rule` configuration block supports the following arguments: @@ -409,7 +407,7 @@ The `expiration` configuration block supports the following arguments: ### filter -~> **NOTE:** The `filter` configuration block must either be specified as the empty configuration block (`filter {}`) or with exactly one of `prefix`, `tag`, `and`, `object_size_greater_than` or `object_size_less_than` specified. +~> The `filter` configuration block must either be specified as the empty configuration block (`filter {}`) or with exactly one of `prefix`, `tag`, `and`, `object_size_greater_than` or `object_size_less_than` specified. The `filter` configuration block supports the following arguments: @@ -438,7 +436,7 @@ The `noncurrent_version_transition` configuration block supports the following a The `transition` configuration block supports the following arguments: -~> **Note:** Only one of `date` or `days` should be specified. If neither are specified, the `transition` will default to 0 `days`. +~> Only one of `date` or `days` should be specified. If neither are specified, the `transition` will default to 0 `days`. * `date` - (Optional, Conflicts with `days`) Date objects are transitioned to the specified storage class. The date value must be in [RFC3339 full-date format](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) e.g. `2023-08-22`. * `days` - (Optional, Conflicts with `date`) Number of days after creation when objects are transitioned to the specified storage class. The value must be a positive integer. If both `days` and `date` are not specified, defaults to `0`. Valid values depend on `storage_class`, see [Transition objects using Amazon S3 Lifecycle](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html) for more details. @@ -468,7 +466,7 @@ This resource exports the following attributes in addition to the arguments abov ## Import -In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 bucket lifecycle configuration using the `bucket` or using the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import an S3 bucket lifecycle configuration using the `bucket` or the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: If the owner (account ID) of the source bucket is the same account used to configure the Terraform AWS Provider, import using the `bucket`: @@ -488,7 +486,7 @@ import { } ``` -**Using `terraform import` to import** S3 bucket lifecycle configuration using the `bucket` or using the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: +Using `terraform import`, import an S3 bucket lifecycle configuration using the `bucket` or the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: If the owner (account ID) of the source bucket is the same account used to configure the Terraform AWS Provider, import using the `bucket`: From 6a4b5bacca8f28d22ddf0f251203dce8144a679d Mon Sep 17 00:00:00 2001 From: changelogbot Date: Fri, 22 Nov 2024 15:33:57 +0000 Subject: [PATCH 036/118] Update CHANGELOG.md for #40268 --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 44513a1406d..aae2f41ddd2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,13 @@ ## 5.78.0 (Unreleased) + +NOTES: + +* resource/aws_s3_bucket_lifecycle_configuration: Lifecycle configurations can now be applied to directory buckets ([#40268](https://github.com/hashicorp/terraform-provider-aws/issues/40268)) + +BUG FIXES: + +* resource/aws_batch_job_definition: Fix crash when specifying `eksProperties` or `ecsProperties` block ([#40172](https://github.com/hashicorp/terraform-provider-aws/issues/40172)) + ## 5.77.0 (November 21, 2024) NOTES: From d128c4e1979f8331730613a092bf87962729a8cd Mon Sep 17 00:00:00 2001 From: Adrian Johnson Date: Fri, 22 Nov 2024 10:04:33 -0600 Subject: [PATCH 037/118] aws_chatbot_slack_channel_configuration: use flex HasChanges() --- .../chatbot/slack_channel_configuration.go | 72 ++++++++++--------- 1 file changed, 39 insertions(+), 33 deletions(-) diff --git a/internal/service/chatbot/slack_channel_configuration.go b/internal/service/chatbot/slack_channel_configuration.go index 04ff9492252..51fa4b7564c 100644 --- a/internal/service/chatbot/slack_channel_configuration.go +++ b/internal/service/chatbot/slack_channel_configuration.go @@ -220,7 +220,13 @@ func (r *slackChannelConfigurationResource) Update(ctx context.Context, request conn := r.Meta().ChatbotClient(ctx) - if slackChannelConfigurationHasChanges(ctx, new, old) { + diff, d := fwflex.Calculate(ctx, new, old) + response.Diagnostics.Append(d...) + if response.Diagnostics.HasError() { + return + } + + if diff.HasChanges() { input := &chatbot.UpdateSlackChannelConfigurationInput{} response.Diagnostics.Append(fwflex.Expand(ctx, new, input)...) if response.Diagnostics.HasError() { @@ -437,38 +443,38 @@ func (loggingLevel) Values() []loggingLevel { } } -func slackChannelConfigurationHasChanges(ctx context.Context, plan, state slackChannelConfigurationResourceModel) bool { - // Sort SNS Topic ARNs before comparison - planSNSTopicARNs, err := sortSNSTopicARNs(ctx, plan.SNSTopicARNs) - if err != nil { - // Log error and fall back to direct comparison - tflog.Warn(ctx, "Failed to sort plan SNS Topic ARNs", map[string]interface{}{ - "error": err.Error(), - }) - planSNSTopicARNs = plan.SNSTopicARNs - } - - stateSNSTopicARNs, err := sortSNSTopicARNs(ctx, state.SNSTopicARNs) - if err != nil { - // Log error and fall back to direct comparison - tflog.Warn(ctx, "Failed to sort state SNS Topic ARNs", map[string]interface{}{ - "error": err.Error(), - }) - stateSNSTopicARNs = state.SNSTopicARNs - } - - return !plan.ChatConfigurationARN.Equal(state.ChatConfigurationARN) || - !plan.ConfigurationName.Equal(state.ConfigurationName) || - !plan.GuardrailPolicyARNs.Equal(state.GuardrailPolicyARNs) || - !plan.IAMRoleARN.Equal(state.IAMRoleARN) || - !plan.LoggingLevel.Equal(state.LoggingLevel) || - !plan.SlackChannelID.Equal(state.SlackChannelID) || - !plan.SlackChannelName.Equal(state.SlackChannelName) || - !plan.SlackTeamID.Equal(state.SlackTeamID) || - !plan.SlackTeamName.Equal(state.SlackTeamName) || - !planSNSTopicARNs.Equal(stateSNSTopicARNs) || - !plan.UserAuthorizationRequired.Equal(state.UserAuthorizationRequired) -} +//func slackChannelConfigurationHasChanges(ctx context.Context, plan, state slackChannelConfigurationResourceModel) bool { +// // Sort SNS Topic ARNs before comparison +// planSNSTopicARNs, err := sortSNSTopicARNs(ctx, plan.SNSTopicARNs) +// if err != nil { +// // Log error and fall back to direct comparison +// tflog.Warn(ctx, "Failed to sort plan SNS Topic ARNs", map[string]interface{}{ +// "error": err.Error(), +// }) +// planSNSTopicARNs = plan.SNSTopicARNs +// } +// +// stateSNSTopicARNs, err := sortSNSTopicARNs(ctx, state.SNSTopicARNs) +// if err != nil { +// // Log error and fall back to direct comparison +// tflog.Warn(ctx, "Failed to sort state SNS Topic ARNs", map[string]interface{}{ +// "error": err.Error(), +// }) +// stateSNSTopicARNs = state.SNSTopicARNs +// } +// +// return !plan.ChatConfigurationARN.Equal(state.ChatConfigurationARN) || +// !plan.ConfigurationName.Equal(state.ConfigurationName) || +// !plan.GuardrailPolicyARNs.Equal(state.GuardrailPolicyARNs) || +// !plan.IAMRoleARN.Equal(state.IAMRoleARN) || +// !plan.LoggingLevel.Equal(state.LoggingLevel) || +// !plan.SlackChannelID.Equal(state.SlackChannelID) || +// !plan.SlackChannelName.Equal(state.SlackChannelName) || +// !plan.SlackTeamID.Equal(state.SlackTeamID) || +// !plan.SlackTeamName.Equal(state.SlackTeamName) || +// !planSNSTopicARNs.Equal(stateSNSTopicARNs) || +// !plan.UserAuthorizationRequired.Equal(state.UserAuthorizationRequired) +//} func sortSNSTopicARNs(ctx context.Context, arns types.List) (types.List, error) { if arns.IsNull() || arns.IsUnknown() { From cac3107030e88c14da7db0e4ad23078fbf34c950 Mon Sep 17 00:00:00 2001 From: Adrian Johnson Date: Fri, 22 Nov 2024 10:13:48 -0600 Subject: [PATCH 038/118] aws_chatbot_slack_channel_configuration: use flex custom types --- .../chatbot/slack_channel_configuration.go | 89 +++++++++---------- 1 file changed, 44 insertions(+), 45 deletions(-) diff --git a/internal/service/chatbot/slack_channel_configuration.go b/internal/service/chatbot/slack_channel_configuration.go index 51fa4b7564c..dcbeb5a05ef 100644 --- a/internal/service/chatbot/slack_channel_configuration.go +++ b/internal/service/chatbot/slack_channel_configuration.go @@ -5,8 +5,6 @@ package chatbot import ( "context" - "fmt" - "sort" "time" "github.com/aws/aws-sdk-go-v2/aws" @@ -21,6 +19,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringdefault" "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" "github.com/hashicorp/terraform-plugin-framework/types" @@ -66,9 +65,9 @@ func (r *slackChannelConfigurationResource) Schema(ctx context.Context, request Required: true, }, "guardrail_policy_arns": schema.ListAttribute{ - Optional: true, - Computed: true, - ElementType: types.StringType, + CustomType: fwtypes.ListOfStringType, + Optional: true, + Computed: true, PlanModifiers: []planmodifier.List{ listplanmodifier.UseStateForUnknown(), }, @@ -97,12 +96,12 @@ func (r *slackChannelConfigurationResource) Schema(ctx context.Context, request "slack_team_name": schema.StringAttribute{ Computed: true, }, - "sns_topic_arns": schema.ListAttribute{ - Optional: true, - Computed: true, - ElementType: types.StringType, - PlanModifiers: []planmodifier.List{ - listplanmodifier.UseStateForUnknown(), + "sns_topic_arns": schema.SetAttribute{ + CustomType: fwtypes.SetOfStringType, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), }, }, names.AttrTags: tftags.TagsAttribute(), @@ -406,20 +405,20 @@ func waitSlackChannelConfigurationDeleted(ctx context.Context, conn *chatbot.Cli } type slackChannelConfigurationResourceModel struct { - ChatConfigurationARN types.String `tfsdk:"chat_configuration_arn"` - ConfigurationName types.String `tfsdk:"configuration_name"` - GuardrailPolicyARNs types.List `tfsdk:"guardrail_policy_arns"` - IAMRoleARN types.String `tfsdk:"iam_role_arn"` - LoggingLevel fwtypes.StringEnum[loggingLevel] `tfsdk:"logging_level"` - SlackChannelID types.String `tfsdk:"slack_channel_id"` - SlackChannelName types.String `tfsdk:"slack_channel_name"` - SlackTeamID types.String `tfsdk:"slack_team_id"` - SlackTeamName types.String `tfsdk:"slack_team_name"` - SNSTopicARNs types.List `tfsdk:"sns_topic_arns"` - Tags tftags.Map `tfsdk:"tags"` - TagsAll tftags.Map `tfsdk:"tags_all"` - Timeouts timeouts.Value `tfsdk:"timeouts"` - UserAuthorizationRequired types.Bool `tfsdk:"user_authorization_required"` + ChatConfigurationARN types.String `tfsdk:"chat_configuration_arn"` + ConfigurationName types.String `tfsdk:"configuration_name"` + GuardrailPolicyARNs fwtypes.ListValueOf[types.String] `tfsdk:"guardrail_policy_arns"` + IAMRoleARN types.String `tfsdk:"iam_role_arn"` + LoggingLevel fwtypes.StringEnum[loggingLevel] `tfsdk:"logging_level"` + SlackChannelID types.String `tfsdk:"slack_channel_id"` + SlackChannelName types.String `tfsdk:"slack_channel_name"` + SlackTeamID types.String `tfsdk:"slack_team_id"` + SlackTeamName types.String `tfsdk:"slack_team_name"` + SNSTopicARNs fwtypes.SetValueOf[types.String] `tfsdk:"sns_topic_arns"` + Tags tftags.Map `tfsdk:"tags"` + TagsAll tftags.Map `tfsdk:"tags_all"` + Timeouts timeouts.Value `tfsdk:"timeouts"` + UserAuthorizationRequired types.Bool `tfsdk:"user_authorization_required"` } func (data *slackChannelConfigurationResourceModel) InitFromID() error { @@ -476,23 +475,23 @@ func (loggingLevel) Values() []loggingLevel { // !plan.UserAuthorizationRequired.Equal(state.UserAuthorizationRequired) //} -func sortSNSTopicARNs(ctx context.Context, arns types.List) (types.List, error) { - if arns.IsNull() || arns.IsUnknown() { - return arns, nil - } - - var arnStrings []string - diags := arns.ElementsAs(ctx, &arnStrings, false) - if diags.HasError() { - return arns, fmt.Errorf("error converting SNS Topic ARNs to strings: %v", diags) - } - - sort.Strings(arnStrings) - - sortedArns, diags := types.ListValueFrom(ctx, types.StringType, arnStrings) - if diags.HasError() { - return arns, fmt.Errorf("error converting sorted strings to List: %v", diags) - } - - return sortedArns, nil -} +//func sortSNSTopicARNs(ctx context.Context, arns types.List) (types.List, error) { +// if arns.IsNull() || arns.IsUnknown() { +// return arns, nil +// } +// +// var arnStrings []string +// diags := arns.ElementsAs(ctx, &arnStrings, false) +// if diags.HasError() { +// return arns, fmt.Errorf("error converting SNS Topic ARNs to strings: %v", diags) +// } +// +// sort.Strings(arnStrings) +// +// sortedArns, diags := types.ListValueFrom(ctx, types.StringType, arnStrings) +// if diags.HasError() { +// return arns, fmt.Errorf("error converting sorted strings to List: %v", diags) +// } +// +// return sortedArns, nil +//} From 205bb54d5f871bbfc0d0ae95f6d2b04e071709ce Mon Sep 17 00:00:00 2001 From: Adrian Johnson Date: Fri, 22 Nov 2024 10:30:22 -0600 Subject: [PATCH 039/118] chore: cleanup unused functions --- .../chatbot/slack_channel_configuration.go | 54 ------------------- 1 file changed, 54 deletions(-) diff --git a/internal/service/chatbot/slack_channel_configuration.go b/internal/service/chatbot/slack_channel_configuration.go index dcbeb5a05ef..472ea430539 100644 --- a/internal/service/chatbot/slack_channel_configuration.go +++ b/internal/service/chatbot/slack_channel_configuration.go @@ -441,57 +441,3 @@ func (loggingLevel) Values() []loggingLevel { loggingLevelNone, } } - -//func slackChannelConfigurationHasChanges(ctx context.Context, plan, state slackChannelConfigurationResourceModel) bool { -// // Sort SNS Topic ARNs before comparison -// planSNSTopicARNs, err := sortSNSTopicARNs(ctx, plan.SNSTopicARNs) -// if err != nil { -// // Log error and fall back to direct comparison -// tflog.Warn(ctx, "Failed to sort plan SNS Topic ARNs", map[string]interface{}{ -// "error": err.Error(), -// }) -// planSNSTopicARNs = plan.SNSTopicARNs -// } -// -// stateSNSTopicARNs, err := sortSNSTopicARNs(ctx, state.SNSTopicARNs) -// if err != nil { -// // Log error and fall back to direct comparison -// tflog.Warn(ctx, "Failed to sort state SNS Topic ARNs", map[string]interface{}{ -// "error": err.Error(), -// }) -// stateSNSTopicARNs = state.SNSTopicARNs -// } -// -// return !plan.ChatConfigurationARN.Equal(state.ChatConfigurationARN) || -// !plan.ConfigurationName.Equal(state.ConfigurationName) || -// !plan.GuardrailPolicyARNs.Equal(state.GuardrailPolicyARNs) || -// !plan.IAMRoleARN.Equal(state.IAMRoleARN) || -// !plan.LoggingLevel.Equal(state.LoggingLevel) || -// !plan.SlackChannelID.Equal(state.SlackChannelID) || -// !plan.SlackChannelName.Equal(state.SlackChannelName) || -// !plan.SlackTeamID.Equal(state.SlackTeamID) || -// !plan.SlackTeamName.Equal(state.SlackTeamName) || -// !planSNSTopicARNs.Equal(stateSNSTopicARNs) || -// !plan.UserAuthorizationRequired.Equal(state.UserAuthorizationRequired) -//} - -//func sortSNSTopicARNs(ctx context.Context, arns types.List) (types.List, error) { -// if arns.IsNull() || arns.IsUnknown() { -// return arns, nil -// } -// -// var arnStrings []string -// diags := arns.ElementsAs(ctx, &arnStrings, false) -// if diags.HasError() { -// return arns, fmt.Errorf("error converting SNS Topic ARNs to strings: %v", diags) -// } -// -// sort.Strings(arnStrings) -// -// sortedArns, diags := types.ListValueFrom(ctx, types.StringType, arnStrings) -// if diags.HasError() { -// return arns, fmt.Errorf("error converting sorted strings to List: %v", diags) -// } -// -// return sortedArns, nil -//} From a2a768ba33f4b7ff6ddf2905b459a4d117d361ca Mon Sep 17 00:00:00 2001 From: Adrian Johnson Date: Fri, 22 Nov 2024 10:49:51 -0600 Subject: [PATCH 040/118] add CHANGELOG entry --- .changelog/40253.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/40253.txt diff --git a/.changelog/40253.txt b/.changelog/40253.txt new file mode 100644 index 00000000000..2e0a205feb8 --- /dev/null +++ b/.changelog/40253.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_chatbot_slack_channel_configuration: Fix inconsistent provider result when order of `sns_topic_arns`changes +``` \ No newline at end of file From aa87459f6a29cad8c2c10d4da29419428b451487 Mon Sep 17 00:00:00 2001 From: Adrian Johnson Date: Fri, 22 Nov 2024 10:54:24 -0600 Subject: [PATCH 041/118] chore: semgrep fix --- internal/service/rds/cluster_test.go | 2 +- internal/service/rds/instance.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/service/rds/cluster_test.go b/internal/service/rds/cluster_test.go index 5809dd64c20..b7d937c83f7 100644 --- a/internal/service/rds/cluster_test.go +++ b/internal/service/rds/cluster_test.go @@ -581,7 +581,7 @@ func TestAccRDSCluster_storageTypeGeneralPurposeToProvisionedIOPS(t *testing.T) { Config: testAccClusterConfig_storageChange(rName, "gp3"), Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr(resourceName, "storage_type", "gp3"), + resource.TestCheckResourceAttr(resourceName, names.AttrStorageType, "gp3"), ), }, { diff --git a/internal/service/rds/instance.go b/internal/service/rds/instance.go index 9735d4b7846..bfaf0c3a631 100644 --- a/internal/service/rds/instance.go +++ b/internal/service/rds/instance.go @@ -2589,7 +2589,7 @@ func dbInstancePopulateModify(input *rds.ModifyDBInstanceInput, d *schema.Resour if slices.Contains([]string{storageTypeIO1, storageTypeIO2}, aws.ToString(input.StorageType)) { input.Iops = aws.Int32(int32(d.Get(names.AttrIOPS).(int))) - input.AllocatedStorage = aws.Int32(int32(d.Get("allocated_storage").(int))) + input.AllocatedStorage = aws.Int32(int32(d.Get(names.AttrAllocatedStorage).(int))) } } From a53860ede27753d792d8f253ed0b7f52de6e9e50 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Fri, 22 Nov 2024 12:26:51 -0500 Subject: [PATCH 042/118] Add CHANGELOG entry. --- .changelog/40264.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/40264.txt diff --git a/.changelog/40264.txt b/.changelog/40264.txt new file mode 100644 index 00000000000..e77c525a67f --- /dev/null +++ b/.changelog/40264.txt @@ -0,0 +1,3 @@ +```release-note:bug +provider: Suppress `Warning: AWS account ID not found for provider` when `skip_requesting_account_id` is `true` +``` \ No newline at end of file From 597e80207bda243ef50bcb38a00355b90ee0ca8e Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 22 Nov 2024 12:49:00 -0500 Subject: [PATCH 043/118] Fixes after merge, sdkv2 --- internal/service/rds/instance.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/service/rds/instance.go b/internal/service/rds/instance.go index 9b935f4085e..16ca081cc41 100644 --- a/internal/service/rds/instance.go +++ b/internal/service/rds/instance.go @@ -2583,9 +2583,9 @@ func dbInstancePopulateModify(input *rds.ModifyDBInstanceInput, d *schema.Resour } // Need to send the iops and allocated_size if migrating to a gp3 volume that's larger than the threshold. - if aws.StringValue(input.StorageType) == storageTypeGP3 && !isStorageTypeGP3BelowAllocatedStorageThreshold(d) { - input.AllocatedStorage = aws.Int32(int32(d.Get("allocated_storage").(int))) - input.Iops = aws.Int32(int32(d.Get("iops").(int))) + if aws.ToString(input.StorageType) == storageTypeGP3 && !isStorageTypeGP3BelowAllocatedStorageThreshold(d) { + input.AllocatedStorage = aws.Int32(int32(d.Get(names.AttrAllocatedStorage).(int))) + input.Iops = aws.Int32(int32(d.Get(names.AttrIOPS).(int))) } } From d9491e31cd50867c7626ab0727f80950d4b838e0 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 22 Nov 2024 12:49:24 -0500 Subject: [PATCH 044/118] Update tests after merge, new ways --- internal/service/rds/instance_test.go | 64 +++++++++++++-------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/internal/service/rds/instance_test.go b/internal/service/rds/instance_test.go index 89a2e1417c5..1f8b4e480c7 100644 --- a/internal/service/rds/instance_test.go +++ b/internal/service/rds/instance_test.go @@ -5946,13 +5946,13 @@ func TestAccRDSInstance_BlueGreenDeployment_outOfBand(t *testing.T) { }, }, { - Config: testAccInstanceConfig_gp3(rName, testAccInstanceConfig_orderableClassMySQLGP3, 400), + Config: testAccInstanceConfig_Storage_gp3(rName, testAccInstanceConfig_orderableClassMySQLGP3, 400), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckInstanceExists(resourceName, &v), - resource.TestCheckResourceAttr(resourceName, "allocated_storage", "400"), - resource.TestCheckResourceAttr(resourceName, "iops", "12000"), + testAccCheckDBInstanceExists(ctx, resourceName, &v1), + resource.TestCheckResourceAttr(resourceName, names.AttrAllocatedStorage, "400"), + resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "12000"), resource.TestCheckResourceAttr(resourceName, "storage_throughput", "500"), - resource.TestCheckResourceAttr(resourceName, "storage_type", "gp3"), + resource.TestCheckResourceAttr(resourceName, names.AttrStorageType, "gp3"), ), }, }, @@ -5999,13 +5999,13 @@ func TestAccRDSInstance_Storage_gp3MySQL(t *testing.T) { }, }, { - Config: testAccInstanceConfig_gp3(rName, testAccInstanceConfig_orderableClassPostgresGP3, 400), + Config: testAccInstanceConfig_Storage_gp3(rName, testAccInstanceConfig_orderableClassPostgresGP3, 400), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckInstanceExists(resourceName, &v), - resource.TestCheckResourceAttr(resourceName, "allocated_storage", "400"), - resource.TestCheckResourceAttr(resourceName, "iops", "12000"), + testAccCheckDBInstanceExists(ctx, resourceName, &v), + resource.TestCheckResourceAttr(resourceName, names.AttrAllocatedStorage, "400"), + resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "12000"), resource.TestCheckResourceAttr(resourceName, "storage_throughput", "500"), - resource.TestCheckResourceAttr(resourceName, "storage_type", "gp3"), + resource.TestCheckResourceAttr(resourceName, names.AttrStorageType, "gp3"), ), }, }, @@ -6052,12 +6052,12 @@ func TestAccRDSInstance_Storage_gp3Postgres(t *testing.T) { }, }, { - Config: testAccInstanceConfig_Storage_gp3(rName, testAccInstanceConfig_orderableClassPostgresGP3, 300), + Config: testAccInstanceConfig_Storage_gp3(rName, testAccInstanceConfig_orderableClassPostgresGP3, 400), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDBInstanceExists(ctx, resourceName, &v), - resource.TestCheckResourceAttr(resourceName, names.AttrAllocatedStorage, "300"), - resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "3000"), - resource.TestCheckResourceAttr(resourceName, "storage_throughput", "125"), + resource.TestCheckResourceAttr(resourceName, names.AttrAllocatedStorage, "400"), + resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "12000"), + resource.TestCheckResourceAttr(resourceName, "storage_throughput", "500"), resource.TestCheckResourceAttr(resourceName, names.AttrStorageType, "gp3"), ), }, @@ -6157,27 +6157,28 @@ func TestAccRDSInstance_Storage_changeThroughput(t *testing.T) { }) } -func TestAccRDSInstance_storageIO(t *testing.T) { +func TestAccRDSInstance_Storage_io(t *testing.T) { + ctx := acctest.Context(t) if testing.Short() { t.Skip("skipping long-running test in short mode") } - var v rds.DBInstance + var v types.DBInstance resourceName := "aws_db_instance.test" rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(t) }, - ErrorCheck: acctest.ErrorCheck(t, rds.EndpointsID), + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.RDSServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, - CheckDestroy: testAccCheckInstanceDestroy, + CheckDestroy: testAccCheckDBInstanceDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccInstanceConfig_storageIO(rName, 12000), + Config: testAccInstanceConfig_Storage_io(rName, 12000), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckInstanceExists(resourceName, &v), - resource.TestCheckResourceAttr(resourceName, "iops", "12000"), - resource.TestCheckResourceAttr(resourceName, "storage_type", "gp3"), + testAccCheckDBInstanceExists(ctx, resourceName, &v), + resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "12000"), + resource.TestCheckResourceAttr(resourceName, names.AttrStorageType, "gp3"), ), }, { @@ -6185,20 +6186,20 @@ func TestAccRDSInstance_storageIO(t *testing.T) { ImportState: true, ImportStateVerify: true, ImportStateVerifyIgnore: []string{ - "apply_immediately", - "final_snapshot_identifier", - "password", + names.AttrApplyImmediately, + names.AttrFinalSnapshotIdentifier, + names.AttrPassword, "skip_final_snapshot", "delete_automated_backups", "blue_green_update", }, }, { - Config: testAccInstanceConfig_storageIO(rName, 14000), + Config: testAccInstanceConfig_Storage_io(rName, 14000), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckInstanceExists(resourceName, &v), - resource.TestCheckResourceAttr(resourceName, "iops", "14000"), - resource.TestCheckResourceAttr(resourceName, "storage_type", "gp3"), + testAccCheckDBInstanceExists(ctx, resourceName, &v), + resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "14000"), + resource.TestCheckResourceAttr(resourceName, names.AttrStorageType, "gp3"), ), }, }, @@ -12564,7 +12565,7 @@ resource "aws_db_instance" "test" { `, rName, iops, throughput)) } -func testAccInstanceConfig_storageIO(rName string, iops int) string { +func testAccInstanceConfig_Storage_io(rName string, iops int) string { return acctest.ConfigCompose( testAccInstanceConfig_orderableClassMySQLGP3(), fmt.Sprintf(` @@ -12583,7 +12584,6 @@ resource "aws_db_instance" "test" { storage_type = data.aws_rds_orderable_db_instance.test.storage_type allocated_storage = 400 - iops = %[2]d } `, rName, iops)) From 0aa73d972e3555c6691c5e03b12b28b20ccc6102 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 22 Nov 2024 13:03:55 -0500 Subject: [PATCH 045/118] Add changelog --- .changelog/28847.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/28847.txt diff --git a/.changelog/28847.txt b/.changelog/28847.txt new file mode 100644 index 00000000000..8abb33a5c11 --- /dev/null +++ b/.changelog/28847.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_db_instance: When changing to gp3 larger than allocated storage threshold, fix bug causing error `InvalidParameterCombination: You must specify both the storage size and iops when modifying the storage size or iops on a DB instance that has iops` +``` From fd9e4bb17d6a6970e1e506f6005ddd1723d55e94 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 22 Nov 2024 13:04:10 -0500 Subject: [PATCH 046/118] Add retroactive changelog --- .changelog/37257.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/37257.txt diff --git a/.changelog/37257.txt b/.changelog/37257.txt new file mode 100644 index 00000000000..85d6a7f4164 --- /dev/null +++ b/.changelog/37257.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_db_instance: When changing from io1/io2 to gp3, fix bug causing error `InvalidParameterCombination: You must specify both the storage size and iops when modifying the storage size or iops on a DB instance that has iops` +``` From 6d466f5e6b622dbe0d714e156b09b368d6e0a4d1 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 22 Nov 2024 13:04:43 -0500 Subject: [PATCH 047/118] Fix misplacing of logic during merge --- internal/service/rds/instance.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/internal/service/rds/instance.go b/internal/service/rds/instance.go index 16ca081cc41..d220057be80 100644 --- a/internal/service/rds/instance.go +++ b/internal/service/rds/instance.go @@ -2581,21 +2581,21 @@ func dbInstancePopulateModify(input *rds.ModifyDBInstanceInput, d *schema.Resour if input.AllocatedStorage == nil { input.AllocatedStorage = aws.Int32(int32(d.Get(names.AttrAllocatedStorage).(int))) } + } + + if d.HasChange(names.AttrStorageType) { + needsModify = true + input.StorageType = aws.String(d.Get(names.AttrStorageType).(string)) // Need to send the iops and allocated_size if migrating to a gp3 volume that's larger than the threshold. if aws.ToString(input.StorageType) == storageTypeGP3 && !isStorageTypeGP3BelowAllocatedStorageThreshold(d) { input.AllocatedStorage = aws.Int32(int32(d.Get(names.AttrAllocatedStorage).(int))) input.Iops = aws.Int32(int32(d.Get(names.AttrIOPS).(int))) } - } - - if d.HasChange(names.AttrStorageType) { - needsModify = true - input.StorageType = aws.String(d.Get(names.AttrStorageType).(string)) if slices.Contains([]string{storageTypeIO1, storageTypeIO2}, aws.ToString(input.StorageType)) { - input.Iops = aws.Int32(int32(d.Get(names.AttrIOPS).(int))) input.AllocatedStorage = aws.Int32(int32(d.Get(names.AttrAllocatedStorage).(int))) + input.Iops = aws.Int32(int32(d.Get(names.AttrIOPS).(int))) } } From af228112f0c0733310c791631abf2981ab0add5c Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 22 Nov 2024 13:05:02 -0500 Subject: [PATCH 048/118] Clean up tests after merge --- internal/service/rds/instance_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/service/rds/instance_test.go b/internal/service/rds/instance_test.go index 1f8b4e480c7..d02383dddae 100644 --- a/internal/service/rds/instance_test.go +++ b/internal/service/rds/instance_test.go @@ -5945,6 +5945,7 @@ func TestAccRDSInstance_BlueGreenDeployment_outOfBand(t *testing.T) { "latest_restorable_time", }, }, + // should this be here? { Config: testAccInstanceConfig_Storage_gp3(rName, testAccInstanceConfig_orderableClassMySQLGP3, 400), Check: resource.ComposeAggregateTestCheckFunc( From b3fb0952cd8fa69609c29f636eb453dbd588e375 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 22 Nov 2024 13:06:45 -0500 Subject: [PATCH 049/118] Remove git merge artifact --- internal/service/rds/instance_test.go | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/internal/service/rds/instance_test.go b/internal/service/rds/instance_test.go index d02383dddae..d5d720c9132 100644 --- a/internal/service/rds/instance_test.go +++ b/internal/service/rds/instance_test.go @@ -5945,17 +5945,6 @@ func TestAccRDSInstance_BlueGreenDeployment_outOfBand(t *testing.T) { "latest_restorable_time", }, }, - // should this be here? - { - Config: testAccInstanceConfig_Storage_gp3(rName, testAccInstanceConfig_orderableClassMySQLGP3, 400), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckDBInstanceExists(ctx, resourceName, &v1), - resource.TestCheckResourceAttr(resourceName, names.AttrAllocatedStorage, "400"), - resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "12000"), - resource.TestCheckResourceAttr(resourceName, "storage_throughput", "500"), - resource.TestCheckResourceAttr(resourceName, names.AttrStorageType, "gp3"), - ), - }, }, }) } From a223c870fe710050555ed9c5ed9777d503894814 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 22 Nov 2024 13:07:45 -0500 Subject: [PATCH 050/118] Fix merge artifact --- internal/service/rds/instance_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/service/rds/instance_test.go b/internal/service/rds/instance_test.go index d5d720c9132..d1888b353bb 100644 --- a/internal/service/rds/instance_test.go +++ b/internal/service/rds/instance_test.go @@ -5989,7 +5989,7 @@ func TestAccRDSInstance_Storage_gp3MySQL(t *testing.T) { }, }, { - Config: testAccInstanceConfig_Storage_gp3(rName, testAccInstanceConfig_orderableClassPostgresGP3, 400), + Config: testAccInstanceConfig_Storage_gp3(rName, testAccInstanceConfig_orderableClassMySQLGP3, 400), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDBInstanceExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, names.AttrAllocatedStorage, "400"), From c312e226703dd8229f0c843eaa49efbd9c509e9f Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 22 Nov 2024 13:23:26 -0500 Subject: [PATCH 051/118] Remove unused --- internal/service/rds/instance_test.go | 89 +++------------------------ 1 file changed, 8 insertions(+), 81 deletions(-) diff --git a/internal/service/rds/instance_test.go b/internal/service/rds/instance_test.go index d1888b353bb..59398574fe7 100644 --- a/internal/service/rds/instance_test.go +++ b/internal/service/rds/instance_test.go @@ -6147,55 +6147,6 @@ func TestAccRDSInstance_Storage_changeThroughput(t *testing.T) { }) } -func TestAccRDSInstance_Storage_io(t *testing.T) { - ctx := acctest.Context(t) - if testing.Short() { - t.Skip("skipping long-running test in short mode") - } - - var v types.DBInstance - resourceName := "aws_db_instance.test" - rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) - - resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, names.RDSServiceID), - ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, - CheckDestroy: testAccCheckDBInstanceDestroy(ctx), - Steps: []resource.TestStep{ - { - Config: testAccInstanceConfig_Storage_io(rName, 12000), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckDBInstanceExists(ctx, resourceName, &v), - resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "12000"), - resource.TestCheckResourceAttr(resourceName, names.AttrStorageType, "gp3"), - ), - }, - { - ResourceName: resourceName, - ImportState: true, - ImportStateVerify: true, - ImportStateVerifyIgnore: []string{ - names.AttrApplyImmediately, - names.AttrFinalSnapshotIdentifier, - names.AttrPassword, - "skip_final_snapshot", - "delete_automated_backups", - "blue_green_update", - }, - }, - { - Config: testAccInstanceConfig_Storage_io(rName, 14000), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckDBInstanceExists(ctx, resourceName, &v), - resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "14000"), - resource.TestCheckResourceAttr(resourceName, names.AttrStorageType, "gp3"), - ), - }, - }, - }) -} - // https://github.com/hashicorp/terraform-provider-aws/issues/33512 func TestAccRDSInstance_Storage_changeIOPSThroughput(t *testing.T) { ctx := acctest.Context(t) @@ -6262,10 +6213,10 @@ func TestAccRDSInstance_Storage_changeIOPS(t *testing.T) { ), }, { - Config: testAccInstanceConfig_Storage_throughput(rName, 13000, 500), + Config: testAccInstanceConfig_Storage_throughput(rName, 14000, 500), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDBInstanceExists(ctx, resourceName, &v), - resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "13000"), + resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "14000"), resource.TestCheckResourceAttr(resourceName, "storage_throughput", "500"), resource.TestCheckResourceAttr(resourceName, names.AttrStorageType, "gp3"), ), @@ -6313,7 +6264,7 @@ func TestAccRDSInstance_Storage_throughputSSE(t *testing.T) { }) } -func TestAccRDSInstance_Storage_typePostgres(t *testing.T) { +func TestAccRDSInstance_Storage_postgres(t *testing.T) { ctx := acctest.Context(t) if testing.Short() { t.Skip("skipping long-running test in short mode") @@ -6330,7 +6281,7 @@ func TestAccRDSInstance_Storage_typePostgres(t *testing.T) { CheckDestroy: testAccCheckDBInstanceDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccInstanceConfig_Storage_typePostgres(rName, "gp2", 200), + Config: testAccInstanceConfig_Storage_postgres(rName, "gp2", 200), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDBInstanceExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, names.AttrAllocatedStorage, "200"), @@ -6353,7 +6304,7 @@ func TestAccRDSInstance_Storage_typePostgres(t *testing.T) { }, }, { - Config: testAccInstanceConfig_Storage_typePostgres(rName, "gp3", 300), + Config: testAccInstanceConfig_Storage_postgres(rName, "gp3", 300), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDBInstanceExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, names.AttrAllocatedStorage, "300"), @@ -6366,7 +6317,7 @@ func TestAccRDSInstance_Storage_typePostgres(t *testing.T) { }) } -func TestAccRDSInstance_newIdentifier_Pending(t *testing.T) { +func TestAccRDSInstance_NewIdentifier_pending(t *testing.T) { ctx := acctest.Context(t) if testing.Short() { t.Skip("skipping long-running test in short mode") @@ -6412,7 +6363,7 @@ func TestAccRDSInstance_newIdentifier_Pending(t *testing.T) { }) } -func TestAccRDSInstance_newIdentifier_Immediately(t *testing.T) { +func TestAccRDSInstance_NewIdentifier_immediately(t *testing.T) { ctx := acctest.Context(t) if testing.Short() { t.Skip("skipping long-running test in short mode") @@ -12555,30 +12506,6 @@ resource "aws_db_instance" "test" { `, rName, iops, throughput)) } -func testAccInstanceConfig_Storage_io(rName string, iops int) string { - return acctest.ConfigCompose( - testAccInstanceConfig_orderableClassMySQLGP3(), - fmt.Sprintf(` -resource "aws_db_instance" "test" { - identifier = %[1]q - engine = data.aws_rds_engine_version.default.engine - engine_version = data.aws_rds_engine_version.default.version - instance_class = data.aws_rds_orderable_db_instance.test.instance_class - db_name = "test" - password = "avoid-plaintext-passwords" - username = "tfacctest" - parameter_group_name = "default.${data.aws_rds_engine_version.default.parameter_group_family}" - skip_final_snapshot = true - - apply_immediately = true - - storage_type = data.aws_rds_orderable_db_instance.test.storage_type - allocated_storage = 400 - iops = %[2]d -} -`, rName, iops)) -} - func testAccInstanceConfig_Storage_throughputSSE(rName string, iops, throughput int) string { return fmt.Sprintf(` data "aws_rds_engine_version" "default" { @@ -12613,7 +12540,7 @@ resource "aws_db_instance" "test" { `, tfrds.InstanceEngineSQLServerStandard, mainInstanceClasses, rName, iops, throughput) } -func testAccInstanceConfig_Storage_typePostgres(rName string, storageType string, allocatedStorage int) string { +func testAccInstanceConfig_Storage_postgres(rName string, storageType string, allocatedStorage int) string { return fmt.Sprintf(` data "aws_rds_engine_version" "default" { engine = %[1]q From 2d1061917d630f1138867f60e978c978e225ab79 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 22 Nov 2024 13:40:28 -0500 Subject: [PATCH 052/118] Fix naming --- internal/service/rds/instance_test.go | 162 +++++++++++++------------- 1 file changed, 81 insertions(+), 81 deletions(-) diff --git a/internal/service/rds/instance_test.go b/internal/service/rds/instance_test.go index 59398574fe7..1e0e64d2a7f 100644 --- a/internal/service/rds/instance_test.go +++ b/internal/service/rds/instance_test.go @@ -3727,79 +3727,6 @@ func TestAccRDSInstance_MonitoringRoleARN_removedToEnabled(t *testing.T) { }) } -// Regression test for https://github.com/hashicorp/terraform/issues/3760 . -// We apply a plan, then change just the iops. If the apply succeeds, we -// consider this a pass, as before in 3760 the request would fail -func TestAccRDSInstance_Storage_separateIOPSUpdate_Io1(t *testing.T) { - ctx := acctest.Context(t) - if testing.Short() { - t.Skip("skipping long-running test in short mode") - } - - var v types.DBInstance - resourceName := "aws_db_instance.test" - rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) - - resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, names.RDSServiceID), - ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, - CheckDestroy: testAccCheckDBInstanceDestroy(ctx), - Steps: []resource.TestStep{ - { - Config: testAccInstanceConfig_iopsUpdate(rName, "io1", 1000), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckDBInstanceExists(ctx, resourceName, &v), - testAccCheckInstanceAttributes(&v), - ), - }, - - { - Config: testAccInstanceConfig_iopsUpdate(rName, "io1", 2000), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckDBInstanceExists(ctx, resourceName, &v), - testAccCheckInstanceAttributes(&v), - ), - }, - }, - }) -} - -func TestAccRDSInstance_Storage_separateIOPSUpdate_Io2(t *testing.T) { - ctx := acctest.Context(t) - if testing.Short() { - t.Skip("skipping long-running test in short mode") - } - - var v types.DBInstance - resourceName := "aws_db_instance.test" - rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) - - resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, names.RDSServiceID), - ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, - CheckDestroy: testAccCheckDBInstanceDestroy(ctx), - Steps: []resource.TestStep{ - { - Config: testAccInstanceConfig_iopsUpdate(rName, "io2", 1000), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckDBInstanceExists(ctx, resourceName, &v), - testAccCheckInstanceAttributes(&v), - ), - }, - - { - Config: testAccInstanceConfig_iopsUpdate(rName, "io2", 2000), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckDBInstanceExists(ctx, resourceName, &v), - testAccCheckInstanceAttributes(&v), - ), - }, - }, - }) -} - func TestAccRDSInstance_portUpdate(t *testing.T) { ctx := acctest.Context(t) if testing.Short() { @@ -6126,7 +6053,7 @@ func TestAccRDSInstance_Storage_changeThroughput(t *testing.T) { CheckDestroy: testAccCheckDBInstanceDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccInstanceConfig_Storage_throughput(rName, 12000, 500), + Config: testAccInstanceConfig_Storage_iopsThroughputMySQLGP3(rName, 12000, 500), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDBInstanceExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "12000"), @@ -6135,7 +6062,7 @@ func TestAccRDSInstance_Storage_changeThroughput(t *testing.T) { ), }, { - Config: testAccInstanceConfig_Storage_throughput(rName, 12000, 600), + Config: testAccInstanceConfig_Storage_iopsThroughputMySQLGP3(rName, 12000, 600), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDBInstanceExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "12000"), @@ -6165,7 +6092,7 @@ func TestAccRDSInstance_Storage_changeIOPSThroughput(t *testing.T) { CheckDestroy: testAccCheckDBInstanceDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccInstanceConfig_Storage_throughput(rName, 12000, 500), + Config: testAccInstanceConfig_Storage_iopsThroughputMySQLGP3(rName, 12000, 500), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDBInstanceExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "12000"), @@ -6174,7 +6101,7 @@ func TestAccRDSInstance_Storage_changeIOPSThroughput(t *testing.T) { ), }, { - Config: testAccInstanceConfig_Storage_throughput(rName, 13000, 600), + Config: testAccInstanceConfig_Storage_iopsThroughputMySQLGP3(rName, 13000, 600), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDBInstanceExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "13000"), @@ -6187,7 +6114,7 @@ func TestAccRDSInstance_Storage_changeIOPSThroughput(t *testing.T) { } // https://github.com/hashicorp/terraform-provider-aws/issues/33512 -func TestAccRDSInstance_Storage_changeIOPS(t *testing.T) { +func TestAccRDSInstance_Storage_changeIOPSGP3(t *testing.T) { ctx := acctest.Context(t) if testing.Short() { t.Skip("skipping long-running test in short mode") @@ -6204,7 +6131,7 @@ func TestAccRDSInstance_Storage_changeIOPS(t *testing.T) { CheckDestroy: testAccCheckDBInstanceDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccInstanceConfig_Storage_throughput(rName, 12000, 500), + Config: testAccInstanceConfig_Storage_iopsThroughputMySQLGP3(rName, 12000, 500), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDBInstanceExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "12000"), @@ -6213,7 +6140,7 @@ func TestAccRDSInstance_Storage_changeIOPS(t *testing.T) { ), }, { - Config: testAccInstanceConfig_Storage_throughput(rName, 14000, 500), + Config: testAccInstanceConfig_Storage_iopsThroughputMySQLGP3(rName, 14000, 500), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDBInstanceExists(ctx, resourceName, &v), resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "14000"), @@ -6317,6 +6244,79 @@ func TestAccRDSInstance_Storage_postgres(t *testing.T) { }) } +// Regression test for https://github.com/hashicorp/terraform/issues/3760 . +// We apply a plan, then change just the iops. If the apply succeeds, we +// consider this a pass, as before in 3760 the request would fail +func TestAccRDSInstance_Storage_changeIOPSio1(t *testing.T) { + ctx := acctest.Context(t) + if testing.Short() { + t.Skip("skipping long-running test in short mode") + } + + var v types.DBInstance + resourceName := "aws_db_instance.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.RDSServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckDBInstanceDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccInstanceConfig_iopsUpdate(rName, "io1", 1000), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckDBInstanceExists(ctx, resourceName, &v), + testAccCheckInstanceAttributes(&v), + ), + }, + + { + Config: testAccInstanceConfig_iopsUpdate(rName, "io1", 2000), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckDBInstanceExists(ctx, resourceName, &v), + testAccCheckInstanceAttributes(&v), + ), + }, + }, + }) +} + +func TestAccRDSInstance_Storage_changeIOPSio2(t *testing.T) { + ctx := acctest.Context(t) + if testing.Short() { + t.Skip("skipping long-running test in short mode") + } + + var v types.DBInstance + resourceName := "aws_db_instance.test" + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.RDSServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckDBInstanceDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccInstanceConfig_iopsUpdate(rName, "io2", 1000), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckDBInstanceExists(ctx, resourceName, &v), + testAccCheckInstanceAttributes(&v), + ), + }, + + { + Config: testAccInstanceConfig_iopsUpdate(rName, "io2", 2000), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckDBInstanceExists(ctx, resourceName, &v), + testAccCheckInstanceAttributes(&v), + ), + }, + }, + }) +} + func TestAccRDSInstance_NewIdentifier_pending(t *testing.T) { ctx := acctest.Context(t) if testing.Short() { @@ -12480,7 +12480,7 @@ resource "aws_db_instance" "test" { `, rName, tfrds.InstanceEngineSQLServerExpress, allocatedStorage)) } -func testAccInstanceConfig_Storage_throughput(rName string, iops, throughput int) string { +func testAccInstanceConfig_Storage_iopsThroughputMySQLGP3(rName string, iops, throughput int) string { return acctest.ConfigCompose( testAccInstanceConfig_orderableClassMySQLGP3(), fmt.Sprintf(` From fd06d1beadf5e8d8805a1affe57e27ec4867bf14 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Fri, 22 Nov 2024 13:41:03 -0500 Subject: [PATCH 053/118] Tweak CHANGELOG entries. --- .changelog/40224.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.changelog/40224.txt b/.changelog/40224.txt index ad2c66a0ca0..b1f78aa0ea6 100644 --- a/.changelog/40224.txt +++ b/.changelog/40224.txt @@ -1,11 +1,11 @@ ```release-note:enhancement -resource/memorydb_cluster: Add `engine` attribute. +resource/aws_memorydb_cluster: Add `engine` argument ``` ```release-note:enhancement -resource/memorydb_snapshot: Add `engine` attribute in `cluster_configuration` attribute. +resource/aws_memorydb_snapshot: Add `cluster_configuration.engine` argument ``` ```release-note:enhancement -data-source/memorydb_cluster: Add `engine` attribute. +data-source/aws_memorydb_cluster: Add `engine` attribute ``` From 8b74b46b7242f9a7e8dc67e0ce5a0387e38b0d6f Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Fri, 22 Nov 2024 13:42:49 -0500 Subject: [PATCH 054/118] d/aws_memorydb_snapshot: Add `cluster_configuration.engine` attribute. --- .changelog/40224.txt | 6 +++++- internal/service/memorydb/snapshot_data_source.go | 4 ++++ internal/service/memorydb/snapshot_data_source_test.go | 1 + website/docs/d/memorydb_snapshot.html.markdown | 3 ++- website/docs/r/memorydb_snapshot.html.markdown | 2 +- 5 files changed, 13 insertions(+), 3 deletions(-) diff --git a/.changelog/40224.txt b/.changelog/40224.txt index b1f78aa0ea6..782ad2139e2 100644 --- a/.changelog/40224.txt +++ b/.changelog/40224.txt @@ -3,9 +3,13 @@ resource/aws_memorydb_cluster: Add `engine` argument ``` ```release-note:enhancement -resource/aws_memorydb_snapshot: Add `cluster_configuration.engine` argument +resource/aws_memorydb_snapshot: Add `cluster_configuration.engine` attribute ``` ```release-note:enhancement data-source/aws_memorydb_cluster: Add `engine` attribute ``` + +```release-note:enhancement +data-source/aws_memorydb_snapshot: Add `cluster_configuration.engine` attribute +``` diff --git a/internal/service/memorydb/snapshot_data_source.go b/internal/service/memorydb/snapshot_data_source.go index caed4c96d89..179cb52f981 100644 --- a/internal/service/memorydb/snapshot_data_source.go +++ b/internal/service/memorydb/snapshot_data_source.go @@ -35,6 +35,10 @@ func dataSourceSnapshot() *schema.Resource { Type: schema.TypeString, Computed: true, }, + names.AttrEngine: { + Type: schema.TypeString, + Computed: true, + }, names.AttrEngineVersion: { Type: schema.TypeString, Computed: true, diff --git a/internal/service/memorydb/snapshot_data_source_test.go b/internal/service/memorydb/snapshot_data_source_test.go index d281bddd0e8..3c3f3ade238 100644 --- a/internal/service/memorydb/snapshot_data_source_test.go +++ b/internal/service/memorydb/snapshot_data_source_test.go @@ -29,6 +29,7 @@ func TestAccMemoryDBSnapshotDataSource_basic(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrPair(dataSourceName, names.AttrARN, resourceName, names.AttrARN), resource.TestCheckTypeSetElemAttrPair(dataSourceName, "cluster_configuration.0.description", resourceName, "cluster_configuration.0.description"), + resource.TestCheckTypeSetElemAttrPair(dataSourceName, "cluster_configuration.0.engine", resourceName, "cluster_configuration.0.engine"), resource.TestCheckTypeSetElemAttrPair(dataSourceName, "cluster_configuration.0.engine_version", resourceName, "cluster_configuration.0.engine_version"), resource.TestCheckTypeSetElemAttrPair(dataSourceName, "cluster_configuration.0.maintenance_window", resourceName, "cluster_configuration.0.maintenance_window"), resource.TestCheckTypeSetElemAttrPair(dataSourceName, "cluster_configuration.0.name", resourceName, "cluster_configuration.0.name"), diff --git a/website/docs/d/memorydb_snapshot.html.markdown b/website/docs/d/memorydb_snapshot.html.markdown index 2c2a63e73c3..d7fa3f4612c 100644 --- a/website/docs/d/memorydb_snapshot.html.markdown +++ b/website/docs/d/memorydb_snapshot.html.markdown @@ -32,7 +32,8 @@ This data source exports the following attributes in addition to the arguments a * `arn` - ARN of the snapshot. * `cluster_configuration` - The configuration of the cluster from which the snapshot was taken. * `description` - Description for the cluster. - * `engine_version` - Version number of the Redis engine used by the cluster. + * `engine` - The engine that will run on cluster nodes. + * `engine_version` - Version number of the engine used by the cluster. * `maintenance_window` - The weekly time range during which maintenance on the cluster is performed. * `name` - Name of the cluster. * `node_type` - Compute and memory capacity of the nodes in the cluster. diff --git a/website/docs/r/memorydb_snapshot.html.markdown b/website/docs/r/memorydb_snapshot.html.markdown index 9ad19ba0fda..c49b3ec573b 100644 --- a/website/docs/r/memorydb_snapshot.html.markdown +++ b/website/docs/r/memorydb_snapshot.html.markdown @@ -40,7 +40,7 @@ This resource exports the following attributes in addition to the arguments abov * `cluster_configuration` - The configuration of the cluster from which the snapshot was taken. * `description` - Description for the cluster. * `engine` - The engine that will run on cluster nodes. - * `engine_version` - Version number of the Redis engine used by the cluster. + * `engine_version` - Version number of the engine used by the cluster. * `maintenance_window` - The weekly time range during which maintenance on the cluster is performed. * `name` - Name of the cluster. * `node_type` - Compute and memory capacity of the nodes in the cluster. From 5548271a51bd41b2312e1f61483b9a5aa1580d80 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Fri, 22 Nov 2024 13:47:12 -0500 Subject: [PATCH 055/118] Corrections for MemoryDB. --- names/data/names_data.hcl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/names/data/names_data.hcl b/names/data/names_data.hcl index b46f324edbd..b63a4a7c0ad 100644 --- a/names/data/names_data.hcl +++ b/names/data/names_data.hcl @@ -5693,7 +5693,7 @@ service "memorydb" { names { provider_name_upper = "MemoryDB" - human_friendly = "MemoryDB for Redis" + human_friendly = "MemoryDB" } client { @@ -5710,7 +5710,7 @@ service "memorydb" { provider_package_correct = "memorydb" doc_prefix = ["memorydb_"] - brand = "AWS" + brand = "Amazon" } service "meta" { From 32732aa091236a76a300d1fa27352cf82d3b4bbc Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Fri, 22 Nov 2024 13:48:22 -0500 Subject: [PATCH 056/118] Run 'make gen'. --- .teamcity/components/generated/services_all.kt | 2 +- website/allowed-subcategories.txt | 2 +- website/docs/guides/custom-service-endpoints.html.markdown | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.teamcity/components/generated/services_all.kt b/.teamcity/components/generated/services_all.kt index dcc12ef9129..4e4dd545903 100644 --- a/.teamcity/components/generated/services_all.kt +++ b/.teamcity/components/generated/services_all.kt @@ -153,7 +153,7 @@ val services = mapOf( "mediapackage" to ServiceSpec("Elemental MediaPackage"), "mediapackagev2" to ServiceSpec("Elemental MediaPackage Version 2"), "mediastore" to ServiceSpec("Elemental MediaStore"), - "memorydb" to ServiceSpec("MemoryDB for Redis"), + "memorydb" to ServiceSpec("MemoryDB"), "mq" to ServiceSpec("MQ", vpcLock = true), "mwaa" to ServiceSpec("MWAA (Managed Workflows for Apache Airflow)", vpcLock = true), "neptune" to ServiceSpec("Neptune"), diff --git a/website/allowed-subcategories.txt b/website/allowed-subcategories.txt index d4fff79113c..6a9803a3080 100644 --- a/website/allowed-subcategories.txt +++ b/website/allowed-subcategories.txt @@ -161,7 +161,7 @@ Mainframe Modernization Managed Grafana Managed Streaming for Kafka Managed Streaming for Kafka Connect -MemoryDB for Redis +MemoryDB Meta Data Sources Neptune Neptune Analytics diff --git a/website/docs/guides/custom-service-endpoints.html.markdown b/website/docs/guides/custom-service-endpoints.html.markdown index 6ddd1209d10..3e0ca3b8c5e 100644 --- a/website/docs/guides/custom-service-endpoints.html.markdown +++ b/website/docs/guides/custom-service-endpoints.html.markdown @@ -235,7 +235,7 @@ provider "aws" { |Elemental MediaPackage|`mediapackage`|`AWS_ENDPOINT_URL_MEDIAPACKAGE`|`mediapackage`| |Elemental MediaPackage Version 2|`mediapackagev2`|`AWS_ENDPOINT_URL_MEDIAPACKAGEV2`|`mediapackagev2`| |Elemental MediaStore|`mediastore`|`AWS_ENDPOINT_URL_MEDIASTORE`|`mediastore`| -|MemoryDB for Redis|`memorydb`|`AWS_ENDPOINT_URL_MEMORYDB`|`memorydb`| +|MemoryDB|`memorydb`|`AWS_ENDPOINT_URL_MEMORYDB`|`memorydb`| |MQ|`mq`|`AWS_ENDPOINT_URL_MQ`|`mq`| |MWAA (Managed Workflows for Apache Airflow)|`mwaa`|`AWS_ENDPOINT_URL_MWAA`|`mwaa`| |Neptune|`neptune`|`AWS_ENDPOINT_URL_NEPTUNE`|`neptune`| From 83480191bbf76b3e0ef8cf94a96e74d6056e2210 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 22 Nov 2024 13:51:15 -0500 Subject: [PATCH 057/118] MySQL/Postgres don't support allocated storage was trying --- internal/service/rds/instance_test.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/internal/service/rds/instance_test.go b/internal/service/rds/instance_test.go index 1e0e64d2a7f..63c5c847c26 100644 --- a/internal/service/rds/instance_test.go +++ b/internal/service/rds/instance_test.go @@ -5916,12 +5916,12 @@ func TestAccRDSInstance_Storage_gp3MySQL(t *testing.T) { }, }, { - Config: testAccInstanceConfig_Storage_gp3(rName, testAccInstanceConfig_orderableClassMySQLGP3, 400), + Config: testAccInstanceConfig_Storage_gp3(rName, testAccInstanceConfig_orderableClassMySQLGP3, 300), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDBInstanceExists(ctx, resourceName, &v), - resource.TestCheckResourceAttr(resourceName, names.AttrAllocatedStorage, "400"), - resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "12000"), - resource.TestCheckResourceAttr(resourceName, "storage_throughput", "500"), + resource.TestCheckResourceAttr(resourceName, names.AttrAllocatedStorage, "300"), + resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "3000"), + resource.TestCheckResourceAttr(resourceName, "storage_throughput", "125"), resource.TestCheckResourceAttr(resourceName, names.AttrStorageType, "gp3"), ), }, @@ -5969,12 +5969,12 @@ func TestAccRDSInstance_Storage_gp3Postgres(t *testing.T) { }, }, { - Config: testAccInstanceConfig_Storage_gp3(rName, testAccInstanceConfig_orderableClassPostgresGP3, 400), + Config: testAccInstanceConfig_Storage_gp3(rName, testAccInstanceConfig_orderableClassPostgresGP3, 300), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDBInstanceExists(ctx, resourceName, &v), - resource.TestCheckResourceAttr(resourceName, names.AttrAllocatedStorage, "400"), - resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "12000"), - resource.TestCheckResourceAttr(resourceName, "storage_throughput", "500"), + resource.TestCheckResourceAttr(resourceName, names.AttrAllocatedStorage, "300"), + resource.TestCheckResourceAttr(resourceName, names.AttrIOPS, "3000"), + resource.TestCheckResourceAttr(resourceName, "storage_throughput", "125"), resource.TestCheckResourceAttr(resourceName, names.AttrStorageType, "gp3"), ), }, From ae1e8c1a971d02b996f81809c909a06f301df9d5 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Fri, 22 Nov 2024 13:54:00 -0500 Subject: [PATCH 058/118] Correct error message. --- internal/generate/checknames/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/generate/checknames/main.go b/internal/generate/checknames/main.go index f84da2a64b1..b0556283813 100644 --- a/internal/generate/checknames/main.go +++ b/internal/generate/checknames/main.go @@ -272,7 +272,7 @@ func checkDocFile(dir, name string, prefixes []DocPrefix) error { sc := scanner.Text() sc = strings.TrimSuffix(strings.TrimPrefix(sc, "subcategory: \""), "\"") if hf != sc { - return fmt.Errorf("file (%s) subcategory (%s) doesn't match file name prefix, expecting %s", name, sc, hf) + return fmt.Errorf("file (%s) subcategory (%s) doesn't match HumanFriendly, expecting %s", name, sc, hf) } case 2: continue From 044de05db4946dc85f82124db9f698b5780ef010 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Fri, 22 Nov 2024 13:56:35 -0500 Subject: [PATCH 059/118] Correct documentation subcategory for MemoryDB. --- website/docs/d/memorydb_acl.html.markdown | 2 +- website/docs/d/memorydb_cluster.html.markdown | 2 +- website/docs/d/memorydb_parameter_group.html.markdown | 2 +- website/docs/d/memorydb_snapshot.html.markdown | 2 +- website/docs/d/memorydb_subnet_group.html.markdown | 2 +- website/docs/d/memorydb_user.html.markdown | 2 +- website/docs/r/memorydb_acl.html.markdown | 2 +- website/docs/r/memorydb_cluster.html.markdown | 2 +- website/docs/r/memorydb_parameter_group.html.markdown | 2 +- website/docs/r/memorydb_snapshot.html.markdown | 2 +- website/docs/r/memorydb_subnet_group.html.markdown | 2 +- website/docs/r/memorydb_user.html.markdown | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/website/docs/d/memorydb_acl.html.markdown b/website/docs/d/memorydb_acl.html.markdown index 56c0e4def26..ca5d591f856 100644 --- a/website/docs/d/memorydb_acl.html.markdown +++ b/website/docs/d/memorydb_acl.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_acl" description: |- diff --git a/website/docs/d/memorydb_cluster.html.markdown b/website/docs/d/memorydb_cluster.html.markdown index 137a8143462..cd86e4978ff 100644 --- a/website/docs/d/memorydb_cluster.html.markdown +++ b/website/docs/d/memorydb_cluster.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_cluster" description: |- diff --git a/website/docs/d/memorydb_parameter_group.html.markdown b/website/docs/d/memorydb_parameter_group.html.markdown index c073c18a12b..e1f9241e68d 100644 --- a/website/docs/d/memorydb_parameter_group.html.markdown +++ b/website/docs/d/memorydb_parameter_group.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_parameter_group" description: |- diff --git a/website/docs/d/memorydb_snapshot.html.markdown b/website/docs/d/memorydb_snapshot.html.markdown index d7fa3f4612c..76db1d5b56d 100644 --- a/website/docs/d/memorydb_snapshot.html.markdown +++ b/website/docs/d/memorydb_snapshot.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_snapshot" description: |- diff --git a/website/docs/d/memorydb_subnet_group.html.markdown b/website/docs/d/memorydb_subnet_group.html.markdown index e0f7fec956d..7d2974aae06 100644 --- a/website/docs/d/memorydb_subnet_group.html.markdown +++ b/website/docs/d/memorydb_subnet_group.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_subnet_group" description: |- diff --git a/website/docs/d/memorydb_user.html.markdown b/website/docs/d/memorydb_user.html.markdown index 0656d5023b8..06651746b48 100644 --- a/website/docs/d/memorydb_user.html.markdown +++ b/website/docs/d/memorydb_user.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_user" description: |- diff --git a/website/docs/r/memorydb_acl.html.markdown b/website/docs/r/memorydb_acl.html.markdown index 4907b332497..34eee0ae208 100644 --- a/website/docs/r/memorydb_acl.html.markdown +++ b/website/docs/r/memorydb_acl.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_acl" description: |- diff --git a/website/docs/r/memorydb_cluster.html.markdown b/website/docs/r/memorydb_cluster.html.markdown index 957bd769f5b..672315e1333 100644 --- a/website/docs/r/memorydb_cluster.html.markdown +++ b/website/docs/r/memorydb_cluster.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_cluster" description: |- diff --git a/website/docs/r/memorydb_parameter_group.html.markdown b/website/docs/r/memorydb_parameter_group.html.markdown index 54bcfd3c0e1..fdb82be1ca5 100644 --- a/website/docs/r/memorydb_parameter_group.html.markdown +++ b/website/docs/r/memorydb_parameter_group.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_parameter_group" description: |- diff --git a/website/docs/r/memorydb_snapshot.html.markdown b/website/docs/r/memorydb_snapshot.html.markdown index c49b3ec573b..6783b199d81 100644 --- a/website/docs/r/memorydb_snapshot.html.markdown +++ b/website/docs/r/memorydb_snapshot.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_snapshot" description: |- diff --git a/website/docs/r/memorydb_subnet_group.html.markdown b/website/docs/r/memorydb_subnet_group.html.markdown index 79e88377a58..10c35572237 100644 --- a/website/docs/r/memorydb_subnet_group.html.markdown +++ b/website/docs/r/memorydb_subnet_group.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_subnet_group" description: |- diff --git a/website/docs/r/memorydb_user.html.markdown b/website/docs/r/memorydb_user.html.markdown index d3af6428b26..5e579fc7ccc 100644 --- a/website/docs/r/memorydb_user.html.markdown +++ b/website/docs/r/memorydb_user.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_user" description: |- From b41c78c0f407e052da5d8ae4c5b75c2cb6b31c17 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Fri, 22 Nov 2024 14:17:48 -0500 Subject: [PATCH 060/118] r/aws_memorydb_cluster: 'engine' is Optional+Computed. --- internal/service/memorydb/cluster.go | 24 ++- .../memorydb/cluster_data_source_test.go | 4 +- internal/service/memorydb/cluster_test.go | 189 +++++++----------- internal/service/memorydb/enum.go | 14 ++ internal/service/memorydb/snapshot_test.go | 11 +- website/docs/d/memorydb_cluster.html.markdown | 4 +- website/docs/r/memorydb_cluster.html.markdown | 6 +- 7 files changed, 109 insertions(+), 143 deletions(-) diff --git a/internal/service/memorydb/cluster.go b/internal/service/memorydb/cluster.go index d7a12e1867c..5c3d18e9a4d 100644 --- a/internal/service/memorydb/cluster.go +++ b/internal/service/memorydb/cluster.go @@ -19,6 +19,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/create" + "github.com/hashicorp/terraform-provider-aws/internal/enum" "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" "github.com/hashicorp/terraform-provider-aws/internal/flex" @@ -81,16 +82,15 @@ func resourceCluster() *schema.Resource { Computed: true, }, names.AttrEngine: { - Type: schema.TypeString, - Required: true, - ValidateFunc: validation.StringInSlice([]string{ - "redis", - "valkey", - }, false), + Type: schema.TypeString, + Optional: true, + Computed: true, + ValidateDiagFunc: enum.Validate[clusterEngine](), }, names.AttrEngineVersion: { Type: schema.TypeString, - Required: true, + Optional: true, + Computed: true, }, "final_snapshot_name": { Type: schema.TypeString, @@ -289,7 +289,6 @@ func resourceClusterCreate(ctx context.Context, d *schema.ResourceData, meta int ACLName: aws.String(d.Get("acl_name").(string)), AutoMinorVersionUpgrade: aws.Bool(d.Get(names.AttrAutoMinorVersionUpgrade).(bool)), ClusterName: aws.String(name), - Engine: aws.String(d.Get(names.AttrEngine).(string)), NodeType: aws.String(d.Get("node_type").(string)), NumReplicasPerShard: aws.Int32(int32(d.Get("num_replicas_per_shard").(int))), NumShards: aws.Int32(int32(d.Get("num_shards").(int))), @@ -305,6 +304,10 @@ func resourceClusterCreate(ctx context.Context, d *schema.ResourceData, meta int input.Description = aws.String(v.(string)) } + if v, ok := d.GetOk(names.AttrEngine); ok { + input.Engine = aws.String(v.(string)) + } + if v, ok := d.GetOk(names.AttrEngineVersion); ok { input.EngineVersion = aws.String(v.(string)) } @@ -383,7 +386,6 @@ func resourceClusterUpdate(ctx context.Context, d *schema.ResourceData, meta int input := &memorydb.UpdateClusterInput{ ClusterName: aws.String(d.Id()), - Engine: aws.String(d.Get(names.AttrEngine).(string)), } if d.HasChange("acl_name") { @@ -394,6 +396,10 @@ func resourceClusterUpdate(ctx context.Context, d *schema.ResourceData, meta int input.Description = aws.String(d.Get(names.AttrDescription).(string)) } + if d.HasChange(names.AttrEngine) { + input.Engine = aws.String(d.Get(names.AttrEngine).(string)) + } + if d.HasChange(names.AttrEngineVersion) { input.EngineVersion = aws.String(d.Get(names.AttrEngineVersion).(string)) } diff --git a/internal/service/memorydb/cluster_data_source_test.go b/internal/service/memorydb/cluster_data_source_test.go index 8770d2ec99f..13a8ca6b199 100644 --- a/internal/service/memorydb/cluster_data_source_test.go +++ b/internal/service/memorydb/cluster_data_source_test.go @@ -73,7 +73,7 @@ func TestAccMemoryDBClusterDataSource_basic(t *testing.T) { func testAccClusterDataSourceConfig_basic(rName string) string { return acctest.ConfigCompose( testAccClusterConfig_baseNetwork(rName), - testAccClusterConfigBaseUserAndACL(rName), + testAccClusterConfig_baseUserAndACL(rName), fmt.Sprintf(` resource "aws_security_group" "test" { name = %[1]q @@ -88,8 +88,6 @@ resource "aws_memorydb_cluster" "test" { auto_minor_version_upgrade = false kms_key_arn = aws_kms_key.test.arn name = %[1]q - engine = "valkey" - engine_version = "7.2" node_type = "db.t4g.small" num_shards = 2 security_group_ids = [aws_security_group.test.id] diff --git a/internal/service/memorydb/cluster_test.go b/internal/service/memorydb/cluster_test.go index 3ef4821fbce..302e14aeeeb 100644 --- a/internal/service/memorydb/cluster_test.go +++ b/internal/service/memorydb/cluster_test.go @@ -31,7 +31,7 @@ func TestAccMemoryDBCluster_basic(t *testing.T) { CheckDestroy: testAccCheckClusterDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccClusterConfig_basic(rName, "redis", "7.1"), + Config: testAccClusterConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName), resource.TestCheckTypeSetElemAttrPair(resourceName, "acl_name", "aws_memorydb_acl.test", names.AttrID), @@ -144,7 +144,7 @@ func TestAccMemoryDBCluster_disappears(t *testing.T) { CheckDestroy: testAccCheckClusterDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccClusterConfig_basic(rName, "redis", "7.1"), + Config: testAccClusterConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName), acctest.CheckResourceDisappears(ctx, acctest.Provider, tfmemorydb.ResourceCluster(), resourceName), @@ -484,7 +484,7 @@ func TestAccMemoryDBCluster_Update_engine(t *testing.T) { CheckDestroy: testAccCheckClusterDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccClusterConfig_basic(rName, "redis", "7.1"), + Config: testAccClusterConfig_engine(rName, "redis", "7.1"), Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrEngine, "redis"), @@ -496,7 +496,7 @@ func TestAccMemoryDBCluster_Update_engine(t *testing.T) { ImportStateVerify: true, }, { - Config: testAccClusterConfig_basic(rName, "valkey", "7.2"), + Config: testAccClusterConfig_engine(rName, "valkey", "7.2"), Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, names.AttrEngine, "valkey"), @@ -983,7 +983,7 @@ func TestAccMemoryDBCluster_Update_snsTopicARN(t *testing.T) { }) } -func TestAccMemoryDBCluster_Update_tags(t *testing.T) { +func TestAccMemoryDBCluster_tags(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_memorydb_cluster.test" @@ -995,11 +995,11 @@ func TestAccMemoryDBCluster_Update_tags(t *testing.T) { CheckDestroy: testAccCheckClusterDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccClusterConfig_tags0(rName), + Config: testAccClusterConfig_tags1(rName, acctest.CtKey1, acctest.CtValue1), Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsAllPercent, "0"), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1), ), }, { @@ -1008,55 +1008,27 @@ func TestAccMemoryDBCluster_Update_tags(t *testing.T) { ImportStateVerify: true, }, { - Config: testAccClusterConfig_tags2(rName, "Key1", acctest.CtValue1, "Key2", acctest.CtValue2), + Config: testAccClusterConfig_tags2(rName, acctest.CtKey1, acctest.CtValue1Updated, acctest.CtKey2, acctest.CtValue2), Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "2"), - resource.TestCheckResourceAttr(resourceName, "tags.Key1", acctest.CtValue1), - resource.TestCheckResourceAttr(resourceName, "tags.Key2", acctest.CtValue2), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsAllPercent, "2"), - resource.TestCheckResourceAttr(resourceName, "tags_all.Key1", acctest.CtValue1), - resource.TestCheckResourceAttr(resourceName, "tags_all.Key2", acctest.CtValue2), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey1, acctest.CtValue1Updated), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey2, acctest.CtValue2), ), }, { - ResourceName: resourceName, - ImportState: true, - ImportStateVerify: true, - }, - { - Config: testAccClusterConfig_tags1(rName, "Key1", acctest.CtValue1), + Config: testAccClusterConfig_tags1(rName, acctest.CtKey2, acctest.CtValue2), Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "1"), - resource.TestCheckResourceAttr(resourceName, "tags.Key1", acctest.CtValue1), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsAllPercent, "1"), - resource.TestCheckResourceAttr(resourceName, "tags_all.Key1", acctest.CtValue1), - ), - }, - { - ResourceName: resourceName, - ImportState: true, - ImportStateVerify: true, - }, - { - Config: testAccClusterConfig_tags0(rName), - Check: resource.ComposeTestCheckFunc( - testAccCheckClusterExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsPercent, "0"), - resource.TestCheckResourceAttr(resourceName, acctest.CtTagsAllPercent, "0"), + resource.TestCheckResourceAttr(resourceName, acctest.CtTagsKey2, acctest.CtValue2), ), }, - { - ResourceName: resourceName, - ImportState: true, - ImportStateVerify: true, - }, }, }) } -func TestAccMemoryDBCluster_valkey(t *testing.T) { +func TestAccMemoryDBCluster_valkeyEngine(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_memorydb_cluster.test" @@ -1068,7 +1040,7 @@ func TestAccMemoryDBCluster_valkey(t *testing.T) { CheckDestroy: testAccCheckClusterDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccClusterConfig_basic(rName, "valkey", "7.2"), + Config: testAccClusterConfig_engine(rName, "valkey", "7.2"), Check: resource.ComposeTestCheckFunc( testAccCheckClusterExists(ctx, resourceName), resource.TestCheckTypeSetElemAttrPair(resourceName, "acl_name", "aws_memorydb_acl.test", names.AttrID), @@ -1189,7 +1161,7 @@ resource "aws_memorydb_subnet_group" "test" { ) } -func testAccClusterConfigBaseUserAndACL(rName string) string { +func testAccClusterConfig_baseUserAndACL(rName string) string { return fmt.Sprintf(` resource "aws_memorydb_user" "test" { access_string = "on ~* &* +@all" @@ -1208,15 +1180,50 @@ resource "aws_memorydb_acl" "test" { `, rName) } -func testAccClusterConfig_basic(rName, engine, engine_version string) string { +func testAccClusterConfig_basic(rName string) string { return acctest.ConfigCompose( testAccClusterConfig_baseNetwork(rName), - testAccClusterConfigBaseUserAndACL(rName), + testAccClusterConfig_baseUserAndACL(rName), fmt.Sprintf(` resource "aws_security_group" "test" { - name = %[1]q - description = %[1]q - vpc_id = aws_vpc.test.id + name = %[1]q + vpc_id = aws_vpc.test.id + + tags = { + Name = %[1]q + } +} + +resource "aws_memorydb_cluster" "test" { + acl_name = aws_memorydb_acl.test.id + auto_minor_version_upgrade = false + name = %[1]q + node_type = "db.t4g.small" + num_shards = 2 + security_group_ids = [aws_security_group.test.id] + snapshot_retention_limit = 7 + subnet_group_name = aws_memorydb_subnet_group.test.id + + tags = { + Test = "test" + } +} +`, rName), + ) +} + +func testAccClusterConfig_engine(rName, engine, engineVersion string) string { + return acctest.ConfigCompose( + testAccClusterConfig_baseNetwork(rName), + testAccClusterConfig_baseUserAndACL(rName), + fmt.Sprintf(` +resource "aws_security_group" "test" { + name = %[1]q + vpc_id = aws_vpc.test.id + + tags = { + Name = %[1]q + } } resource "aws_memorydb_cluster" "test" { @@ -1235,7 +1242,7 @@ resource "aws_memorydb_cluster" "test" { Test = "test" } } -`, rName, engine, engine_version), +`, rName, engine, engineVersion), ) } @@ -1243,11 +1250,9 @@ func testAccClusterConfig_defaults(rName string) string { return acctest.ConfigCompose( fmt.Sprintf(` resource "aws_memorydb_cluster" "test" { - acl_name = "open-access" - name = %[1]q - engine = "redis" - engine_version = "7.1" - node_type = "db.t4g.small" + acl_name = "open-access" + name = %[1]q + node_type = "db.t4g.small" } `, rName), ) @@ -1260,8 +1265,6 @@ func testAccClusterConfig_noName(rName string) string { resource "aws_memorydb_cluster" "test" { acl_name = "open-access" node_type = "db.t4g.small" - engine = "redis" - engine_version = "7.1" num_replicas_per_shard = 0 num_shards = 1 subnet_group_name = aws_memorydb_subnet_group.test.id @@ -1277,8 +1280,6 @@ func testAccClusterConfig_namePrefix(rName, prefix string) string { resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name_prefix = %[1]q - engine = "redis" - engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1295,8 +1296,6 @@ func testAccClusterConfig_noTLS(rName string) string { resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q - engine = "redis" - engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1310,14 +1309,12 @@ resource "aws_memorydb_cluster" "test" { func testAccClusterConfig_aclName(rName, aclName string) string { return acctest.ConfigCompose( testAccClusterConfig_baseNetwork(rName), - testAccClusterConfigBaseUserAndACL(rName), + testAccClusterConfig_baseUserAndACL(rName), fmt.Sprintf(` resource "aws_memorydb_cluster" "test" { depends_on = [aws_memorydb_acl.test] acl_name = %[2]q name = %[1]q - engine = "redis" - engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1335,8 +1332,6 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" data_tiering = true name = %[1]q - engine = "redis" - engine_version = "7.1" node_type = "db.r6gd.xlarge" subnet_group_name = aws_memorydb_subnet_group.test.id } @@ -1352,8 +1347,6 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" description = %[2]q name = %[1]q - engine = "redis" - engine_version = "7.1" node_type = "db.t4g.small" subnet_group_name = aws_memorydb_subnet_group.test.id } @@ -1369,8 +1362,6 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" final_snapshot_name = %[2]q name = %[1]q - engine = "redis" - engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1390,8 +1381,6 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" kms_key_arn = aws_kms_key.test.arn name = %[1]q - engine = "redis" - engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1409,8 +1398,6 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" maintenance_window = %[2]q name = %[1]q - engine = "redis" - engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1428,8 +1415,6 @@ resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q node_type = %[2]q - engine = "redis" - engine_version = "7.1" num_replicas_per_shard = 0 num_shards = 1 subnet_group_name = aws_memorydb_subnet_group.test.id @@ -1445,8 +1430,6 @@ func testAccClusterConfig_numReplicasPerShard(rName string, numReplicasPerShard resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q - engine = "redis" - engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = %[2]d subnet_group_name = aws_memorydb_subnet_group.test.id @@ -1462,8 +1445,6 @@ func testAccClusterConfig_numShards(rName string, numShards int) string { resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q - engine = "redis" - engine_version = "7.1" node_type = "db.t4g.small" num_shards = %[2]d subnet_group_name = aws_memorydb_subnet_group.test.id @@ -1495,8 +1476,6 @@ resource "aws_memorydb_cluster" "test" { depends_on = [aws_memorydb_parameter_group.test] acl_name = "open-access" name = %[1]q - engine = "redis" - engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1514,8 +1493,6 @@ func testAccClusterConfig_port(rName string, port int) string { resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q - engine = "redis" - engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1531,15 +1508,19 @@ func testAccClusterConfig_securityGroups(rName string, sgCount, sgCountInCluster testAccClusterConfig_baseNetwork(rName), fmt.Sprintf(` resource "aws_security_group" "test" { - count = %[2]d + count = %[2]d + vpc_id = aws_vpc.test.id + name = %[1]q + + tags = { + Name = %[1]q + } } resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q - engine = "redis" - engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1557,8 +1538,6 @@ func testAccClusterConfig_snapshotRetentionLimit(rName string, retentionLimit in resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q - engine = "redis" - engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1576,8 +1555,6 @@ func testAccClusterConfig_snapshotFrom(rName1, rName2 string) string { resource "aws_memorydb_cluster" "test1" { acl_name = "open-access" name = %[1]q - engine = "redis" - engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1591,8 +1568,6 @@ resource "aws_memorydb_snapshot" "test" { resource "aws_memorydb_cluster" "test2" { acl_name = "open-access" name = %[2]q - engine = "redis" - engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1610,8 +1585,6 @@ func testAccClusterConfig_snapshotWindow(rName, snapshotWindow string) string { resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q - engine = "redis" - engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1635,8 +1608,6 @@ resource "aws_memorydb_cluster" "test" { depends_on = [aws_sns_topic.test] acl_name = "open-access" name = %[1]q - engine = "redis" - engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1659,8 +1630,6 @@ resource "aws_memorydb_cluster" "test" { depends_on = [aws_sns_topic.test] acl_name = "open-access" name = %[1]q - engine = "redis" - engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1672,24 +1641,6 @@ resource "aws_memorydb_cluster" "test" { ) } -func testAccClusterConfig_tags0(rName string) string { - return acctest.ConfigCompose( - testAccClusterConfig_baseNetwork(rName), - fmt.Sprintf(` -resource "aws_memorydb_cluster" "test" { - acl_name = "open-access" - name = %[1]q - engine = "redis" - engine_version = "7.1" - node_type = "db.t4g.small" - num_replicas_per_shard = 0 - num_shards = 1 - subnet_group_name = aws_memorydb_subnet_group.test.id -} -`, rName), - ) -} - func testAccClusterConfig_tags1(rName, tag1Key, tag1Value string) string { return acctest.ConfigCompose( testAccClusterConfig_baseNetwork(rName), @@ -1697,8 +1648,6 @@ func testAccClusterConfig_tags1(rName, tag1Key, tag1Value string) string { resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q - engine = "redis" - engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 @@ -1719,8 +1668,6 @@ func testAccClusterConfig_tags2(rName, tag1Key, tag1Value, tag2Key, tag2Value st resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q - engine = "redis" - engine_version = "7.1" node_type = "db.t4g.small" num_replicas_per_shard = 0 num_shards = 1 diff --git a/internal/service/memorydb/enum.go b/internal/service/memorydb/enum.go index 9c5b1eaa287..8d25ba572e1 100644 --- a/internal/service/memorydb/enum.go +++ b/internal/service/memorydb/enum.go @@ -125,3 +125,17 @@ func UserStatus_Values() []string { UserStatusModifying, } } + +type clusterEngine string + +const ( + clusterEngineRedis clusterEngine = "redis" + clusterEngineValkey clusterEngine = "valkey" +) + +func (clusterEngine) Values() []clusterEngine { + return []clusterEngine{ + clusterEngineRedis, + clusterEngineValkey, + } +} diff --git a/internal/service/memorydb/snapshot_test.go b/internal/service/memorydb/snapshot_test.go index 7205eb8f953..4a438e25c3c 100644 --- a/internal/service/memorydb/snapshot_test.go +++ b/internal/service/memorydb/snapshot_test.go @@ -287,17 +287,18 @@ resource "aws_memorydb_subnet_group" "test" { } resource "aws_security_group" "test" { - name = %[1]q - description = %[1]q - vpc_id = aws_vpc.test.id + name = %[1]q + vpc_id = aws_vpc.test.id + + tags = { + Name = %[1]q + } } resource "aws_memorydb_cluster" "test" { acl_name = "open-access" name = %[1]q node_type = "db.t4g.small" - engine = "redis" - engine_version = "7.1" num_replicas_per_shard = 0 num_shards = 1 security_group_ids = [aws_security_group.test.id] diff --git a/website/docs/d/memorydb_cluster.html.markdown b/website/docs/d/memorydb_cluster.html.markdown index cd86e4978ff..442d6cb9ee7 100644 --- a/website/docs/d/memorydb_cluster.html.markdown +++ b/website/docs/d/memorydb_cluster.html.markdown @@ -37,9 +37,9 @@ This data source exports the following attributes in addition to the arguments a * `port` - Port number that the cluster configuration endpoint is listening on. * `data_tiering` - True when data tiering is enabled. * `description` - Description for the cluster. -* `engine_patch_version` - Patch version number of the Redis engine used by the cluster. +* `engine_patch_version` - Patch version number of the engine used by the cluster. * `engine` - Engine that will run on cluster nodes. -* `engine_version` - Version number of the Redis engine used by the cluster. +* `engine_version` - Version number of the engine used by the cluster. * `final_snapshot_name` - Name of the final cluster snapshot to be created when this resource is deleted. If omitted, no final snapshot will be made. * `kms_key_arn` - ARN of the KMS key used to encrypt the cluster at rest. * `maintenance_window` - Weekly time range during which maintenance on the cluster is performed. Specify as a range in the format `ddd:hh24:mi-ddd:hh24:mi` (24H Clock UTC). Example: `sun:23:00-mon:01:30`. diff --git a/website/docs/r/memorydb_cluster.html.markdown b/website/docs/r/memorydb_cluster.html.markdown index 672315e1333..ee5e2186084 100644 --- a/website/docs/r/memorydb_cluster.html.markdown +++ b/website/docs/r/memorydb_cluster.html.markdown @@ -33,8 +33,8 @@ resource "aws_memorydb_cluster" "example" { The following arguments are required: * `acl_name` - (Required) The name of the Access Control List to associate with the cluster. -* `engine` - (Required) The engine that will run on your nodes. Supported values are `redis` and `valkey`. -* `engine_version` - (Required) Version number of the Redis engine to be used for the cluster. Downgrades are not supported. +* `engine` - (Optional) The engine that will run on your nodes. Supported values are `redis` and `valkey`. +* `engine_version` - (Optional) Version number of the engine to be used for the cluster. Downgrades are not supported. * `node_type` - (Required) The compute and memory capacity of the nodes in the cluster. See AWS documentation on [supported node types](https://docs.aws.amazon.com/memorydb/latest/devguide/nodes.supportedtypes.html) as well as [vertical scaling](https://docs.aws.amazon.com/memorydb/latest/devguide/cluster-vertical-scaling.html). The following arguments are optional: @@ -70,7 +70,7 @@ This resource exports the following attributes in addition to the arguments abov * `cluster_endpoint` * `address` - DNS hostname of the cluster configuration endpoint. * `port` - Port number that the cluster configuration endpoint is listening on. -* `engine_patch_version` - Patch version number of the Redis engine used by the cluster. +* `engine_patch_version` - Patch version number of the engine used by the cluster. * `shards` - Set of shards in this cluster. * `name` - Name of this shard. * `num_nodes` - Number of individual nodes in this shard. From 924ed2692017cfc2edf313985c7a46d58eaaf95f Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Fri, 22 Nov 2024 15:11:27 -0500 Subject: [PATCH 061/118] Add Lambda Node.js 22 CHANGELOG entries. --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index aae2f41ddd2..ecf5e6d9a3f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,8 @@ ENHANCEMENTS: * resource/aws_ecs_service: Add `availability_zone_rebalancing` attribute ([#40225](https://github.com/hashicorp/terraform-provider-aws/issues/40225)) * resource/aws_ecs_service: Add vpc_lattice_configurations argument ([#40177](https://github.com/hashicorp/terraform-provider-aws/issues/40177)) * resource/aws_ecs_task_definition: Add `versionConsistency` argument to `container_definitions` ([#40216](https://github.com/hashicorp/terraform-provider-aws/issues/40216)) +* resource/aws_lambda_function: Add support for `nodejs22.x` `runtime` value ([#xxxxx](https://github.com/hashicorp/terraform-provider-aws/issues/xxxxx)) +* resource/aws_lambda_layer_version: Add support for `nodejs22.x` `compatible_runtimes` value ([#xxxxx](https://github.com/hashicorp/terraform-provider-aws/issues/xxxxx)) * resource/aws_rds_global_cluster: Add `endpoint` argument to point to the writer DB instance in the current primary cluster ([#39960](https://github.com/hashicorp/terraform-provider-aws/issues/39960)) BUG FIXES: From 46d04b6c375601f1a7ac7eb3aa72a961d48f77ff Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Fri, 22 Nov 2024 15:15:03 -0500 Subject: [PATCH 062/118] Add Lambda Python 3.13 CHANGELOG entries. --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ecf5e6d9a3f..d3e31c9a63f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -47,6 +47,8 @@ FEATURES: ENHANCEMENTS: +* resource/aws_lambda_function: Add support for `python3.13` `runtime` value ([#xxxxx](https://github.com/hashicorp/terraform-provider-aws/issues/xxxxx)) +* resource/aws_lambda_layer_version: Add support for `python3.13` `compatible_runtimes` value ([#xxxxx](https://github.com/hashicorp/terraform-provider-aws/issues/xxxxx)) * resource/aws_medialive_channel: Add missing h265 codec settings ([#40071](https://github.com/hashicorp/terraform-provider-aws/issues/40071)) BUG FIXES: From a1dd597a67301678d62b9f6bbfb1f6a3000def1f Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Fri, 22 Nov 2024 15:19:47 -0500 Subject: [PATCH 063/118] Correct PR number. --- CHANGELOG.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d3e31c9a63f..332432b9151 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,8 +28,8 @@ ENHANCEMENTS: * resource/aws_ecs_service: Add `availability_zone_rebalancing` attribute ([#40225](https://github.com/hashicorp/terraform-provider-aws/issues/40225)) * resource/aws_ecs_service: Add vpc_lattice_configurations argument ([#40177](https://github.com/hashicorp/terraform-provider-aws/issues/40177)) * resource/aws_ecs_task_definition: Add `versionConsistency` argument to `container_definitions` ([#40216](https://github.com/hashicorp/terraform-provider-aws/issues/40216)) -* resource/aws_lambda_function: Add support for `nodejs22.x` `runtime` value ([#xxxxx](https://github.com/hashicorp/terraform-provider-aws/issues/xxxxx)) -* resource/aws_lambda_layer_version: Add support for `nodejs22.x` `compatible_runtimes` value ([#xxxxx](https://github.com/hashicorp/terraform-provider-aws/issues/xxxxx)) +* resource/aws_lambda_function: Add support for `nodejs22.x` `runtime` value ([#40277](https://github.com/hashicorp/terraform-provider-aws/issues/40277)) +* resource/aws_lambda_layer_version: Add support for `nodejs22.x` `compatible_runtimes` value ([#40277](https://github.com/hashicorp/terraform-provider-aws/issues/40277)) * resource/aws_rds_global_cluster: Add `endpoint` argument to point to the writer DB instance in the current primary cluster ([#39960](https://github.com/hashicorp/terraform-provider-aws/issues/39960)) BUG FIXES: @@ -47,8 +47,8 @@ FEATURES: ENHANCEMENTS: -* resource/aws_lambda_function: Add support for `python3.13` `runtime` value ([#xxxxx](https://github.com/hashicorp/terraform-provider-aws/issues/xxxxx)) -* resource/aws_lambda_layer_version: Add support for `python3.13` `compatible_runtimes` value ([#xxxxx](https://github.com/hashicorp/terraform-provider-aws/issues/xxxxx)) +* resource/aws_lambda_function: Add support for `python3.13` `runtime` value ([#40277](https://github.com/hashicorp/terraform-provider-aws/issues/40277)) +* resource/aws_lambda_layer_version: Add support for `python3.13` `compatible_runtimes` value ([#40277](https://github.com/hashicorp/terraform-provider-aws/issues/40277)) * resource/aws_medialive_channel: Add missing h265 codec settings ([#40071](https://github.com/hashicorp/terraform-provider-aws/issues/40071)) BUG FIXES: From 55d48f355b9a6363cea57d53e9c861df1fc0cbed Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 22 Nov 2024 15:30:05 -0500 Subject: [PATCH 064/118] rds/instance: Test correct updating of cert --- internal/service/rds/instance_test.go | 61 ++++++++++++++++++++++++--- 1 file changed, 56 insertions(+), 5 deletions(-) diff --git a/internal/service/rds/instance_test.go b/internal/service/rds/instance_test.go index e5c19c2ab75..0d1afe0f92d 100644 --- a/internal/service/rds/instance_test.go +++ b/internal/service/rds/instance_test.go @@ -4785,7 +4785,7 @@ func TestAccRDSInstance_SnapshotIdentifier_performanceInsightsEnabled(t *testing }) } -func TestAccRDSInstance_caCertificateIdentifier(t *testing.T) { +func TestAccRDSInstance_CACertificate_latest(t *testing.T) { ctx := acctest.Context(t) if testing.Short() { t.Skip("skipping long-running test in short mode") @@ -4803,7 +4803,7 @@ func TestAccRDSInstance_caCertificateIdentifier(t *testing.T) { CheckDestroy: testAccCheckDBInstanceDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccInstanceConfig_caCertificateID(rName), + Config: testAccInstanceConfig_CACertificate_latest(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDBInstanceExists(ctx, resourceName, &v), resource.TestCheckResourceAttrPair(resourceName, "ca_cert_identifier", dataSourceName, names.AttrID), @@ -4813,6 +4813,40 @@ func TestAccRDSInstance_caCertificateIdentifier(t *testing.T) { }) } +func TestAccRDSInstance_CACertificate_update(t *testing.T) { + ctx := acctest.Context(t) + if testing.Short() { + t.Skip("skipping long-running test in short mode") + } + + var v types.DBInstance + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_db_instance.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.RDSServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckDBInstanceDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccInstanceConfig_CACertificate_update(rName, "rds-ca-ecc384-g1"), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckDBInstanceExists(ctx, resourceName, &v), + resource.TestCheckResourceAttr(resourceName, "ca_cert_identifier", "rds-ca-ecc384-g1"), + ), + }, + { + Config: testAccInstanceConfig_CACertificate_update(rName, "rds-ca-rsa2048-g1"), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckDBInstanceExists(ctx, resourceName, &v), + resource.TestCheckResourceAttr(resourceName, "ca_cert_identifier", "rds-ca-rsa2048-g1"), + ), + }, + }, + }) +} + func TestAccRDSInstance_RestoreToPointInTime_sourceIdentifier(t *testing.T) { ctx := acctest.Context(t) if testing.Short() { @@ -7135,7 +7169,7 @@ resource "aws_db_instance" "test" { `, rName)) } -func testAccInstanceConfig_caCertificateID(rName string) string { +func testAccInstanceConfig_CACertificate_latest(rName string) string { return acctest.ConfigCompose(testAccInstanceConfig_orderableClassMySQL(), fmt.Sprintf(` data "aws_rds_certificate" "latest" { latest_valid_till = true @@ -7156,6 +7190,23 @@ resource "aws_db_instance" "test" { `, rName)) } +func testAccInstanceConfig_CACertificate_update(rName, cert string) string { + return acctest.ConfigCompose(testAccInstanceConfig_orderableClassMySQL(), fmt.Sprintf(` +resource "aws_db_instance" "test" { + identifier = %[1]q + allocated_storage = 10 + apply_immediately = true + ca_cert_identifier = %[2]q + engine = data.aws_rds_orderable_db_instance.test.engine + instance_class = data.aws_rds_orderable_db_instance.test.instance_class + db_name = "test" + skip_final_snapshot = true + password = "avoid-plaintext-passwords" + username = "tfacctest" +} +`, rName, cert)) +} + func testAccInstanceConfig_iamAuth(rName string) string { return fmt.Sprintf(` data "aws_rds_engine_version" "default" { @@ -10206,7 +10257,7 @@ resource "aws_db_instance" "source" { timeouts { update = "120m" } - ca_cert_identifier = "rds-ca-2019" + ca_cert_identifier = "rds-ca-rsa2048-g1" } `, tfrds.InstanceEngineOracleEnterprise, strings.Replace(mainInstanceClasses, "db.t3.small", "frodo", 1), rName) } @@ -10224,7 +10275,7 @@ resource "aws_db_instance" "test" { apply_immediately = true parameter_group_name = aws_db_parameter_group.test.name - ca_cert_identifier = "rds-ca-2019" + ca_cert_identifier = "rds-ca-rsa2048-g1" timeouts { update = "120m" From 998cfca1b0f508ae5d9f314c7bb4b441b009efce Mon Sep 17 00:00:00 2001 From: changelogbot Date: Fri, 22 Nov 2024 20:37:24 +0000 Subject: [PATCH 065/118] Update CHANGELOG.md for #40277 --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 332432b9151..28548f6721a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,9 @@ NOTES: BUG FIXES: +* provider: Suppress `Warning: AWS account ID not found for provider` when `skip_requesting_account_id` is `true` ([#40264](https://github.com/hashicorp/terraform-provider-aws/issues/40264)) * resource/aws_batch_job_definition: Fix crash when specifying `eksProperties` or `ecsProperties` block ([#40172](https://github.com/hashicorp/terraform-provider-aws/issues/40172)) +* resource/aws_chatbot_slack_channel_configuration: Fix inconsistent provider result when order of `sns_topic_arns`changes ([#40253](https://github.com/hashicorp/terraform-provider-aws/issues/40253)) ## 5.77.0 (November 21, 2024) From 005ca9db703bd2e271f5796ffdcef771691e18a5 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Fri, 22 Nov 2024 15:38:30 -0500 Subject: [PATCH 066/118] memorydb: Reduce visibility of enums. --- internal/service/memorydb/cluster.go | 8 +- .../service/memorydb/cluster_data_source.go | 2 +- internal/service/memorydb/enum.go | 121 ++++-------------- internal/service/memorydb/status.go | 6 +- internal/service/memorydb/wait.go | 32 ++--- 5 files changed, 51 insertions(+), 118 deletions(-) diff --git a/internal/service/memorydb/cluster.go b/internal/service/memorydb/cluster.go index 5c3d18e9a4d..08ff6d35464 100644 --- a/internal/service/memorydb/cluster.go +++ b/internal/service/memorydb/cluster.go @@ -458,9 +458,9 @@ func resourceClusterUpdate(ctx context.Context, d *schema.ResourceData, meta int input.SnsTopicArn = aws.String(v) if v == "" { - input.SnsTopicStatus = aws.String(ClusterSNSTopicStatusInactive) + input.SnsTopicStatus = aws.String(clusterSNSTopicStatusInactive) } else { - input.SnsTopicStatus = aws.String(ClusterSNSTopicStatusActive) + input.SnsTopicStatus = aws.String(clusterSNSTopicStatusActive) } } log.Printf("[DEBUG] Updating MemoryDB Cluster (%s)", d.Id()) @@ -557,7 +557,7 @@ func resourceClusterRead(ctx context.Context, d *schema.ResourceData, meta inter d.Set("snapshot_retention_limit", cluster.SnapshotRetentionLimit) d.Set("snapshot_window", cluster.SnapshotWindow) - if aws.ToString(cluster.SnsTopicStatus) == ClusterSNSTopicStatusActive { + if aws.ToString(cluster.SnsTopicStatus) == clusterSNSTopicStatusActive { d.Set(names.AttrSNSTopicARN, cluster.SnsTopicArn) } else { d.Set(names.AttrSNSTopicARN, "") @@ -661,7 +661,7 @@ func deriveClusterNumReplicasPerShard(cluster *awstypes.Cluster) (int, error) { var maxNumberOfNodesPerShard int32 for _, shard := range cluster.Shards { - if aws.ToString(shard.Status) != ClusterShardStatusAvailable { + if aws.ToString(shard.Status) != clusterShardStatusAvailable { continue } diff --git a/internal/service/memorydb/cluster_data_source.go b/internal/service/memorydb/cluster_data_source.go index 25851fb6448..639a29088ba 100644 --- a/internal/service/memorydb/cluster_data_source.go +++ b/internal/service/memorydb/cluster_data_source.go @@ -233,7 +233,7 @@ func dataSourceClusterRead(ctx context.Context, d *schema.ResourceData, meta int d.Set("snapshot_retention_limit", cluster.SnapshotRetentionLimit) d.Set("snapshot_window", cluster.SnapshotWindow) - if aws.ToString(cluster.SnsTopicStatus) == ClusterSNSTopicStatusActive { + if aws.ToString(cluster.SnsTopicStatus) == clusterSNSTopicStatusActive { d.Set(names.AttrSNSTopicARN, cluster.SnsTopicArn) } else { d.Set(names.AttrSNSTopicARN, "") diff --git a/internal/service/memorydb/enum.go b/internal/service/memorydb/enum.go index 8d25ba572e1..7503519982b 100644 --- a/internal/service/memorydb/enum.go +++ b/internal/service/memorydb/enum.go @@ -9,123 +9,56 @@ package memorydb // unlikely to be exhaustive. const ( - ACLStatusActive = "active" - ACLStatusCreating = "creating" - ACLStatusDeleting = "deleting" - ACLStatusModifying = "modifying" + aclStatusActive = "active" + aclStatusCreating = "creating" + aclStatusDeleting = "deleting" + aclStatusModifying = "modifying" ) -func ACLStatus_Values() []string { - return []string{ - ACLStatusActive, - ACLStatusCreating, - ACLStatusDeleting, - ACLStatusModifying, - } -} - const ( - ClusterStatusAvailable = "available" - ClusterStatusCreating = "creating" - ClusterStatusDeleting = "deleting" - ClusterStatusSnapshotting = "snapshotting" - ClusterStatusUpdating = "updating" + clusterStatusAvailable = "available" + clusterStatusCreating = "creating" + clusterStatusDeleting = "deleting" + clusterStatusSnapshotting = "snapshotting" + clusterStatusUpdating = "updating" ) -func ClusterStatus_Values() []string { - return []string{ - ClusterStatusAvailable, - ClusterStatusCreating, - ClusterStatusDeleting, - ClusterStatusSnapshotting, - ClusterStatusUpdating, - } -} - const ( - ClusterParameterGroupStatusApplying = "applying" - ClusterParameterGroupStatusInSync = "in-sync" + clusterParameterGroupStatusApplying = "applying" + clusterParameterGroupStatusInSync = "in-sync" ) -func ClusterParameterGroupStatus_Values() []string { - return []string{ - ClusterParameterGroupStatusApplying, - ClusterParameterGroupStatusInSync, - } -} - const ( - ClusterSecurityGroupStatusActive = "active" - ClusterSecurityGroupStatusModifying = "modifying" + clusterSecurityGroupStatusActive = "active" + clusterSecurityGroupStatusModifying = "modifying" ) -func ClusterSecurityGroupStatus_Values() []string { - return []string{ - ClusterSecurityGroupStatusActive, - ClusterSecurityGroupStatusModifying, - } -} - const ( - ClusterShardStatusAvailable = "available" - ClusterShardStatusCreating = "creating" - ClusterShardStatusDeleting = "deleting" - ClusterShardStatusModifying = "modifying" + clusterShardStatusAvailable = "available" + clusterShardStatusCreating = "creating" + clusterShardStatusDeleting = "deleting" + clusterShardStatusModifying = "modifying" ) -func ClusterShardStatus_Values() []string { - return []string{ - ClusterShardStatusAvailable, - ClusterShardStatusCreating, - ClusterShardStatusDeleting, - ClusterShardStatusModifying, - } -} - const ( - ClusterSNSTopicStatusActive = "ACTIVE" - ClusterSNSTopicStatusInactive = "INACTIVE" + clusterSNSTopicStatusActive = "ACTIVE" + clusterSNSTopicStatusInactive = "INACTIVE" ) -func ClusterSNSTopicStatus_Values() []string { - return []string{ - ClusterSNSTopicStatusActive, - ClusterSNSTopicStatusInactive, - } -} - const ( - SnapshotStatusAvailable = "available" - SnapshotStatusCopying = "copying" - SnapshotStatusCreating = "creating" - SnapshotStatusDeleting = "deleting" - SnapshotStatusRestoring = "restoring" + snapshotStatusAvailable = "available" + snapshotStatusCopying = "copying" + snapshotStatusCreating = "creating" + snapshotStatusDeleting = "deleting" + snapshotStatusRestoring = "restoring" ) -func SnapshotStatus_Values() []string { - return []string{ - SnapshotStatusCreating, - SnapshotStatusAvailable, - SnapshotStatusRestoring, - SnapshotStatusCopying, - SnapshotStatusDeleting, - } -} - const ( - UserStatusActive = "active" - UserStatusDeleting = "deleting" - UserStatusModifying = "modifying" + userStatusActive = "active" + userStatusDeleting = "deleting" + userStatusModifying = "modifying" ) -func UserStatus_Values() []string { - return []string{ - UserStatusActive, - UserStatusDeleting, - UserStatusModifying, - } -} - type clusterEngine string const ( diff --git a/internal/service/memorydb/status.go b/internal/service/memorydb/status.go index 30ded7af769..ddcb9175757 100644 --- a/internal/service/memorydb/status.go +++ b/internal/service/memorydb/status.go @@ -80,12 +80,12 @@ func statusClusterSecurityGroups(ctx context.Context, conn *memorydb.Client, clu // When at least one security group change is being applied (whether // that be adding or removing an SG), say that we're still in progress. - if aws.ToString(sg.Status) != ClusterSecurityGroupStatusActive { - return cluster, ClusterSecurityGroupStatusModifying, nil + if aws.ToString(sg.Status) != clusterSecurityGroupStatusActive { + return cluster, clusterSecurityGroupStatusModifying, nil } } - return cluster, ClusterSecurityGroupStatusActive, nil + return cluster, clusterSecurityGroupStatusActive, nil } } diff --git a/internal/service/memorydb/wait.go b/internal/service/memorydb/wait.go index b546a885833..e36670d928b 100644 --- a/internal/service/memorydb/wait.go +++ b/internal/service/memorydb/wait.go @@ -32,8 +32,8 @@ const ( // waitACLActive waits for MemoryDB ACL to reach an active state after modifications. func waitACLActive(ctx context.Context, conn *memorydb.Client, aclId string) error { stateConf := &retry.StateChangeConf{ - Pending: []string{ACLStatusCreating, ACLStatusModifying}, - Target: []string{ACLStatusActive}, + Pending: []string{aclStatusCreating, aclStatusModifying}, + Target: []string{aclStatusActive}, Refresh: statusACL(ctx, conn, aclId), Timeout: aclActiveTimeout, } @@ -46,7 +46,7 @@ func waitACLActive(ctx context.Context, conn *memorydb.Client, aclId string) err // waitACLDeleted waits for MemoryDB ACL to be deleted. func waitACLDeleted(ctx context.Context, conn *memorydb.Client, aclId string) error { stateConf := &retry.StateChangeConf{ - Pending: []string{ACLStatusDeleting}, + Pending: []string{aclStatusDeleting}, Target: []string{}, Refresh: statusACL(ctx, conn, aclId), Timeout: aclDeletedTimeout, @@ -60,8 +60,8 @@ func waitACLDeleted(ctx context.Context, conn *memorydb.Client, aclId string) er // waitClusterAvailable waits for MemoryDB Cluster to reach an active state after modifications. func waitClusterAvailable(ctx context.Context, conn *memorydb.Client, clusterId string, timeout time.Duration) error { stateConf := &retry.StateChangeConf{ - Pending: []string{ClusterStatusCreating, ClusterStatusUpdating, ClusterStatusSnapshotting}, - Target: []string{ClusterStatusAvailable}, + Pending: []string{clusterStatusCreating, clusterStatusUpdating, clusterStatusSnapshotting}, + Target: []string{clusterStatusAvailable}, Refresh: statusCluster(ctx, conn, clusterId), Timeout: timeout, } @@ -74,7 +74,7 @@ func waitClusterAvailable(ctx context.Context, conn *memorydb.Client, clusterId // waitClusterDeleted waits for MemoryDB Cluster to be deleted. func waitClusterDeleted(ctx context.Context, conn *memorydb.Client, clusterId string, timeout time.Duration) error { stateConf := &retry.StateChangeConf{ - Pending: []string{ClusterStatusDeleting}, + Pending: []string{clusterStatusDeleting}, Target: []string{}, Refresh: statusCluster(ctx, conn, clusterId), Timeout: timeout, @@ -89,8 +89,8 @@ func waitClusterDeleted(ctx context.Context, conn *memorydb.Client, clusterId st // with a new parameter group. func waitClusterParameterGroupInSync(ctx context.Context, conn *memorydb.Client, clusterId string) error { stateConf := &retry.StateChangeConf{ - Pending: []string{ClusterParameterGroupStatusApplying}, - Target: []string{ClusterParameterGroupStatusInSync}, + Pending: []string{clusterParameterGroupStatusApplying}, + Target: []string{clusterParameterGroupStatusInSync}, Refresh: statusClusterParameterGroup(ctx, conn, clusterId), Timeout: clusterParameterGroupInSyncTimeout, } @@ -104,8 +104,8 @@ func waitClusterParameterGroupInSync(ctx context.Context, conn *memorydb.Client, // security group-related changes. func waitClusterSecurityGroupsActive(ctx context.Context, conn *memorydb.Client, clusterId string) error { stateConf := &retry.StateChangeConf{ - Pending: []string{ClusterSecurityGroupStatusModifying}, - Target: []string{ClusterSecurityGroupStatusActive}, + Pending: []string{clusterSecurityGroupStatusModifying}, + Target: []string{clusterSecurityGroupStatusActive}, Refresh: statusClusterSecurityGroups(ctx, conn, clusterId), Timeout: clusterSecurityGroupsActiveTimeout, } @@ -118,8 +118,8 @@ func waitClusterSecurityGroupsActive(ctx context.Context, conn *memorydb.Client, // waitUserActive waits for MemoryDB user to reach an active state after modifications. func waitUserActive(ctx context.Context, conn *memorydb.Client, userId string) error { stateConf := &retry.StateChangeConf{ - Pending: []string{UserStatusModifying}, - Target: []string{UserStatusActive}, + Pending: []string{userStatusModifying}, + Target: []string{userStatusActive}, Refresh: statusUser(ctx, conn, userId), Timeout: userActiveTimeout, } @@ -132,7 +132,7 @@ func waitUserActive(ctx context.Context, conn *memorydb.Client, userId string) e // waitUserDeleted waits for MemoryDB user to be deleted. func waitUserDeleted(ctx context.Context, conn *memorydb.Client, userId string) error { stateConf := &retry.StateChangeConf{ - Pending: []string{UserStatusDeleting}, + Pending: []string{userStatusDeleting}, Target: []string{}, Refresh: statusUser(ctx, conn, userId), Timeout: userDeletedTimeout, @@ -146,8 +146,8 @@ func waitUserDeleted(ctx context.Context, conn *memorydb.Client, userId string) // waitSnapshotAvailable waits for MemoryDB snapshot to reach the available state. func waitSnapshotAvailable(ctx context.Context, conn *memorydb.Client, snapshotId string, timeout time.Duration) error { stateConf := &retry.StateChangeConf{ - Pending: []string{SnapshotStatusCreating}, - Target: []string{SnapshotStatusAvailable}, + Pending: []string{snapshotStatusCreating}, + Target: []string{snapshotStatusAvailable}, Refresh: statusSnapshot(ctx, conn, snapshotId), Timeout: timeout, } @@ -160,7 +160,7 @@ func waitSnapshotAvailable(ctx context.Context, conn *memorydb.Client, snapshotI // waitSnapshotDeleted waits for MemoryDB snapshot to be deleted. func waitSnapshotDeleted(ctx context.Context, conn *memorydb.Client, snapshotId string, timeout time.Duration) error { stateConf := &retry.StateChangeConf{ - Pending: []string{SnapshotStatusDeleting}, + Pending: []string{snapshotStatusDeleting}, Target: []string{}, Refresh: statusSnapshot(ctx, conn, snapshotId), Timeout: timeout, From 95e2ed1c9ded5278209b4238440988eab9f60959 Mon Sep 17 00:00:00 2001 From: Dirk Avery <31492422+YakDriver@users.noreply.github.com> Date: Fri, 22 Nov 2024 15:48:10 -0500 Subject: [PATCH 067/118] Update .changelog/28847.txt Co-authored-by: Kit Ewbank --- .changelog/28847.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changelog/28847.txt b/.changelog/28847.txt index 8abb33a5c11..ca742122768 100644 --- a/.changelog/28847.txt +++ b/.changelog/28847.txt @@ -1,3 +1,3 @@ ```release-note:bug -resource/aws_db_instance: When changing to gp3 larger than allocated storage threshold, fix bug causing error `InvalidParameterCombination: You must specify both the storage size and iops when modifying the storage size or iops on a DB instance that has iops` +resource/aws_db_instance: When changing a `gp3` volume's `allocated_storage` to a value larger than the [threshold value for `engine`](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#gp3-storage), fix bug causing error `InvalidParameterCombination: You must specify both the storage size and iops when modifying the storage size or iops on a DB instance that has iops` ``` From 85a8e929c862d5ce7b7c0a6989846e41c2fe97ce Mon Sep 17 00:00:00 2001 From: Dirk Avery <31492422+YakDriver@users.noreply.github.com> Date: Fri, 22 Nov 2024 15:48:21 -0500 Subject: [PATCH 068/118] Update .changelog/37257.txt Co-authored-by: Kit Ewbank --- .changelog/37257.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changelog/37257.txt b/.changelog/37257.txt index 85d6a7f4164..c93dc45e327 100644 --- a/.changelog/37257.txt +++ b/.changelog/37257.txt @@ -1,3 +1,3 @@ ```release-note:bug -resource/aws_db_instance: When changing from io1/io2 to gp3, fix bug causing error `InvalidParameterCombination: You must specify both the storage size and iops when modifying the storage size or iops on a DB instance that has iops` +resource/aws_db_instance: When changing `storage_type` from `io1` or `io2` to `gp3`, fix bug causing error `InvalidParameterCombination: You must specify both the storage size and iops when modifying the storage size or iops on a DB instance that has iops` ``` From 1e8dbbc2cba5eb015450a5b95005bfeabc91fb34 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 22 Nov 2024 15:55:45 -0500 Subject: [PATCH 069/118] Remove hardcoded cert --- internal/service/rds/instance_test.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/internal/service/rds/instance_test.go b/internal/service/rds/instance_test.go index 0d1afe0f92d..db9b89d9a5d 100644 --- a/internal/service/rds/instance_test.go +++ b/internal/service/rds/instance_test.go @@ -10238,6 +10238,10 @@ data "aws_rds_orderable_db_instance" "test" { preferred_instance_classes = [%[2]s] } +data "aws_rds_certificate" "latest" { + latest_valid_till = true +} + resource "aws_db_instance" "source" { identifier = "%[3]s-source" allocated_storage = 20 @@ -10257,7 +10261,7 @@ resource "aws_db_instance" "source" { timeouts { update = "120m" } - ca_cert_identifier = "rds-ca-rsa2048-g1" + ca_cert_identifier = data.aws_rds_certificate.latest.id } `, tfrds.InstanceEngineOracleEnterprise, strings.Replace(mainInstanceClasses, "db.t3.small", "frodo", 1), rName) } @@ -10275,7 +10279,7 @@ resource "aws_db_instance" "test" { apply_immediately = true parameter_group_name = aws_db_parameter_group.test.name - ca_cert_identifier = "rds-ca-rsa2048-g1" + ca_cert_identifier = data.aws_rds_certificate.latest.id timeouts { update = "120m" From c9febc49c67249903199615b0616a3066a17907e Mon Sep 17 00:00:00 2001 From: changelogbot Date: Fri, 22 Nov 2024 21:21:40 +0000 Subject: [PATCH 070/118] Update CHANGELOG.md for #40278 --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 28548f6721a..2c795e5f1a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ BUG FIXES: * provider: Suppress `Warning: AWS account ID not found for provider` when `skip_requesting_account_id` is `true` ([#40264](https://github.com/hashicorp/terraform-provider-aws/issues/40264)) * resource/aws_batch_job_definition: Fix crash when specifying `eksProperties` or `ecsProperties` block ([#40172](https://github.com/hashicorp/terraform-provider-aws/issues/40172)) * resource/aws_chatbot_slack_channel_configuration: Fix inconsistent provider result when order of `sns_topic_arns`changes ([#40253](https://github.com/hashicorp/terraform-provider-aws/issues/40253)) +* resource/aws_db_instance: When changing `storage_type` from `io1` or `io2` to `gp3`, fix bug causing error `InvalidParameterCombination: You must specify both the storage size and iops when modifying the storage size or iops on a DB instance that has iops` ([#37257](https://github.com/hashicorp/terraform-provider-aws/issues/37257)) +* resource/aws_db_instance: When changing a `gp3` volume's `allocated_storage` to a value larger than the [threshold value for `engine`](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#gp3-storage), fix bug causing error `InvalidParameterCombination: You must specify both the storage size and iops when modifying the storage size or iops on a DB instance that has iops` ([#28847](https://github.com/hashicorp/terraform-provider-aws/issues/28847)) ## 5.77.0 (November 21, 2024) From 2c1ab3a370b770eb17a2b1b790594e042b7d91af Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 22 Nov 2024 17:16:43 -0500 Subject: [PATCH 071/118] Update dependencies --- .ci/tools/go.mod | 6 +++--- .ci/tools/go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.ci/tools/go.mod b/.ci/tools/go.mod index a9dfa8ed0a8..9bf2dce54d5 100644 --- a/.ci/tools/go.mod +++ b/.ci/tools/go.mod @@ -21,8 +21,8 @@ require ( 4d63.com/gochecknoglobals v0.2.1 // indirect cel.dev/expr v0.18.0 // indirect cloud.google.com/go v0.116.0 // indirect - cloud.google.com/go/auth v0.10.2 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.5 // indirect + cloud.google.com/go/auth v0.11.0 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.6 // indirect cloud.google.com/go/compute/metadata v0.5.2 // indirect cloud.google.com/go/iam v1.2.2 // indirect cloud.google.com/go/monitoring v1.21.2 // indirect @@ -335,7 +335,7 @@ require ( golang.org/x/text v0.20.0 // indirect golang.org/x/time v0.8.0 // indirect golang.org/x/tools v0.27.0 // indirect - google.golang.org/api v0.207.0 // indirect + google.golang.org/api v0.209.0 // indirect google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20241118233622-e639e219e697 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 // indirect diff --git a/.ci/tools/go.sum b/.ci/tools/go.sum index 3e9289816cc..f9bb56155b5 100644 --- a/.ci/tools/go.sum +++ b/.ci/tools/go.sum @@ -52,10 +52,10 @@ cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjby cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= -cloud.google.com/go/auth v0.10.2 h1:oKF7rgBfSHdp/kuhXtqU/tNDr0mZqhYbEh+6SiqzkKo= -cloud.google.com/go/auth v0.10.2/go.mod h1:xxA5AqpDrvS+Gkmo9RqrGGRh6WSNKKOXhY3zNOr38tI= -cloud.google.com/go/auth/oauth2adapt v0.2.5 h1:2p29+dePqsCHPP1bqDJcKj4qxRyYCcbzKpFyKGt3MTk= -cloud.google.com/go/auth/oauth2adapt v0.2.5/go.mod h1:AlmsELtlEBnaNTL7jCj8VQFLy6mbZv0s4Q7NGBeQ5E8= +cloud.google.com/go/auth v0.11.0 h1:Ic5SZz2lsvbYcWT5dfjNWgw6tTlGi2Wc8hyQSC9BstA= +cloud.google.com/go/auth v0.11.0/go.mod h1:xxA5AqpDrvS+Gkmo9RqrGGRh6WSNKKOXhY3zNOr38tI= +cloud.google.com/go/auth/oauth2adapt v0.2.6 h1:V6a6XDu2lTwPZWOawrAa9HUK+DB2zfJyTuciBG5hFkU= +cloud.google.com/go/auth/oauth2adapt v0.2.6/go.mod h1:AlmsELtlEBnaNTL7jCj8VQFLy6mbZv0s4Q7NGBeQ5E8= cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= @@ -1716,8 +1716,8 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.207.0 h1:Fvt6IGCYjf7YLcQ+GCegeAI2QSQCfIWhRkmrMPj3JRM= -google.golang.org/api v0.207.0/go.mod h1:I53S168Yr/PNDNMi5yPnDc0/LGRZO6o7PoEbl/HY3CM= +google.golang.org/api v0.209.0 h1:Ja2OXNlyRlWCWu8o+GgI4yUn/wz9h/5ZfFbKz+dQX+w= +google.golang.org/api v0.209.0/go.mod h1:I53S168Yr/PNDNMi5yPnDc0/LGRZO6o7PoEbl/HY3CM= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= From 63bd3f6cd8adcafee314438009a9c5c3bc45c0db Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 22 Nov 2024 17:17:08 -0500 Subject: [PATCH 072/118] Update AWS --- go.mod | 40 ++++++++++++++--------------- go.sum | 80 +++++++++++++++++++++++++++++----------------------------- 2 files changed, 60 insertions(+), 60 deletions(-) diff --git a/go.mod b/go.mod index f3922944f55..3f49a3a54a9 100644 --- a/go.mod +++ b/go.mod @@ -37,7 +37,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/appsync v1.40.0 github.com/aws/aws-sdk-go-v2/service/athena v1.48.4 github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.6 - github.com/aws/aws-sdk-go-v2/service/autoscaling v1.50.0 + github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.0 github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.24.6 github.com/aws/aws-sdk-go-v2/service/backup v1.39.7 github.com/aws/aws-sdk-go-v2/service/batch v1.48.1 @@ -45,7 +45,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/bedrock v1.22.4 github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.27.1 github.com/aws/aws-sdk-go-v2/service/budgets v1.28.6 - github.com/aws/aws-sdk-go-v2/service/chatbot v1.8.6 + github.com/aws/aws-sdk-go-v2/service/chatbot v1.9.0 github.com/aws/aws-sdk-go-v2/service/chime v1.34.6 github.com/aws/aws-sdk-go-v2/service/chimesdkmediapipelines v1.21.1 github.com/aws/aws-sdk-go-v2/service/chimesdkvoice v1.19.6 @@ -57,7 +57,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/cloudfrontkeyvaluestore v1.8.6 github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.27.7 github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.26.5 - github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.46.0 + github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.46.1 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.1 github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.44.0 github.com/aws/aws-sdk-go-v2/service/codeartifact v1.33.6 @@ -68,19 +68,19 @@ require ( github.com/aws/aws-sdk-go-v2/service/codedeploy v1.29.6 github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.24.6 github.com/aws/aws-sdk-go-v2/service/codegurureviewer v1.29.6 - github.com/aws/aws-sdk-go-v2/service/codepipeline v1.36.4 + github.com/aws/aws-sdk-go-v2/service/codepipeline v1.37.0 github.com/aws/aws-sdk-go-v2/service/codestarconnections v1.29.6 github.com/aws/aws-sdk-go-v2/service/codestarnotifications v1.26.6 github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.27.6 - github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.46.6 + github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.47.0 github.com/aws/aws-sdk-go-v2/service/comprehend v1.35.6 github.com/aws/aws-sdk-go-v2/service/computeoptimizer v1.40.0 github.com/aws/aws-sdk-go-v2/service/configservice v1.50.6 - github.com/aws/aws-sdk-go-v2/service/connect v1.116.0 + github.com/aws/aws-sdk-go-v2/service/connect v1.117.0 github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.6 github.com/aws/aws-sdk-go-v2/service/controltower v1.20.0 github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.6 - github.com/aws/aws-sdk-go-v2/service/costexplorer v1.44.0 + github.com/aws/aws-sdk-go-v2/service/costexplorer v1.45.0 github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.11.0 github.com/aws/aws-sdk-go-v2/service/customerprofiles v1.43.0 github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.44.4 @@ -109,10 +109,10 @@ require ( github.com/aws/aws-sdk-go-v2/service/elasticache v1.44.0 github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.5 github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.28.5 - github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.42.1 + github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.43.0 github.com/aws/aws-sdk-go-v2/service/elasticsearchservice v1.32.6 github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.27.6 - github.com/aws/aws-sdk-go-v2/service/emr v1.46.4 + github.com/aws/aws-sdk-go-v2/service/emr v1.47.0 github.com/aws/aws-sdk-go-v2/service/emrcontainers v1.33.7 github.com/aws/aws-sdk-go-v2/service/emrserverless v1.26.6 github.com/aws/aws-sdk-go-v2/service/eventbridge v1.35.6 @@ -135,7 +135,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/identitystore v1.27.6 github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.38.4 github.com/aws/aws-sdk-go-v2/service/inspector v1.25.6 - github.com/aws/aws-sdk-go-v2/service/inspector2 v1.33.1 + github.com/aws/aws-sdk-go-v2/service/inspector2 v1.34.0 github.com/aws/aws-sdk-go-v2/service/internetmonitor v1.20.1 github.com/aws/aws-sdk-go-v2/service/iot v1.61.0 github.com/aws/aws-sdk-go-v2/service/iotanalytics v1.26.6 @@ -152,7 +152,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/kinesisvideo v1.27.6 github.com/aws/aws-sdk-go-v2/service/kms v1.37.6 github.com/aws/aws-sdk-go-v2/service/lakeformation v1.38.3 - github.com/aws/aws-sdk-go-v2/service/lambda v1.68.0 + github.com/aws/aws-sdk-go-v2/service/lambda v1.69.0 github.com/aws/aws-sdk-go-v2/service/launchwizard v1.8.6 github.com/aws/aws-sdk-go-v2/service/lexmodelbuildingservice v1.28.6 github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.49.6 @@ -172,7 +172,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/mq v1.27.7 github.com/aws/aws-sdk-go-v2/service/mwaa v1.33.0 github.com/aws/aws-sdk-go-v2/service/neptune v1.35.5 - github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.14.4 + github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.15.0 github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.44.3 github.com/aws/aws-sdk-go-v2/service/networkmanager v1.31.6 github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.7.6 @@ -193,7 +193,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/pricing v1.32.6 github.com/aws/aws-sdk-go-v2/service/qbusiness v1.16.1 github.com/aws/aws-sdk-go-v2/service/qldb v1.25.6 - github.com/aws/aws-sdk-go-v2/service/quicksight v1.79.1 + github.com/aws/aws-sdk-go-v2/service/quicksight v1.80.0 github.com/aws/aws-sdk-go-v2/service/ram v1.29.6 github.com/aws/aws-sdk-go-v2/service/rbin v1.21.0 github.com/aws/aws-sdk-go-v2/service/rds v1.91.0 @@ -216,7 +216,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/s3 v1.68.0 github.com/aws/aws-sdk-go-v2/service/s3control v1.50.1 github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.6 - github.com/aws/aws-sdk-go-v2/service/sagemaker v1.167.1 + github.com/aws/aws-sdk-go-v2/service/sagemaker v1.168.0 github.com/aws/aws-sdk-go-v2/service/scheduler v1.12.6 github.com/aws/aws-sdk-go-v2/service/schemas v1.28.7 github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.34.6 @@ -227,12 +227,12 @@ require ( github.com/aws/aws-sdk-go-v2/service/servicecatalogappregistry v1.30.6 github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.33.6 github.com/aws/aws-sdk-go-v2/service/servicequotas v1.25.6 - github.com/aws/aws-sdk-go-v2/service/ses v1.28.5 + github.com/aws/aws-sdk-go-v2/service/ses v1.29.0 github.com/aws/aws-sdk-go-v2/service/sesv2 v1.38.3 - github.com/aws/aws-sdk-go-v2/service/sfn v1.33.6 + github.com/aws/aws-sdk-go-v2/service/sfn v1.34.0 github.com/aws/aws-sdk-go-v2/service/shield v1.29.6 github.com/aws/aws-sdk-go-v2/service/signer v1.26.6 - github.com/aws/aws-sdk-go-v2/service/sns v1.33.5 + github.com/aws/aws-sdk-go-v2/service/sns v1.33.6 github.com/aws/aws-sdk-go-v2/service/sqs v1.37.1 github.com/aws/aws-sdk-go-v2/service/ssm v1.56.0 github.com/aws/aws-sdk-go-v2/service/ssmcontacts v1.26.6 @@ -247,17 +247,17 @@ require ( github.com/aws/aws-sdk-go-v2/service/synthetics v1.30.1 github.com/aws/aws-sdk-go-v2/service/taxsettings v1.7.0 github.com/aws/aws-sdk-go-v2/service/timestreaminfluxdb v1.6.6 - github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.6 + github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.7 github.com/aws/aws-sdk-go-v2/service/transcribe v1.41.6 github.com/aws/aws-sdk-go-v2/service/transfer v1.53.5 github.com/aws/aws-sdk-go-v2/service/verifiedpermissions v1.20.2 - github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.8 + github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.9 github.com/aws/aws-sdk-go-v2/service/waf v1.25.6 github.com/aws/aws-sdk-go-v2/service/wafregional v1.25.6 github.com/aws/aws-sdk-go-v2/service/wafv2 v1.55.5 github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.6 github.com/aws/aws-sdk-go-v2/service/worklink v1.23.2 - github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.0 + github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.1 github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.25.0 github.com/aws/aws-sdk-go-v2/service/xray v1.30.0 github.com/aws/smithy-go v1.22.1 diff --git a/go.sum b/go.sum index 6225432200d..38352b23b1c 100644 --- a/go.sum +++ b/go.sum @@ -85,8 +85,8 @@ github.com/aws/aws-sdk-go-v2/service/athena v1.48.4 h1:FbHOJ4JekyaFLE5SG0yuHryYR github.com/aws/aws-sdk-go-v2/service/athena v1.48.4/go.mod h1:sAM9gz5RsYx3nBYISXE9CRnQVk7WtCs6SjCZvygmtzQ= github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.6 h1:TLXugBC1lQUGMcVhUTdRiUnX4ulOs13hGvBlw4bBkSE= github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.6/go.mod h1:TnalEymbabDCozLHd0UxERDVwDsiUNQ8Cy7Wd6I+nUE= -github.com/aws/aws-sdk-go-v2/service/autoscaling v1.50.0 h1:5tF6T8pAKna0TZ2g77jKdTCKoIRDsaYlYxz9OC1BraI= -github.com/aws/aws-sdk-go-v2/service/autoscaling v1.50.0/go.mod h1:I1+/2m+IhnK5qEbhS3CrzjeiVloo9sItE/2K+so0fkU= +github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.0 h1:1KzQVZi7OTixxaVJ8fWaJAUBjme+iQ3zBOCZhE4RgxQ= +github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.0/go.mod h1:I1+/2m+IhnK5qEbhS3CrzjeiVloo9sItE/2K+so0fkU= github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.24.6 h1:zkRcAyCAf1sO51+tr7cdzARkojrgaqQEMNJa6SSxszw= github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.24.6/go.mod h1:Fk9vMo1pF5oomcRNwVuu/oAZWgnErNzdr1dpYlLFnjg= github.com/aws/aws-sdk-go-v2/service/backup v1.39.7 h1:YeU78WW19lWGew7OBP2lImtLvn2d5Zlktjwh268d07I= @@ -101,8 +101,8 @@ github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.27.1 h1:Uq364zd0sw4Sa5DovhB github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.27.1/go.mod h1:+QNM3upOuzc6CrYFdtDnNApChkfbC6lIAI2nqct4/u8= github.com/aws/aws-sdk-go-v2/service/budgets v1.28.6 h1:RVzQr0yvPN3OGZ2ipFVe1SBIwvomwjCvGg9S2q1QQbM= github.com/aws/aws-sdk-go-v2/service/budgets v1.28.6/go.mod h1:v5aGgmg7e0sS9wbdIK1CwgSIGCBmKbwnnI3F0vj3Fb0= -github.com/aws/aws-sdk-go-v2/service/chatbot v1.8.6 h1:39X0+9tooDnPfHCsH1NClflvHY0HRncKKY4OiS/nxxg= -github.com/aws/aws-sdk-go-v2/service/chatbot v1.8.6/go.mod h1:AnpVkIhMiOul0lelxDuySlmnNMW4AqEXz4VyRC5mCvo= +github.com/aws/aws-sdk-go-v2/service/chatbot v1.9.0 h1:9MsvMH/fdhu4NhtaYrAvyOGrewZTkh6W5bwxIbKAQGk= +github.com/aws/aws-sdk-go-v2/service/chatbot v1.9.0/go.mod h1:AnpVkIhMiOul0lelxDuySlmnNMW4AqEXz4VyRC5mCvo= github.com/aws/aws-sdk-go-v2/service/chime v1.34.6 h1:Jl5fsX028RPDzuKInYkCU6p+cWnvWLpBJEXPlnzdkOQ= github.com/aws/aws-sdk-go-v2/service/chime v1.34.6/go.mod h1:pqo7AjgtB9xL2KfkCFXO8wKNAFCTcfM4Yiw6nUYt7O0= github.com/aws/aws-sdk-go-v2/service/chimesdkmediapipelines v1.21.1 h1:wasRSxlF1Ye9ilVut1GngPCTwyMPc13XJyRTJPM0nO4= @@ -125,8 +125,8 @@ github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.27.7 h1:Ymxy7Hrq/Gax/w++W0t1E github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.27.7/go.mod h1:W4rh804hNs3jvIUVrZU7W6ZzufPUTn2fvjFwDLg75Vk= github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.26.5 h1:qv4Vmbrmq556QW1geLfnVU04FKotI85HgCVup2CHC0I= github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.26.5/go.mod h1:bLUwLj8J6hdXNYgrlrBmYaC6k+WRiWVuuj82l4cE+dE= -github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.46.0 h1:Rqsc2iSjGyl+/4B26d7I2lyzIO0RNY7OhLs+RwSL5Ps= -github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.46.0/go.mod h1:1UmWM2dmPjAP9GndptgNB5ZO1GnVRHFUX5JK0RB+ozY= +github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.46.1 h1:2ak2eGvO11EG8dbF2rduX0LFYqkSmLTaFiAXbrYeBik= +github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.46.1/go.mod h1:1UmWM2dmPjAP9GndptgNB5ZO1GnVRHFUX5JK0RB+ozY= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.1 h1:FbjhJTRoTujDYDwTnnE46Km5Qh1mMSH+BwTL4ODFifg= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.1/go.mod h1:OwyCzHw6CH8pkLqT8uoCkOgUsgm11LTfexLZyRy6fBg= github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.44.0 h1:OREVd94+oXW5a+3SSUAo4K0L5ci8cucCLu+PSiek8OU= @@ -147,32 +147,32 @@ github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.24.6 h1:NHA1oFgnYErN/m1 github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.24.6/go.mod h1:f7Z7f8TJ+jPCG3a7iw5G3Og6ZNlVV/h4Vssa2z5Ctvg= github.com/aws/aws-sdk-go-v2/service/codegurureviewer v1.29.6 h1:ZCwOHI5qLoZOKXRroD7zFC9DsJOwr7/2trzCqGmTJXk= github.com/aws/aws-sdk-go-v2/service/codegurureviewer v1.29.6/go.mod h1:LwkwNbB3ftbrnzeolIatXt5WPCpkRbVZcEnDJ4B33yE= -github.com/aws/aws-sdk-go-v2/service/codepipeline v1.36.4 h1:3gc3QzXPPIpeSPntAtUy2CR9A3pj09O5IVrirwnvjCc= -github.com/aws/aws-sdk-go-v2/service/codepipeline v1.36.4/go.mod h1:VNGtFdYLnh+4bhmz/t1grmciVHt1aPeFWu3YAUOzJeM= +github.com/aws/aws-sdk-go-v2/service/codepipeline v1.37.0 h1:NADCf4LSkrl1ADbJT1q3VxGhJ4gre77MJ40aqupZczg= +github.com/aws/aws-sdk-go-v2/service/codepipeline v1.37.0/go.mod h1:VNGtFdYLnh+4bhmz/t1grmciVHt1aPeFWu3YAUOzJeM= github.com/aws/aws-sdk-go-v2/service/codestarconnections v1.29.6 h1:OqC1rs2Rt4hOl07IcVQ3ZjXDPPCQJ20k2Xp59ZMNfmY= github.com/aws/aws-sdk-go-v2/service/codestarconnections v1.29.6/go.mod h1:NSqFyJ68sZwNuQOBCZ1c+G10d9nd03AqdkLwkRPIHPo= github.com/aws/aws-sdk-go-v2/service/codestarnotifications v1.26.6 h1:IeMC7DWOojfoApk0lSrmFO9lWdbd2EFskmYNrgegwuY= github.com/aws/aws-sdk-go-v2/service/codestarnotifications v1.26.6/go.mod h1:ZAEhVVAHdollHwVtzGSoh7gH8SGbFaOvYeHAE7lv1Uk= github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.27.6 h1:qrxndl72akI2mK6nhN5TLe+JiAklKl+vtaiAvbQ71lM= github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.27.6/go.mod h1:v4nSWzO8c2OSdtprw0PQ7UtspocKCJhH1uBd6NxL8FM= -github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.46.6 h1:tj/rbVJP94sNvvq3hM5EURTgMpQ0+mGKkfvqsZ5gwrA= -github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.46.6/go.mod h1:TxsMf+uRm3AHGUs2BSmnxz99BqUd6f9EiuDEhRppTY8= +github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.47.0 h1:9WEhV3JmFhSMnKaY2SqcPb0bM5XIoMmAy62Fj5TNMwk= +github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.47.0/go.mod h1:TxsMf+uRm3AHGUs2BSmnxz99BqUd6f9EiuDEhRppTY8= github.com/aws/aws-sdk-go-v2/service/comprehend v1.35.6 h1:cnZDmrpdVewJ22Y9Su1XpmsPIQ5oS3TujNPS04cH+7s= github.com/aws/aws-sdk-go-v2/service/comprehend v1.35.6/go.mod h1:LGMQ+uNG/xTjB8nx6Jb2SrsQqvWc7ip0vqNiiKu9EiA= github.com/aws/aws-sdk-go-v2/service/computeoptimizer v1.40.0 h1:rNj0NoMlMlV9B3rEnxv84CG5RfEqwyfjHL6P/YtX224= github.com/aws/aws-sdk-go-v2/service/computeoptimizer v1.40.0/go.mod h1:MH4YodNw/6ZHhRwow3baZ7RQP6z8GKSMsO94X5OZ3Y0= github.com/aws/aws-sdk-go-v2/service/configservice v1.50.6 h1:GsIoN6f+LLTX/Sa70WO77Cy1GTrSF9xi7e8OwwOiGcs= github.com/aws/aws-sdk-go-v2/service/configservice v1.50.6/go.mod h1:5vbQi0lIP9T7RLGyjmQZhqf5Xv9WxHXk7qlHnhEqWKc= -github.com/aws/aws-sdk-go-v2/service/connect v1.116.0 h1:ewriAQDNn5BFwyMj2atkAbk5wqcrIBMPqg2jyhuAFoY= -github.com/aws/aws-sdk-go-v2/service/connect v1.116.0/go.mod h1:oGrMxGM/Ww+glDJ7cfMU1X22kJ6XBBHXsfxIhKD6E3k= +github.com/aws/aws-sdk-go-v2/service/connect v1.117.0 h1:ELPEshWAPZzprvgJfY0vZcyuPx9eSsXpkdNyQ6kl198= +github.com/aws/aws-sdk-go-v2/service/connect v1.117.0/go.mod h1:oGrMxGM/Ww+glDJ7cfMU1X22kJ6XBBHXsfxIhKD6E3k= github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.6 h1:w475oN5DyGiDt58pLYm1Gq7wKzH4FuZM1tNj+Agd1j4= github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.6/go.mod h1:gCKtUjvhDcgZCLqqdc5AI9cxEFx4VCvvgKy8FL2UeXY= github.com/aws/aws-sdk-go-v2/service/controltower v1.20.0 h1:4YuCMtKeY+TwG277Rh/4zC6ijMjJ5XeMj9djxZ0luXI= github.com/aws/aws-sdk-go-v2/service/controltower v1.20.0/go.mod h1:Wwtsq9vGGX+s+z2CAU6nNVQnQUp6tP12FmGK8Gauy7M= github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.6 h1:osGnDbG5/5BHoExuVOK1EN0a9cLfZ8NdqB7luLInxOA= github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.6/go.mod h1:Rkaugb0V6ZcPs8GzhnEjbq+EB9K+GASbOMdxiDzTZX4= -github.com/aws/aws-sdk-go-v2/service/costexplorer v1.44.0 h1:BgV+wmUYKuK2yHaGMgxUCqzk/yog/vvQIBtjq1uOgGM= -github.com/aws/aws-sdk-go-v2/service/costexplorer v1.44.0/go.mod h1:rwuImPfFVkoKeuAkGrlDSFm9pT9veoRNoH25IG9Jco0= +github.com/aws/aws-sdk-go-v2/service/costexplorer v1.45.0 h1:78q3WvpWmDAg6Ssd9c9bgGLLtFuwRMhNRdSNSX8lXto= +github.com/aws/aws-sdk-go-v2/service/costexplorer v1.45.0/go.mod h1:rwuImPfFVkoKeuAkGrlDSFm9pT9veoRNoH25IG9Jco0= github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.11.0 h1:nV8WhW54iNT4XYZphMG5zfxhpe8POhi67Dp5uHCVk80= github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.11.0/go.mod h1:CPai3cHY5BMDEFDcUW4JrkN0vo+L3IyJgF/+Ddlm3wc= github.com/aws/aws-sdk-go-v2/service/customerprofiles v1.43.0 h1:LnSDxvx4MoC59r50lHfyDmKFtT4DVeicBn6ci+gvQ/E= @@ -229,14 +229,14 @@ github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.5 h1:bCj+S/v35iLUnHp github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.5/go.mod h1:gOJmxmxThaTRM7r8WZ6BeOCl14UE48lSgMca7U4/oMM= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.28.5 h1:12Fm4tTwFk2Url99X56hdKXKVK7suzZKjtdXAILne4g= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.28.5/go.mod h1:qnlecrYsTCjPhGuF+3SZaz7WGuNz/T3L/Q8a3Yc7uww= -github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.42.1 h1:7CbnVh+BXerN1kiqTbm3Y2GkaaAiZ26v9GMlb0nubYo= -github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.42.1/go.mod h1:pZP3I+Ts+XuhJJtZE49+ABVjfxm7u9/hxcNUYSpY3OE= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.43.0 h1:fIAJ5VM/ANpYV81C1Jbf4ePbElMSzuWFljezD6weU9k= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.43.0/go.mod h1:pZP3I+Ts+XuhJJtZE49+ABVjfxm7u9/hxcNUYSpY3OE= github.com/aws/aws-sdk-go-v2/service/elasticsearchservice v1.32.6 h1:j19Nazjj1qrrm7DufPO53F9FFzrUDlphsqpNn0HU3fg= github.com/aws/aws-sdk-go-v2/service/elasticsearchservice v1.32.6/go.mod h1:6QH9UwlCk7m5PoCPH+/UZtStdP8dLg7CzJJ/52o2pAU= github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.27.6 h1:oV6JszCETDPPHkqZahjVUaP8IlWDSUm2B5lRISvsL2g= github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.27.6/go.mod h1:JsyDIVlHAYBxZHya8YzO7RzLq24uVUs01aG9BiKOYlo= -github.com/aws/aws-sdk-go-v2/service/emr v1.46.4 h1:+Y/EZ3kCmAORSH2Q1NWxtys3+Uy/+hn/t/XbKm3jwa4= -github.com/aws/aws-sdk-go-v2/service/emr v1.46.4/go.mod h1:1Rl0CmeP2He+Oiz7PtsVJxFIt1h2m1rt0vahJtIldE8= +github.com/aws/aws-sdk-go-v2/service/emr v1.47.0 h1:S3soqtUBuxbG1FcLFiP2uGInncnM0eei+hsmCou2aBs= +github.com/aws/aws-sdk-go-v2/service/emr v1.47.0/go.mod h1:1Rl0CmeP2He+Oiz7PtsVJxFIt1h2m1rt0vahJtIldE8= github.com/aws/aws-sdk-go-v2/service/emrcontainers v1.33.7 h1:OzrMVLJ97pCg2BCER5Tk0/Fg/604Ravd4VR3rRQeKJU= github.com/aws/aws-sdk-go-v2/service/emrcontainers v1.33.7/go.mod h1:JYC8r7iUXCR02VKACPxpcOeLtYnHeKNrMzLv0U6uKVs= github.com/aws/aws-sdk-go-v2/service/emrserverless v1.26.6 h1:0SqOqOHxwzy+2i/DvV/a5Lc+UrfDFRDiCQhVT9jTFFU= @@ -281,8 +281,8 @@ github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.38.4 h1:aiUxEicGm5tUeTfhsay github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.38.4/go.mod h1:6tZhu4I5K6paE401s53iw4F8fskiW6Z+HfOis/MyVwg= github.com/aws/aws-sdk-go-v2/service/inspector v1.25.6 h1:7tGA6lqnXk+KU9ZAYuExBkcw9pLw/mv/bXYxO5Sgsc0= github.com/aws/aws-sdk-go-v2/service/inspector v1.25.6/go.mod h1:UJfA0/mna6xg+45rmRqxX0+72UdlLnW7r99ke5MX4JU= -github.com/aws/aws-sdk-go-v2/service/inspector2 v1.33.1 h1:kRcDnjvUTrcHnN0faXj3t+O3/wRFvPo6dkJFoe41EjE= -github.com/aws/aws-sdk-go-v2/service/inspector2 v1.33.1/go.mod h1:WDIty+W4K+zTro9oNy51ct4odnoZSEQl9VdnRyJI4pE= +github.com/aws/aws-sdk-go-v2/service/inspector2 v1.34.0 h1:qEaZRkBG/RrgakiBGSU4j2gvYiJ4R29T65YLqynr92U= +github.com/aws/aws-sdk-go-v2/service/inspector2 v1.34.0/go.mod h1:WDIty+W4K+zTro9oNy51ct4odnoZSEQl9VdnRyJI4pE= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 h1:iXtILhvDxB6kPvEXgsDhGaZCSC6LQET5ZHSdJozeI0Y= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1/go.mod h1:9nu0fVANtYiAePIBh2/pFUSwtJ402hLnp854CNoDOeE= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.4.5 h1:gvZOjQKPxFXy1ft3QnEyXmT+IqneM9QAUWlM3r0mfqw= @@ -325,8 +325,8 @@ github.com/aws/aws-sdk-go-v2/service/kms v1.37.6 h1:CZImQdb1QbU9sGgJ9IswhVkxAcjk github.com/aws/aws-sdk-go-v2/service/kms v1.37.6/go.mod h1:YJDdlK0zsyxVBxGU48AR/Mi8DMrGdc1E3Yij4fNrONA= github.com/aws/aws-sdk-go-v2/service/lakeformation v1.38.3 h1:vbc9pblnCXXwSGnUW6abjBH2nN66nifZzPfh0fapXl0= github.com/aws/aws-sdk-go-v2/service/lakeformation v1.38.3/go.mod h1:GSrO+Jr1SM/Jfdd52DIN48EY2tbhgk02nogvzpLkFks= -github.com/aws/aws-sdk-go-v2/service/lambda v1.68.0 h1:iOeBeG/kwavag7SR2obST2YVIika2Bt+BvKUdFYDN30= -github.com/aws/aws-sdk-go-v2/service/lambda v1.68.0/go.mod h1:guz2K3x4FKSdDaoeB+TPVgJNU9oj2gftbp5cR8ela1A= +github.com/aws/aws-sdk-go-v2/service/lambda v1.69.0 h1:BXt75frE/FYtAmEDBJRBa2HexOw+oAZWZl6QknZEFgg= +github.com/aws/aws-sdk-go-v2/service/lambda v1.69.0/go.mod h1:guz2K3x4FKSdDaoeB+TPVgJNU9oj2gftbp5cR8ela1A= github.com/aws/aws-sdk-go-v2/service/launchwizard v1.8.6 h1:+GPVOamTqDV7sSYzvziM4WbEv4u5jw/2bVYDl5NnmNU= github.com/aws/aws-sdk-go-v2/service/launchwizard v1.8.6/go.mod h1:2KF56C6mZldwDGFF/vyv83VGXqDVpAaH3NwBE2+OTtw= github.com/aws/aws-sdk-go-v2/service/lexmodelbuildingservice v1.28.6 h1:G6qKJwPyBMvFyWjAWW7lbZoN6VsYBCPxzjrQRKCexFg= @@ -365,8 +365,8 @@ github.com/aws/aws-sdk-go-v2/service/mwaa v1.33.0 h1:2MD49J99Lxb43LfLItaZEPVVgXH github.com/aws/aws-sdk-go-v2/service/mwaa v1.33.0/go.mod h1:xBgoacMucYu8C1qm8Z9kcI8ZbnbPgHR2EynpoPt4RZw= github.com/aws/aws-sdk-go-v2/service/neptune v1.35.5 h1:HDoA1Z3r2TuF6CJfYSoLV5Wr70ll+GtJM4vL4n7SAv0= github.com/aws/aws-sdk-go-v2/service/neptune v1.35.5/go.mod h1:vZbGimpx06Ar8EnMRoJLNYsJ6YeYFdvozTz8Kx279lU= -github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.14.4 h1:bicyAt8d5ozkA1dYNWLG2DdA3tH1biSdvC/+2qsWH5E= -github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.14.4/go.mod h1:Uade5ii2gNtKGSUZ2rXZBTSow50uCWh8mNLxsBeSppM= +github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.15.0 h1:BhMpfPFW0vgobYTzfrMFijjXxHCqpyB906ToYuswnpQ= +github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.15.0/go.mod h1:Uade5ii2gNtKGSUZ2rXZBTSow50uCWh8mNLxsBeSppM= github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.44.3 h1:5gs6lyhGYupTMTE+sFsbh35W+XPCdCt4Pgg8qEUleGw= github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.44.3/go.mod h1:RrSc7fUe1EX71WfWClFvg55tAdQJ0UdG1uCOBzAgFFo= github.com/aws/aws-sdk-go-v2/service/networkmanager v1.31.6 h1:j1DzkC+I+mSVkgLXmXadU0bU1NKqLhtJC0VAnmvTvWE= @@ -407,8 +407,8 @@ github.com/aws/aws-sdk-go-v2/service/qbusiness v1.16.1 h1:h0NRI0sp2vSW3pocytiirH github.com/aws/aws-sdk-go-v2/service/qbusiness v1.16.1/go.mod h1:npob1eKe0EiDBkePh5Y9vnTsI8N507o/XIyZLEYfiYg= github.com/aws/aws-sdk-go-v2/service/qldb v1.25.6 h1:0x4VnCqVcYDsiQs7+VTz3qtaeyTCyB9FtZNAMkb2TCo= github.com/aws/aws-sdk-go-v2/service/qldb v1.25.6/go.mod h1:E7qOKK1pXhE9b1M+52KfCoPr8rIhFUimRgy7bxtLN1U= -github.com/aws/aws-sdk-go-v2/service/quicksight v1.79.1 h1:TjlMHaIWnSa7qV+bdfPRYYG71y2G1oK2OcwZArwCHrU= -github.com/aws/aws-sdk-go-v2/service/quicksight v1.79.1/go.mod h1:vFpU88RJn13XpH88/x7cu+onAag/9cGpjpre8t/0srE= +github.com/aws/aws-sdk-go-v2/service/quicksight v1.80.0 h1:bVG1RvmyEsy5XJNgTGKFox/PUaenvRI6kv6Svb3ifac= +github.com/aws/aws-sdk-go-v2/service/quicksight v1.80.0/go.mod h1:vFpU88RJn13XpH88/x7cu+onAag/9cGpjpre8t/0srE= github.com/aws/aws-sdk-go-v2/service/ram v1.29.6 h1:84mPZMJZHAZBFtff+UbZjAck7ZSiRY+nxmElxTEKa1c= github.com/aws/aws-sdk-go-v2/service/ram v1.29.6/go.mod h1:I6romstEDoLQy+FCQxBmCkoKB3TkpFqiYKrc56nQEFI= github.com/aws/aws-sdk-go-v2/service/rbin v1.21.0 h1:Tx49bha+JoGKWeph1Z5zcyDr4u2e5CrTunWxlI0dsoU= @@ -453,8 +453,8 @@ github.com/aws/aws-sdk-go-v2/service/s3control v1.50.1 h1:WjVnnNd++hjjmuODULNfZa github.com/aws/aws-sdk-go-v2/service/s3control v1.50.1/go.mod h1:ymXHnBHIxM/iqrgGphFuoUfuczoy4inIr2LH8PRj8NQ= github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.6 h1:zzoRIW5fgL23XkMtW4eDNMvWreQLOJNeFCK2tmjfz1w= github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.6/go.mod h1:eWYAk3ydR9kivn2OqgXUAgZTvmeSQeoYKiEFIQFVm1M= -github.com/aws/aws-sdk-go-v2/service/sagemaker v1.167.1 h1:ZuWM7eVEdaG73ltv7eUXeKGFSDkpSX0Ub5E6YHdsBy0= -github.com/aws/aws-sdk-go-v2/service/sagemaker v1.167.1/go.mod h1:F2Dsgm3rYCwBQ3kceuZwwdx6N/7jpcRIREp3CGMBwV8= +github.com/aws/aws-sdk-go-v2/service/sagemaker v1.168.0 h1:t3gEqynGngUIZ3dqg9LsrGgK/4Qemqy/LQJtpI7waow= +github.com/aws/aws-sdk-go-v2/service/sagemaker v1.168.0/go.mod h1:F2Dsgm3rYCwBQ3kceuZwwdx6N/7jpcRIREp3CGMBwV8= github.com/aws/aws-sdk-go-v2/service/scheduler v1.12.6 h1:68IWlYXT4lWbn1EmL8NBouGTyi9W/IXkXSJbTiasjXY= github.com/aws/aws-sdk-go-v2/service/scheduler v1.12.6/go.mod h1:p6YS4Jv8IRTR8g77fl7iAYa72RfFV5t7ek8TP8/fKVM= github.com/aws/aws-sdk-go-v2/service/schemas v1.28.7 h1:2Wt+RX/lsLb/+np1UV9naIpl0gg03bs7rkt76Gr6W8s= @@ -475,18 +475,18 @@ github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.33.6 h1:SNpBx1RGzJRBdiU github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.33.6/go.mod h1:wUxQDWQLkWd7A7ROXBwiOhjKFOvHAoKHbrykS9xq9D0= github.com/aws/aws-sdk-go-v2/service/servicequotas v1.25.6 h1:GiXCmQ0LWJxMqxeRK8Oc1w2Ufyn9ADxc0MXZMzFTYyI= github.com/aws/aws-sdk-go-v2/service/servicequotas v1.25.6/go.mod h1:j97IqfLFihFonWq16KSfpMENWQ1PvLjNhjoJfpwYTv8= -github.com/aws/aws-sdk-go-v2/service/ses v1.28.5 h1:fct7t4dGDFoJRk+8EIYBXLNsjd0PdvlRRTtfVwkMwSc= -github.com/aws/aws-sdk-go-v2/service/ses v1.28.5/go.mod h1:JRCjHrdiLrSoHRbbOd0lTQOS5U9Yxe72wB3Rk+e2tcQ= +github.com/aws/aws-sdk-go-v2/service/ses v1.29.0 h1:b6Je/QdCfxf6xupis7Eu8fH6SPFE3tG/Xd6MDOpOGJo= +github.com/aws/aws-sdk-go-v2/service/ses v1.29.0/go.mod h1:JRCjHrdiLrSoHRbbOd0lTQOS5U9Yxe72wB3Rk+e2tcQ= github.com/aws/aws-sdk-go-v2/service/sesv2 v1.38.3 h1:el5Rx1kxCrz4rb/lCPl+Hq33ZAdKohbOTlcks7nR7L0= github.com/aws/aws-sdk-go-v2/service/sesv2 v1.38.3/go.mod h1:Lw3+PgymmO/wdBXubwIAn+RiG7T/cD9gE5kicRmN54A= -github.com/aws/aws-sdk-go-v2/service/sfn v1.33.6 h1:nS79DBMlscyO8OYSJXgv/MlVAevIia3jIrupV6Cj57Q= -github.com/aws/aws-sdk-go-v2/service/sfn v1.33.6/go.mod h1:3dMtLKPPdu8n0VakTR9ncAjFGvnRyLMD1Ib5USqCLG4= +github.com/aws/aws-sdk-go-v2/service/sfn v1.34.0 h1:fWI2n4gv/RHaPaRbceJsQxlvVwBdH2a1v/qjFx1xI58= +github.com/aws/aws-sdk-go-v2/service/sfn v1.34.0/go.mod h1:3dMtLKPPdu8n0VakTR9ncAjFGvnRyLMD1Ib5USqCLG4= github.com/aws/aws-sdk-go-v2/service/shield v1.29.6 h1:6Gyhego+FPrK45FxaQ0wRm4EpovxHc51M4WFaQdGJz0= github.com/aws/aws-sdk-go-v2/service/shield v1.29.6/go.mod h1:KYGAHKJFsHD+QVZ08NHHjAtA0FBrfm5YVSGe7eV4AH0= github.com/aws/aws-sdk-go-v2/service/signer v1.26.6 h1:inoZy/MBkjYLTsvOlU+b3ifeBiWbtQlSp5CKAoFb/6k= github.com/aws/aws-sdk-go-v2/service/signer v1.26.6/go.mod h1:PlARViFxCTRAUavXGcQObbvAneCEeln0hvpQCsHJATU= -github.com/aws/aws-sdk-go-v2/service/sns v1.33.5 h1:nJDOsZumqKsejsiGKgpezFzI2oatHmQi/kKKC4wS8v4= -github.com/aws/aws-sdk-go-v2/service/sns v1.33.5/go.mod h1:SODr0Lu3lFdT0SGsGX1TzFTapwveBrT5wztVoYtppm8= +github.com/aws/aws-sdk-go-v2/service/sns v1.33.6 h1:lEUtRHICiXsd7VRwRjXaY7MApT2X4Ue0Mrwe6XbyBro= +github.com/aws/aws-sdk-go-v2/service/sns v1.33.6/go.mod h1:SODr0Lu3lFdT0SGsGX1TzFTapwveBrT5wztVoYtppm8= github.com/aws/aws-sdk-go-v2/service/sqs v1.37.1 h1:39WvSrVq9DD6UHkD+fx5x19P5KpRQfNdtgReDVNbelc= github.com/aws/aws-sdk-go-v2/service/sqs v1.37.1/go.mod h1:3gwPzC9LER/BTQdQZ3r6dUktb1rSjABF1D3Sr6nS7VU= github.com/aws/aws-sdk-go-v2/service/ssm v1.56.0 h1:mADKqoZaodipGgiZfuAjtlcr4IVBtXPZKVjkzUZCCYM= @@ -517,16 +517,16 @@ github.com/aws/aws-sdk-go-v2/service/taxsettings v1.7.0 h1:NWEjSezAbU7klTwlWJFLh github.com/aws/aws-sdk-go-v2/service/taxsettings v1.7.0/go.mod h1:jHBnwkzXiAFmiNEKEuyBxE+eEqfa1qm7wggL7RTgqHM= github.com/aws/aws-sdk-go-v2/service/timestreaminfluxdb v1.6.6 h1:Ouja3w2uigjuZ5wa7aR0CaHZTe+niXSzUvJS/4E1Wa0= github.com/aws/aws-sdk-go-v2/service/timestreaminfluxdb v1.6.6/go.mod h1:OVSgcDB+hYKLrNiho0Y19pQiOMnth63hprCxzpblayA= -github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.6 h1:AOlSnlkT0ZgJxuMcH8Fes1NBg4xNtKTB3+LF4bzHMII= -github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.6/go.mod h1:UyyUbIDdMO1cGXWA37B/KylPyLrq5kNU1m2E+ojF610= +github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.7 h1:i3Uuh/LLP1Qh3x0qh8i2OnaU+nZ5u3oMwffIrtH7yjc= +github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.7/go.mod h1:UyyUbIDdMO1cGXWA37B/KylPyLrq5kNU1m2E+ojF610= github.com/aws/aws-sdk-go-v2/service/transcribe v1.41.6 h1:0uM86aXF1xuNNP94lvMua36AS4/urnnV0JIoZs1hgdM= github.com/aws/aws-sdk-go-v2/service/transcribe v1.41.6/go.mod h1:VdynE2CDkpp9p96Nsy+eFE5PJferzNnjuB1kMcjl0Uk= github.com/aws/aws-sdk-go-v2/service/transfer v1.53.5 h1:xyvVof+cdQogIXJDKJdhJ2dVF/svxrjv4zEP1T9fIV0= github.com/aws/aws-sdk-go-v2/service/transfer v1.53.5/go.mod h1:tjYLu1usUNMh2mMGrahX1ZQd7WSIwqe0O7wGd5Gq4aU= github.com/aws/aws-sdk-go-v2/service/verifiedpermissions v1.20.2 h1:ERPfTAJIbZxwDJKCPvsZacGqodEx4dj9K2OC4sDnrCk= github.com/aws/aws-sdk-go-v2/service/verifiedpermissions v1.20.2/go.mod h1:f4UivZUJxaK4N/UIJXQgpirh3yWsNxMzWsrk0sUvZrk= -github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.8 h1:a7UROHRTNSQrJ2h4BETtfACcPjWuZPoPpeMBmxS7K00= -github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.8/go.mod h1:X0X0qZ4S3qpAm8NfTdW4lacTf2VusIV3sbwF+CN3d4k= +github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.9 h1:GRU6B7siT+PRSIS9JmOFLugE90//aCQ9jOfk09wxI+g= +github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.9/go.mod h1:X0X0qZ4S3qpAm8NfTdW4lacTf2VusIV3sbwF+CN3d4k= github.com/aws/aws-sdk-go-v2/service/waf v1.25.6 h1:FgT+D2lZj5PP1enlTMg4i7yHPCDjk7css+GEQbkwHiI= github.com/aws/aws-sdk-go-v2/service/waf v1.25.6/go.mod h1:CdOaduoCFkcCa1F3V0FfKsRflqwjuuctnt0eyDQlt0Y= github.com/aws/aws-sdk-go-v2/service/wafregional v1.25.6 h1:ZAVHrgxHso3D6ZrWYNW8ZYpWei5YRdMNu4teYal/B4c= @@ -537,8 +537,8 @@ github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.6 h1:gRlAqT37MBjotuhc github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.6/go.mod h1:5/10vqAzXC/biuHdbkYAULETemq0j+7fafDQyqUjKRA= github.com/aws/aws-sdk-go-v2/service/worklink v1.23.2 h1:VN3Qydtdl3UlJRHVxQxSP1d8I5gtvT5zdaCCAfZST7Y= github.com/aws/aws-sdk-go-v2/service/worklink v1.23.2/go.mod h1:Z3RLpIq4q49syd921XdsKeD584kPu89iKTEjluh7908= -github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.0 h1:7rGPAEvw9t7crYz4C4n80GHLe9O8XxbmeBywWp7iCVw= -github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.0/go.mod h1:ZKS7KNf+/ecd+vfEVnfee4ZKg09jrB6/14Qnf79Y+so= +github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.1 h1:c974+tQIdxp/CoNWQfG6JWc90dgZDnup8/k8M0aR4+U= +github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.1/go.mod h1:ZKS7KNf+/ecd+vfEVnfee4ZKg09jrB6/14Qnf79Y+so= github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.25.0 h1:H5JtZI/cuMrzvzl44q542vCr3w3EHlYl5+0ac9MdAik= github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.25.0/go.mod h1:NgEGK1Ex63erNYNTWMenNczoi8/nguJvIvobKYp1LQ8= github.com/aws/aws-sdk-go-v2/service/xray v1.30.0 h1:3kGcueLqlC3x5LqVWgckz38Kd5pHqpzhVC95beoZVyI= From 6e59e355a6d10592216351d7bd98a35f1487043f Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 22 Nov 2024 17:17:20 -0500 Subject: [PATCH 073/118] Update tools --- tools/tfsdk2fw/go.mod | 72 ++++++++++----------- tools/tfsdk2fw/go.sum | 144 +++++++++++++++++++++--------------------- 2 files changed, 108 insertions(+), 108 deletions(-) diff --git a/tools/tfsdk2fw/go.mod b/tools/tfsdk2fw/go.mod index 68e8880f0ee..79ec68aefb2 100644 --- a/tools/tfsdk2fw/go.mod +++ b/tools/tfsdk2fw/go.mod @@ -25,7 +25,7 @@ require ( github.com/aws/aws-sdk-go-v2/config v1.28.5 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.17.46 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.20 // indirect - github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.39 // indirect + github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.40 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.24 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.24 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect @@ -36,22 +36,22 @@ require ( github.com/aws/aws-sdk-go-v2/service/acmpca v1.37.7 // indirect github.com/aws/aws-sdk-go-v2/service/amp v1.30.3 // indirect github.com/aws/aws-sdk-go-v2/service/amplify v1.27.4 // indirect - github.com/aws/aws-sdk-go-v2/service/apigateway v1.27.6 // indirect + github.com/aws/aws-sdk-go-v2/service/apigateway v1.28.0 // indirect github.com/aws/aws-sdk-go-v2/service/apigatewayv2 v1.24.6 // indirect github.com/aws/aws-sdk-go-v2/service/appconfig v1.36.0 // indirect github.com/aws/aws-sdk-go-v2/service/appfabric v1.11.6 // indirect github.com/aws/aws-sdk-go-v2/service/appflow v1.45.7 // indirect github.com/aws/aws-sdk-go-v2/service/appintegrations v1.30.6 // indirect - github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.33.6 // indirect + github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.34.0 // indirect github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.29.4 // indirect github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.7.1 // indirect github.com/aws/aws-sdk-go-v2/service/appmesh v1.29.6 // indirect github.com/aws/aws-sdk-go-v2/service/apprunner v1.32.6 // indirect github.com/aws/aws-sdk-go-v2/service/appstream v1.41.6 // indirect - github.com/aws/aws-sdk-go-v2/service/appsync v1.39.3 // indirect + github.com/aws/aws-sdk-go-v2/service/appsync v1.40.0 // indirect github.com/aws/aws-sdk-go-v2/service/athena v1.48.4 // indirect github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.6 // indirect - github.com/aws/aws-sdk-go-v2/service/autoscaling v1.50.0 // indirect + github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.0 // indirect github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.24.6 // indirect github.com/aws/aws-sdk-go-v2/service/backup v1.39.7 // indirect github.com/aws/aws-sdk-go-v2/service/batch v1.48.1 // indirect @@ -59,7 +59,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/bedrock v1.22.4 // indirect github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.27.1 // indirect github.com/aws/aws-sdk-go-v2/service/budgets v1.28.6 // indirect - github.com/aws/aws-sdk-go-v2/service/chatbot v1.8.6 // indirect + github.com/aws/aws-sdk-go-v2/service/chatbot v1.9.0 // indirect github.com/aws/aws-sdk-go-v2/service/chime v1.34.6 // indirect github.com/aws/aws-sdk-go-v2/service/chimesdkmediapipelines v1.21.1 // indirect github.com/aws/aws-sdk-go-v2/service/chimesdkvoice v1.19.6 // indirect @@ -67,13 +67,13 @@ require ( github.com/aws/aws-sdk-go-v2/service/cloud9 v1.28.6 // indirect github.com/aws/aws-sdk-go-v2/service/cloudcontrol v1.23.1 // indirect github.com/aws/aws-sdk-go-v2/service/cloudformation v1.56.0 // indirect - github.com/aws/aws-sdk-go-v2/service/cloudfront v1.42.0 // indirect + github.com/aws/aws-sdk-go-v2/service/cloudfront v1.43.0 // indirect github.com/aws/aws-sdk-go-v2/service/cloudfrontkeyvaluestore v1.8.6 // indirect github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.27.7 // indirect github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.26.5 // indirect - github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.45.1 // indirect + github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.46.1 // indirect github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.1 // indirect - github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.43.3 // indirect + github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.44.0 // indirect github.com/aws/aws-sdk-go-v2/service/codeartifact v1.33.6 // indirect github.com/aws/aws-sdk-go-v2/service/codebuild v1.49.1 // indirect github.com/aws/aws-sdk-go-v2/service/codecatalyst v1.17.6 // indirect @@ -82,19 +82,19 @@ require ( github.com/aws/aws-sdk-go-v2/service/codedeploy v1.29.6 // indirect github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.24.6 // indirect github.com/aws/aws-sdk-go-v2/service/codegurureviewer v1.29.6 // indirect - github.com/aws/aws-sdk-go-v2/service/codepipeline v1.36.4 // indirect + github.com/aws/aws-sdk-go-v2/service/codepipeline v1.37.0 // indirect github.com/aws/aws-sdk-go-v2/service/codestarconnections v1.29.6 // indirect github.com/aws/aws-sdk-go-v2/service/codestarnotifications v1.26.6 // indirect github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.27.6 // indirect - github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.46.6 // indirect + github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.47.0 // indirect github.com/aws/aws-sdk-go-v2/service/comprehend v1.35.6 // indirect github.com/aws/aws-sdk-go-v2/service/computeoptimizer v1.40.0 // indirect github.com/aws/aws-sdk-go-v2/service/configservice v1.50.6 // indirect - github.com/aws/aws-sdk-go-v2/service/connect v1.116.0 // indirect + github.com/aws/aws-sdk-go-v2/service/connect v1.117.0 // indirect github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.6 // indirect github.com/aws/aws-sdk-go-v2/service/controltower v1.20.0 // indirect github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.6 // indirect - github.com/aws/aws-sdk-go-v2/service/costexplorer v1.43.6 // indirect + github.com/aws/aws-sdk-go-v2/service/costexplorer v1.45.0 // indirect github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.11.0 // indirect github.com/aws/aws-sdk-go-v2/service/customerprofiles v1.43.0 // indirect github.com/aws/aws-sdk-go-v2/service/databasemigrationservice v1.44.4 // indirect @@ -109,24 +109,24 @@ require ( github.com/aws/aws-sdk-go-v2/service/devopsguru v1.34.6 // indirect github.com/aws/aws-sdk-go-v2/service/directconnect v1.29.6 // indirect github.com/aws/aws-sdk-go-v2/service/directoryservice v1.30.7 // indirect - github.com/aws/aws-sdk-go-v2/service/dlm v1.28.6 // indirect + github.com/aws/aws-sdk-go-v2/service/dlm v1.28.7 // indirect github.com/aws/aws-sdk-go-v2/service/docdb v1.39.5 // indirect github.com/aws/aws-sdk-go-v2/service/docdbelastic v1.14.3 // indirect github.com/aws/aws-sdk-go-v2/service/drs v1.30.6 // indirect github.com/aws/aws-sdk-go-v2/service/dynamodb v1.37.1 // indirect - github.com/aws/aws-sdk-go-v2/service/ec2 v1.192.0 // indirect + github.com/aws/aws-sdk-go-v2/service/ec2 v1.193.0 // indirect github.com/aws/aws-sdk-go-v2/service/ecr v1.36.6 // indirect github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.6 // indirect github.com/aws/aws-sdk-go-v2/service/ecs v1.52.0 // indirect github.com/aws/aws-sdk-go-v2/service/efs v1.34.0 // indirect github.com/aws/aws-sdk-go-v2/service/eks v1.52.1 // indirect - github.com/aws/aws-sdk-go-v2/service/elasticache v1.43.3 // indirect + github.com/aws/aws-sdk-go-v2/service/elasticache v1.44.0 // indirect github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.5 // indirect github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.28.5 // indirect - github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.42.0 // indirect + github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.43.0 // indirect github.com/aws/aws-sdk-go-v2/service/elasticsearchservice v1.32.6 // indirect github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.27.6 // indirect - github.com/aws/aws-sdk-go-v2/service/emr v1.46.4 // indirect + github.com/aws/aws-sdk-go-v2/service/emr v1.47.0 // indirect github.com/aws/aws-sdk-go-v2/service/emrcontainers v1.33.7 // indirect github.com/aws/aws-sdk-go-v2/service/emrserverless v1.26.6 // indirect github.com/aws/aws-sdk-go-v2/service/eventbridge v1.35.6 // indirect @@ -149,14 +149,14 @@ require ( github.com/aws/aws-sdk-go-v2/service/identitystore v1.27.6 // indirect github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.38.4 // indirect github.com/aws/aws-sdk-go-v2/service/inspector v1.25.6 // indirect - github.com/aws/aws-sdk-go-v2/service/inspector2 v1.33.1 // indirect + github.com/aws/aws-sdk-go-v2/service/inspector2 v1.34.0 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 // indirect github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.4.5 // indirect github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.10.5 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.5 // indirect github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.5 // indirect github.com/aws/aws-sdk-go-v2/service/internetmonitor v1.20.1 // indirect - github.com/aws/aws-sdk-go-v2/service/iot v1.60.1 // indirect + github.com/aws/aws-sdk-go-v2/service/iot v1.61.0 // indirect github.com/aws/aws-sdk-go-v2/service/iotanalytics v1.26.6 // indirect github.com/aws/aws-sdk-go-v2/service/iotevents v1.27.6 // indirect github.com/aws/aws-sdk-go-v2/service/ivs v1.42.1 // indirect @@ -171,7 +171,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/kinesisvideo v1.27.6 // indirect github.com/aws/aws-sdk-go-v2/service/kms v1.37.6 // indirect github.com/aws/aws-sdk-go-v2/service/lakeformation v1.38.3 // indirect - github.com/aws/aws-sdk-go-v2/service/lambda v1.67.0 // indirect + github.com/aws/aws-sdk-go-v2/service/lambda v1.69.0 // indirect github.com/aws/aws-sdk-go-v2/service/launchwizard v1.8.6 // indirect github.com/aws/aws-sdk-go-v2/service/lexmodelbuildingservice v1.28.6 // indirect github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.49.6 // indirect @@ -191,7 +191,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/mq v1.27.7 // indirect github.com/aws/aws-sdk-go-v2/service/mwaa v1.33.0 // indirect github.com/aws/aws-sdk-go-v2/service/neptune v1.35.5 // indirect - github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.14.4 // indirect + github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.15.0 // indirect github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.44.3 // indirect github.com/aws/aws-sdk-go-v2/service/networkmanager v1.31.6 // indirect github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.7.6 // indirect @@ -208,11 +208,11 @@ require ( github.com/aws/aws-sdk-go-v2/service/pinpoint v1.34.6 // indirect github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.18.1 // indirect github.com/aws/aws-sdk-go-v2/service/pipes v1.18.4 // indirect - github.com/aws/aws-sdk-go-v2/service/polly v1.45.6 // indirect + github.com/aws/aws-sdk-go-v2/service/polly v1.45.7 // indirect github.com/aws/aws-sdk-go-v2/service/pricing v1.32.6 // indirect github.com/aws/aws-sdk-go-v2/service/qbusiness v1.16.1 // indirect github.com/aws/aws-sdk-go-v2/service/qldb v1.25.6 // indirect - github.com/aws/aws-sdk-go-v2/service/quicksight v1.79.1 // indirect + github.com/aws/aws-sdk-go-v2/service/quicksight v1.80.0 // indirect github.com/aws/aws-sdk-go-v2/service/ram v1.29.6 // indirect github.com/aws/aws-sdk-go-v2/service/rbin v1.21.0 // indirect github.com/aws/aws-sdk-go-v2/service/rds v1.91.0 // indirect @@ -220,7 +220,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/redshiftdata v1.31.3 // indirect github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.24.3 // indirect github.com/aws/aws-sdk-go-v2/service/rekognition v1.45.7 // indirect - github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.27.4 // indirect + github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.28.0 // indirect github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.16.1 // indirect github.com/aws/aws-sdk-go-v2/service/resourcegroups v1.27.6 // indirect github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.25.6 // indirect @@ -232,10 +232,10 @@ require ( github.com/aws/aws-sdk-go-v2/service/route53recoveryreadiness v1.21.6 // indirect github.com/aws/aws-sdk-go-v2/service/route53resolver v1.34.1 // indirect github.com/aws/aws-sdk-go-v2/service/rum v1.21.6 // indirect - github.com/aws/aws-sdk-go-v2/service/s3 v1.67.1 // indirect + github.com/aws/aws-sdk-go-v2/service/s3 v1.68.0 // indirect github.com/aws/aws-sdk-go-v2/service/s3control v1.50.1 // indirect github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.6 // indirect - github.com/aws/aws-sdk-go-v2/service/sagemaker v1.167.1 // indirect + github.com/aws/aws-sdk-go-v2/service/sagemaker v1.168.0 // indirect github.com/aws/aws-sdk-go-v2/service/scheduler v1.12.6 // indirect github.com/aws/aws-sdk-go-v2/service/schemas v1.28.7 // indirect github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.34.6 // indirect @@ -246,17 +246,17 @@ require ( github.com/aws/aws-sdk-go-v2/service/servicecatalogappregistry v1.30.6 // indirect github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.33.6 // indirect github.com/aws/aws-sdk-go-v2/service/servicequotas v1.25.6 // indirect - github.com/aws/aws-sdk-go-v2/service/ses v1.28.5 // indirect + github.com/aws/aws-sdk-go-v2/service/ses v1.29.0 // indirect github.com/aws/aws-sdk-go-v2/service/sesv2 v1.38.3 // indirect - github.com/aws/aws-sdk-go-v2/service/sfn v1.33.6 // indirect + github.com/aws/aws-sdk-go-v2/service/sfn v1.34.0 // indirect github.com/aws/aws-sdk-go-v2/service/shield v1.29.6 // indirect github.com/aws/aws-sdk-go-v2/service/signer v1.26.6 // indirect - github.com/aws/aws-sdk-go-v2/service/sns v1.33.5 // indirect + github.com/aws/aws-sdk-go-v2/service/sns v1.33.6 // indirect github.com/aws/aws-sdk-go-v2/service/sqs v1.37.1 // indirect - github.com/aws/aws-sdk-go-v2/service/ssm v1.55.6 // indirect + github.com/aws/aws-sdk-go-v2/service/ssm v1.56.0 // indirect github.com/aws/aws-sdk-go-v2/service/ssmcontacts v1.26.6 // indirect github.com/aws/aws-sdk-go-v2/service/ssmincidents v1.34.6 // indirect - github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.2.7 // indirect + github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.3.0 // indirect github.com/aws/aws-sdk-go-v2/service/ssmsap v1.18.6 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.24.6 // indirect github.com/aws/aws-sdk-go-v2/service/ssoadmin v1.29.6 // indirect @@ -267,19 +267,19 @@ require ( github.com/aws/aws-sdk-go-v2/service/synthetics v1.30.1 // indirect github.com/aws/aws-sdk-go-v2/service/taxsettings v1.7.0 // indirect github.com/aws/aws-sdk-go-v2/service/timestreaminfluxdb v1.6.6 // indirect - github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.6 // indirect + github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.7 // indirect github.com/aws/aws-sdk-go-v2/service/transcribe v1.41.6 // indirect github.com/aws/aws-sdk-go-v2/service/transfer v1.53.5 // indirect github.com/aws/aws-sdk-go-v2/service/verifiedpermissions v1.20.2 // indirect - github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.8 // indirect + github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.9 // indirect github.com/aws/aws-sdk-go-v2/service/waf v1.25.6 // indirect github.com/aws/aws-sdk-go-v2/service/wafregional v1.25.6 // indirect github.com/aws/aws-sdk-go-v2/service/wafv2 v1.55.5 // indirect github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.6 // indirect github.com/aws/aws-sdk-go-v2/service/worklink v1.23.2 // indirect - github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.0 // indirect + github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.1 // indirect github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.25.0 // indirect - github.com/aws/aws-sdk-go-v2/service/xray v1.29.6 // indirect + github.com/aws/aws-sdk-go-v2/service/xray v1.30.0 // indirect github.com/aws/smithy-go v1.22.1 // indirect github.com/beevik/etree v1.4.1 // indirect github.com/bgentry/speakeasy v0.2.0 // indirect diff --git a/tools/tfsdk2fw/go.sum b/tools/tfsdk2fw/go.sum index 0627d66c08b..830a2b3e1db 100644 --- a/tools/tfsdk2fw/go.sum +++ b/tools/tfsdk2fw/go.sum @@ -33,8 +33,8 @@ github.com/aws/aws-sdk-go-v2/credentials v1.17.46 h1:AU7RcriIo2lXjUfHFnFKYsLCwgb github.com/aws/aws-sdk-go-v2/credentials v1.17.46/go.mod h1:1FmYyLGL08KQXQ6mcTlifyFXfJVCNJTVGuQP4m0d/UA= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.20 h1:sDSXIrlsFSFJtWKLQS4PUWRvrT580rrnuLydJrCQ/yA= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.20/go.mod h1:WZ/c+w0ofps+/OUqMwWgnfrgzZH1DZO1RIkktICsqnY= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.39 h1:Bdepdtm7SAUxPIZj6x4qg5al04R6tZa965T/j597XxM= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.39/go.mod h1:AudGmEyVwvi3k5MVpEZP2NEVF1HqtZoMze42Uq1RTiE= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.40 h1:CbalQNEYQljzAJ+3beY8FQBShdLNLpJzHL4h/5LSFMc= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.40/go.mod h1:1iYVr/urNWuZ7WZ1829FSE7RRTaXvzFdwrEQV8Z40cE= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.24 h1:4usbeaes3yJnCFC7kfeyhkdkPtoRYPa/hTmCqMpKpLI= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.24/go.mod h1:5CI1JemjVwde8m2WG3cz23qHKPOxbpkq0HaoreEgLIY= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.24 h1:N1zsICrQglfzaBnrfM0Ys00860C+QFwu6u/5+LomP+o= @@ -55,8 +55,8 @@ github.com/aws/aws-sdk-go-v2/service/amp v1.30.3 h1:28FOQuvHpWMdEYK9x89FszjBmwGf github.com/aws/aws-sdk-go-v2/service/amp v1.30.3/go.mod h1:QbCuQItcTOX7oQR9Nn9nGveBCqSad391I5ReOyQmtag= github.com/aws/aws-sdk-go-v2/service/amplify v1.27.4 h1:wnfodLD2dlJXX4CgYQh18nvo18dPjqZEWrtYZ6DWGh0= github.com/aws/aws-sdk-go-v2/service/amplify v1.27.4/go.mod h1:hmHZYJI1CZlr2V/qTBE8r+/U353Gn/7pOoxNpfFmZuI= -github.com/aws/aws-sdk-go-v2/service/apigateway v1.27.6 h1:CmWQaz97Uy830BdSSVw/D+K4rGQUN/u9D1Zjh/HLJ/w= -github.com/aws/aws-sdk-go-v2/service/apigateway v1.27.6/go.mod h1:WP+ceHdK5RAijZxABi1mH1kCZmQKRJNKwV+cj0iVr44= +github.com/aws/aws-sdk-go-v2/service/apigateway v1.28.0 h1:BkESaUndLOn3ZFTq4Eho347yvtiJxEQf1HWxgVu2RVI= +github.com/aws/aws-sdk-go-v2/service/apigateway v1.28.0/go.mod h1:WP+ceHdK5RAijZxABi1mH1kCZmQKRJNKwV+cj0iVr44= github.com/aws/aws-sdk-go-v2/service/apigatewayv2 v1.24.6 h1:wNUMxMjviF0fbO1pWKVFT1xDRa+BY2qwW6+YJkgIRvI= github.com/aws/aws-sdk-go-v2/service/apigatewayv2 v1.24.6/go.mod h1:pCq9ErKoUWYFfmpENhlWuhBF+NNNwVOXNrZA5C480eM= github.com/aws/aws-sdk-go-v2/service/appconfig v1.36.0 h1:6IlrKbN6rVw2wdVxm4WQ5nI/Np0eTydc5Lsa1Vq+cBs= @@ -67,8 +67,8 @@ github.com/aws/aws-sdk-go-v2/service/appflow v1.45.7 h1:UfxkfxuI4Ksq33InChPPDFg/ github.com/aws/aws-sdk-go-v2/service/appflow v1.45.7/go.mod h1:kJIzLElxd30701jCUv8leaH4GGrCCfoxpNUULd7+rK8= github.com/aws/aws-sdk-go-v2/service/appintegrations v1.30.6 h1:wUhwc2GcAZ4m00sVu2gQ9ugn5Jxk3EjZPf9KxIM+aZo= github.com/aws/aws-sdk-go-v2/service/appintegrations v1.30.6/go.mod h1:ivsyQDuUvZ2HIjoACH4KiSkaP3/rQVjPpb4yUurgPCU= -github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.33.6 h1:tA9FFJKQEPZ1YXuO+ZIMXBYy7Jrsz5SJ4feg/zb82Ig= -github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.33.6/go.mod h1:XBKTLJ2N61HegfI0sroliDC1MNX0L3ApqCfNoZ9POAA= +github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.34.0 h1:GepjPOtTMErWuKclEcfUtibA2gP8kLlL6gglC2YJEMU= +github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.34.0/go.mod h1:XBKTLJ2N61HegfI0sroliDC1MNX0L3ApqCfNoZ9POAA= github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.29.4 h1:NiytCBlDQWHo7GWomxI7sBayGgYikFLRWGx67mab42o= github.com/aws/aws-sdk-go-v2/service/applicationinsights v1.29.4/go.mod h1:S/E1rruraVCEM0H11AAlulupi00RyhGmARep6mgJgec= github.com/aws/aws-sdk-go-v2/service/applicationsignals v1.7.1 h1:UU84hkab8PQfrTM8jJjEQvfYns1meYkXWcCQs7uuiSo= @@ -79,14 +79,14 @@ github.com/aws/aws-sdk-go-v2/service/apprunner v1.32.6 h1:Wqlx6m821gv7qXMJQ3f7Ju github.com/aws/aws-sdk-go-v2/service/apprunner v1.32.6/go.mod h1:liN6AXsZpCSw888Vdsc1OSeKuEVvWek31jv41mn4KCA= github.com/aws/aws-sdk-go-v2/service/appstream v1.41.6 h1:Y/npDc6JZ9rxarIqZOWZllxgtZLLjFXvwTjuhpoSqW8= github.com/aws/aws-sdk-go-v2/service/appstream v1.41.6/go.mod h1:Ex0sRVuADGJBCsP8Yvsuu+RTeAydhj5OrXxu99OlE+w= -github.com/aws/aws-sdk-go-v2/service/appsync v1.39.3 h1:2NOsVvQv5mMor0EuI8EunbuhxQHjSWUhaCqhADKCsBU= -github.com/aws/aws-sdk-go-v2/service/appsync v1.39.3/go.mod h1:d+xpwZCcffeV4l4bM1xjQgINiNPUlmwKQSkoaAnMjVE= +github.com/aws/aws-sdk-go-v2/service/appsync v1.40.0 h1:FgT5r1MEc4ZAxmYGw4VcobadiEno6CggVP+GTm2SK5I= +github.com/aws/aws-sdk-go-v2/service/appsync v1.40.0/go.mod h1:d+xpwZCcffeV4l4bM1xjQgINiNPUlmwKQSkoaAnMjVE= github.com/aws/aws-sdk-go-v2/service/athena v1.48.4 h1:FbHOJ4JekyaFLE5SG0yuHryYRuaHXd9rO4QMYK4NH5A= github.com/aws/aws-sdk-go-v2/service/athena v1.48.4/go.mod h1:sAM9gz5RsYx3nBYISXE9CRnQVk7WtCs6SjCZvygmtzQ= github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.6 h1:TLXugBC1lQUGMcVhUTdRiUnX4ulOs13hGvBlw4bBkSE= github.com/aws/aws-sdk-go-v2/service/auditmanager v1.37.6/go.mod h1:TnalEymbabDCozLHd0UxERDVwDsiUNQ8Cy7Wd6I+nUE= -github.com/aws/aws-sdk-go-v2/service/autoscaling v1.50.0 h1:5tF6T8pAKna0TZ2g77jKdTCKoIRDsaYlYxz9OC1BraI= -github.com/aws/aws-sdk-go-v2/service/autoscaling v1.50.0/go.mod h1:I1+/2m+IhnK5qEbhS3CrzjeiVloo9sItE/2K+so0fkU= +github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.0 h1:1KzQVZi7OTixxaVJ8fWaJAUBjme+iQ3zBOCZhE4RgxQ= +github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.0/go.mod h1:I1+/2m+IhnK5qEbhS3CrzjeiVloo9sItE/2K+so0fkU= github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.24.6 h1:zkRcAyCAf1sO51+tr7cdzARkojrgaqQEMNJa6SSxszw= github.com/aws/aws-sdk-go-v2/service/autoscalingplans v1.24.6/go.mod h1:Fk9vMo1pF5oomcRNwVuu/oAZWgnErNzdr1dpYlLFnjg= github.com/aws/aws-sdk-go-v2/service/backup v1.39.7 h1:YeU78WW19lWGew7OBP2lImtLvn2d5Zlktjwh268d07I= @@ -101,8 +101,8 @@ github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.27.1 h1:Uq364zd0sw4Sa5DovhB github.com/aws/aws-sdk-go-v2/service/bedrockagent v1.27.1/go.mod h1:+QNM3upOuzc6CrYFdtDnNApChkfbC6lIAI2nqct4/u8= github.com/aws/aws-sdk-go-v2/service/budgets v1.28.6 h1:RVzQr0yvPN3OGZ2ipFVe1SBIwvomwjCvGg9S2q1QQbM= github.com/aws/aws-sdk-go-v2/service/budgets v1.28.6/go.mod h1:v5aGgmg7e0sS9wbdIK1CwgSIGCBmKbwnnI3F0vj3Fb0= -github.com/aws/aws-sdk-go-v2/service/chatbot v1.8.6 h1:39X0+9tooDnPfHCsH1NClflvHY0HRncKKY4OiS/nxxg= -github.com/aws/aws-sdk-go-v2/service/chatbot v1.8.6/go.mod h1:AnpVkIhMiOul0lelxDuySlmnNMW4AqEXz4VyRC5mCvo= +github.com/aws/aws-sdk-go-v2/service/chatbot v1.9.0 h1:9MsvMH/fdhu4NhtaYrAvyOGrewZTkh6W5bwxIbKAQGk= +github.com/aws/aws-sdk-go-v2/service/chatbot v1.9.0/go.mod h1:AnpVkIhMiOul0lelxDuySlmnNMW4AqEXz4VyRC5mCvo= github.com/aws/aws-sdk-go-v2/service/chime v1.34.6 h1:Jl5fsX028RPDzuKInYkCU6p+cWnvWLpBJEXPlnzdkOQ= github.com/aws/aws-sdk-go-v2/service/chime v1.34.6/go.mod h1:pqo7AjgtB9xL2KfkCFXO8wKNAFCTcfM4Yiw6nUYt7O0= github.com/aws/aws-sdk-go-v2/service/chimesdkmediapipelines v1.21.1 h1:wasRSxlF1Ye9ilVut1GngPCTwyMPc13XJyRTJPM0nO4= @@ -117,20 +117,20 @@ github.com/aws/aws-sdk-go-v2/service/cloudcontrol v1.23.1 h1:x4XUX/gadOFFsX5ndid github.com/aws/aws-sdk-go-v2/service/cloudcontrol v1.23.1/go.mod h1:8vDrlyLzxWUybo1E4Rh2UVUPM9cyu+GgTYkwFCRV6h4= github.com/aws/aws-sdk-go-v2/service/cloudformation v1.56.0 h1:zmXJiEm/fQYtFDLIUsZrcPIjTrL3R/noFICGlYBj3Ww= github.com/aws/aws-sdk-go-v2/service/cloudformation v1.56.0/go.mod h1:9nOjXCDKE+QMK4JaCrLl36PU+VEfJmI7WVehYmojO8s= -github.com/aws/aws-sdk-go-v2/service/cloudfront v1.42.0 h1:HALzRSv9rQiViTmTngO7mHQ2hZVHN1xArAofDtLCkuE= -github.com/aws/aws-sdk-go-v2/service/cloudfront v1.42.0/go.mod h1:KC7JSdRScZQpZJDJp4ze9elsg8QIWIoABjmCzDS4rtg= +github.com/aws/aws-sdk-go-v2/service/cloudfront v1.43.0 h1:Ny0HHch5IyjWd3Hh/csFvAZFPDHvu7eeePFh7+BnbZ8= +github.com/aws/aws-sdk-go-v2/service/cloudfront v1.43.0/go.mod h1:KC7JSdRScZQpZJDJp4ze9elsg8QIWIoABjmCzDS4rtg= github.com/aws/aws-sdk-go-v2/service/cloudfrontkeyvaluestore v1.8.6 h1:dke8UJCJrHoscyZ1dIPgy3cxoLdets5LnoXO9jlW2bM= github.com/aws/aws-sdk-go-v2/service/cloudfrontkeyvaluestore v1.8.6/go.mod h1:A42W0NdVTnuXFemvBZY/nNVnVKgTVJBv06fQTtVvLuo= github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.27.7 h1:Ymxy7Hrq/Gax/w++W0t1E2ptd9W4/nFAGl3Ls50npDI= github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.27.7/go.mod h1:W4rh804hNs3jvIUVrZU7W6ZzufPUTn2fvjFwDLg75Vk= github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.26.5 h1:qv4Vmbrmq556QW1geLfnVU04FKotI85HgCVup2CHC0I= github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.26.5/go.mod h1:bLUwLj8J6hdXNYgrlrBmYaC6k+WRiWVuuj82l4cE+dE= -github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.45.1 h1:AosFx25ZlkWnNggOUuhBcG2Yx+SDRNBcV6W2+PctH+Q= -github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.45.1/go.mod h1:1UmWM2dmPjAP9GndptgNB5ZO1GnVRHFUX5JK0RB+ozY= +github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.46.1 h1:2ak2eGvO11EG8dbF2rduX0LFYqkSmLTaFiAXbrYeBik= +github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.46.1/go.mod h1:1UmWM2dmPjAP9GndptgNB5ZO1GnVRHFUX5JK0RB+ozY= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.1 h1:FbjhJTRoTujDYDwTnnE46Km5Qh1mMSH+BwTL4ODFifg= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.1/go.mod h1:OwyCzHw6CH8pkLqT8uoCkOgUsgm11LTfexLZyRy6fBg= -github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.43.3 h1:hKIu7ziYNid9JAuPX5TMgfEKiGyJiPO7Icdc920uLMI= -github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.43.3/go.mod h1:Qbr4yfpNqVNl69l/GEDK+8wxLf/vHi0ChoiSDzD7thU= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.44.0 h1:OREVd94+oXW5a+3SSUAo4K0L5ci8cucCLu+PSiek8OU= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.44.0/go.mod h1:Qbr4yfpNqVNl69l/GEDK+8wxLf/vHi0ChoiSDzD7thU= github.com/aws/aws-sdk-go-v2/service/codeartifact v1.33.6 h1:Uu7boDJDhHI3P9AjMPu9/bdSfOoTlhowBTUPswP5avM= github.com/aws/aws-sdk-go-v2/service/codeartifact v1.33.6/go.mod h1:MledsPnJ3IBEYa7pWbYIitZDbSOftxNjRCxrEm5W9L0= github.com/aws/aws-sdk-go-v2/service/codebuild v1.49.1 h1:rVfkJ2IsXFUB2dRyjoCcED1LQPeTwiOGSxB2tzItrL8= @@ -147,32 +147,32 @@ github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.24.6 h1:NHA1oFgnYErN/m1 github.com/aws/aws-sdk-go-v2/service/codeguruprofiler v1.24.6/go.mod h1:f7Z7f8TJ+jPCG3a7iw5G3Og6ZNlVV/h4Vssa2z5Ctvg= github.com/aws/aws-sdk-go-v2/service/codegurureviewer v1.29.6 h1:ZCwOHI5qLoZOKXRroD7zFC9DsJOwr7/2trzCqGmTJXk= github.com/aws/aws-sdk-go-v2/service/codegurureviewer v1.29.6/go.mod h1:LwkwNbB3ftbrnzeolIatXt5WPCpkRbVZcEnDJ4B33yE= -github.com/aws/aws-sdk-go-v2/service/codepipeline v1.36.4 h1:3gc3QzXPPIpeSPntAtUy2CR9A3pj09O5IVrirwnvjCc= -github.com/aws/aws-sdk-go-v2/service/codepipeline v1.36.4/go.mod h1:VNGtFdYLnh+4bhmz/t1grmciVHt1aPeFWu3YAUOzJeM= +github.com/aws/aws-sdk-go-v2/service/codepipeline v1.37.0 h1:NADCf4LSkrl1ADbJT1q3VxGhJ4gre77MJ40aqupZczg= +github.com/aws/aws-sdk-go-v2/service/codepipeline v1.37.0/go.mod h1:VNGtFdYLnh+4bhmz/t1grmciVHt1aPeFWu3YAUOzJeM= github.com/aws/aws-sdk-go-v2/service/codestarconnections v1.29.6 h1:OqC1rs2Rt4hOl07IcVQ3ZjXDPPCQJ20k2Xp59ZMNfmY= github.com/aws/aws-sdk-go-v2/service/codestarconnections v1.29.6/go.mod h1:NSqFyJ68sZwNuQOBCZ1c+G10d9nd03AqdkLwkRPIHPo= github.com/aws/aws-sdk-go-v2/service/codestarnotifications v1.26.6 h1:IeMC7DWOojfoApk0lSrmFO9lWdbd2EFskmYNrgegwuY= github.com/aws/aws-sdk-go-v2/service/codestarnotifications v1.26.6/go.mod h1:ZAEhVVAHdollHwVtzGSoh7gH8SGbFaOvYeHAE7lv1Uk= github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.27.6 h1:qrxndl72akI2mK6nhN5TLe+JiAklKl+vtaiAvbQ71lM= github.com/aws/aws-sdk-go-v2/service/cognitoidentity v1.27.6/go.mod h1:v4nSWzO8c2OSdtprw0PQ7UtspocKCJhH1uBd6NxL8FM= -github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.46.6 h1:tj/rbVJP94sNvvq3hM5EURTgMpQ0+mGKkfvqsZ5gwrA= -github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.46.6/go.mod h1:TxsMf+uRm3AHGUs2BSmnxz99BqUd6f9EiuDEhRppTY8= +github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.47.0 h1:9WEhV3JmFhSMnKaY2SqcPb0bM5XIoMmAy62Fj5TNMwk= +github.com/aws/aws-sdk-go-v2/service/cognitoidentityprovider v1.47.0/go.mod h1:TxsMf+uRm3AHGUs2BSmnxz99BqUd6f9EiuDEhRppTY8= github.com/aws/aws-sdk-go-v2/service/comprehend v1.35.6 h1:cnZDmrpdVewJ22Y9Su1XpmsPIQ5oS3TujNPS04cH+7s= github.com/aws/aws-sdk-go-v2/service/comprehend v1.35.6/go.mod h1:LGMQ+uNG/xTjB8nx6Jb2SrsQqvWc7ip0vqNiiKu9EiA= github.com/aws/aws-sdk-go-v2/service/computeoptimizer v1.40.0 h1:rNj0NoMlMlV9B3rEnxv84CG5RfEqwyfjHL6P/YtX224= github.com/aws/aws-sdk-go-v2/service/computeoptimizer v1.40.0/go.mod h1:MH4YodNw/6ZHhRwow3baZ7RQP6z8GKSMsO94X5OZ3Y0= github.com/aws/aws-sdk-go-v2/service/configservice v1.50.6 h1:GsIoN6f+LLTX/Sa70WO77Cy1GTrSF9xi7e8OwwOiGcs= github.com/aws/aws-sdk-go-v2/service/configservice v1.50.6/go.mod h1:5vbQi0lIP9T7RLGyjmQZhqf5Xv9WxHXk7qlHnhEqWKc= -github.com/aws/aws-sdk-go-v2/service/connect v1.116.0 h1:ewriAQDNn5BFwyMj2atkAbk5wqcrIBMPqg2jyhuAFoY= -github.com/aws/aws-sdk-go-v2/service/connect v1.116.0/go.mod h1:oGrMxGM/Ww+glDJ7cfMU1X22kJ6XBBHXsfxIhKD6E3k= +github.com/aws/aws-sdk-go-v2/service/connect v1.117.0 h1:ELPEshWAPZzprvgJfY0vZcyuPx9eSsXpkdNyQ6kl198= +github.com/aws/aws-sdk-go-v2/service/connect v1.117.0/go.mod h1:oGrMxGM/Ww+glDJ7cfMU1X22kJ6XBBHXsfxIhKD6E3k= github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.6 h1:w475oN5DyGiDt58pLYm1Gq7wKzH4FuZM1tNj+Agd1j4= github.com/aws/aws-sdk-go-v2/service/connectcases v1.21.6/go.mod h1:gCKtUjvhDcgZCLqqdc5AI9cxEFx4VCvvgKy8FL2UeXY= github.com/aws/aws-sdk-go-v2/service/controltower v1.20.0 h1:4YuCMtKeY+TwG277Rh/4zC6ijMjJ5XeMj9djxZ0luXI= github.com/aws/aws-sdk-go-v2/service/controltower v1.20.0/go.mod h1:Wwtsq9vGGX+s+z2CAU6nNVQnQUp6tP12FmGK8Gauy7M= github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.6 h1:osGnDbG5/5BHoExuVOK1EN0a9cLfZ8NdqB7luLInxOA= github.com/aws/aws-sdk-go-v2/service/costandusagereportservice v1.28.6/go.mod h1:Rkaugb0V6ZcPs8GzhnEjbq+EB9K+GASbOMdxiDzTZX4= -github.com/aws/aws-sdk-go-v2/service/costexplorer v1.43.6 h1:tGvfq+De4uRTaLA1qAbCnbGrJRkQutB2yxQ9sattbyw= -github.com/aws/aws-sdk-go-v2/service/costexplorer v1.43.6/go.mod h1:rwuImPfFVkoKeuAkGrlDSFm9pT9veoRNoH25IG9Jco0= +github.com/aws/aws-sdk-go-v2/service/costexplorer v1.45.0 h1:78q3WvpWmDAg6Ssd9c9bgGLLtFuwRMhNRdSNSX8lXto= +github.com/aws/aws-sdk-go-v2/service/costexplorer v1.45.0/go.mod h1:rwuImPfFVkoKeuAkGrlDSFm9pT9veoRNoH25IG9Jco0= github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.11.0 h1:nV8WhW54iNT4XYZphMG5zfxhpe8POhi67Dp5uHCVk80= github.com/aws/aws-sdk-go-v2/service/costoptimizationhub v1.11.0/go.mod h1:CPai3cHY5BMDEFDcUW4JrkN0vo+L3IyJgF/+Ddlm3wc= github.com/aws/aws-sdk-go-v2/service/customerprofiles v1.43.0 h1:LnSDxvx4MoC59r50lHfyDmKFtT4DVeicBn6ci+gvQ/E= @@ -201,8 +201,8 @@ github.com/aws/aws-sdk-go-v2/service/directconnect v1.29.6 h1:sXYEoFEo7GLwRwqY2R github.com/aws/aws-sdk-go-v2/service/directconnect v1.29.6/go.mod h1:E2hAfYPWIpsei0SCp8ykbHcXFON8Knf1oBVdlwUMuVE= github.com/aws/aws-sdk-go-v2/service/directoryservice v1.30.7 h1:ZwecDiXujdrRm5C8UGwdcF9YpV83lgXfzBgUEF5KeME= github.com/aws/aws-sdk-go-v2/service/directoryservice v1.30.7/go.mod h1:ndWayMkDqmOHWM2OcX8Uno6i6gSNm2O8UBNkQjQHpFg= -github.com/aws/aws-sdk-go-v2/service/dlm v1.28.6 h1:dkGszLw6/TazWioiI8i6u3uuDCdVw/ur+voFtNVEUYw= -github.com/aws/aws-sdk-go-v2/service/dlm v1.28.6/go.mod h1:r1kmK6s90DSs6cxF3UvQAGI5LMVEySns/AWL7Rc6fH4= +github.com/aws/aws-sdk-go-v2/service/dlm v1.28.7 h1:gcQxVPVOqGaltkiGow3KxZN4srjmJeVXt4xzY21VqdU= +github.com/aws/aws-sdk-go-v2/service/dlm v1.28.7/go.mod h1:r1kmK6s90DSs6cxF3UvQAGI5LMVEySns/AWL7Rc6fH4= github.com/aws/aws-sdk-go-v2/service/docdb v1.39.5 h1:gWPt2urz9yNjcNcPQ097utT1VGdoeB47yMz2strJrZo= github.com/aws/aws-sdk-go-v2/service/docdb v1.39.5/go.mod h1:3MWrxWaAZsyjlR7sPSnps1uaVQZs8zIdS4lWDCUVD3g= github.com/aws/aws-sdk-go-v2/service/docdbelastic v1.14.3 h1:CqabKk/auDP8y6gjxpHNQ9pavQA1mKe4YopiC10U1co= @@ -211,8 +211,8 @@ github.com/aws/aws-sdk-go-v2/service/drs v1.30.6 h1:gRx0PWMok7r3zmoiwdFzYRyJwp2R github.com/aws/aws-sdk-go-v2/service/drs v1.30.6/go.mod h1:k4mtLg6LgO18IaHeQX9bCms31VSXidi44A1oqMiJ6CA= github.com/aws/aws-sdk-go-v2/service/dynamodb v1.37.1 h1:vucMirlM6D+RDU8ncKaSZ/5dGrXNajozVwpmWNPn2gQ= github.com/aws/aws-sdk-go-v2/service/dynamodb v1.37.1/go.mod h1:fceORfs010mNxZbQhfqUjUeHlTwANmIT4mvHamuUaUg= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.192.0 h1:mNTVdPohLShrsPSyuOCyugLx1DQGCludmuiIsminhUk= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.192.0/go.mod h1:mzj8EEjIHSN2oZRXiw1Dd+uB4HZTl7hC8nBzX9IZMWw= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.193.0 h1:RhSoBFT5/8tTmIseJUXM6INTXTQDF8+0oyxWBnozIms= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.193.0/go.mod h1:mzj8EEjIHSN2oZRXiw1Dd+uB4HZTl7hC8nBzX9IZMWw= github.com/aws/aws-sdk-go-v2/service/ecr v1.36.6 h1:zg+3FGHA0PBs0KM25qE/rOf2o5zsjNa1g/Qq83+SDI0= github.com/aws/aws-sdk-go-v2/service/ecr v1.36.6/go.mod h1:ZSq54Z9SIsOTf1Efwgw1msilSs4XVEfVQiP9nYVnKpM= github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.6 h1:9DXEMWmABYPz/NXSFmp9Y14yI5FQ5jmPPvllS9hXXfY= @@ -223,20 +223,20 @@ github.com/aws/aws-sdk-go-v2/service/efs v1.34.0 h1:0VpBMWwpq5UuhneIWO19+/Mp5DmF github.com/aws/aws-sdk-go-v2/service/efs v1.34.0/go.mod h1:WBUkzX6kKt36+zyeTQYxySd0TPuvNQhNWG6vRrNBzJw= github.com/aws/aws-sdk-go-v2/service/eks v1.52.1 h1:XqyUdJbXQxY48CbBtN9a51HoTQy/kTIwrWiruRDsydk= github.com/aws/aws-sdk-go-v2/service/eks v1.52.1/go.mod h1:WTfZ/+I7aSMEna6iYm1Kjne9A8f1MyxXNfp6hCa1+Bk= -github.com/aws/aws-sdk-go-v2/service/elasticache v1.43.3 h1:rMitMatUyTL02GTh5ITa2mon+Xp6iWrISgwWmAmzGFY= -github.com/aws/aws-sdk-go-v2/service/elasticache v1.43.3/go.mod h1:yx9zxw7KuLQoIdf0ajFjNhsIve273fJDMmF/BprT8Vc= +github.com/aws/aws-sdk-go-v2/service/elasticache v1.44.0 h1:Fyzf7cqohTLamP8kht9xvkMJT3HXmz0IQGdRMk1tdJk= +github.com/aws/aws-sdk-go-v2/service/elasticache v1.44.0/go.mod h1:yx9zxw7KuLQoIdf0ajFjNhsIve273fJDMmF/BprT8Vc= github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.5 h1:bCj+S/v35iLUnHp8DiIC92sdWYweLUjBDSLFbw7vHQ0= github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.28.5/go.mod h1:gOJmxmxThaTRM7r8WZ6BeOCl14UE48lSgMca7U4/oMM= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.28.5 h1:12Fm4tTwFk2Url99X56hdKXKVK7suzZKjtdXAILne4g= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.28.5/go.mod h1:qnlecrYsTCjPhGuF+3SZaz7WGuNz/T3L/Q8a3Yc7uww= -github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.42.0 h1:C4/D90/j3EF/SokpC4HO1aPMkZV1dgqUbmejdpxQiAE= -github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.42.0/go.mod h1:pZP3I+Ts+XuhJJtZE49+ABVjfxm7u9/hxcNUYSpY3OE= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.43.0 h1:fIAJ5VM/ANpYV81C1Jbf4ePbElMSzuWFljezD6weU9k= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.43.0/go.mod h1:pZP3I+Ts+XuhJJtZE49+ABVjfxm7u9/hxcNUYSpY3OE= github.com/aws/aws-sdk-go-v2/service/elasticsearchservice v1.32.6 h1:j19Nazjj1qrrm7DufPO53F9FFzrUDlphsqpNn0HU3fg= github.com/aws/aws-sdk-go-v2/service/elasticsearchservice v1.32.6/go.mod h1:6QH9UwlCk7m5PoCPH+/UZtStdP8dLg7CzJJ/52o2pAU= github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.27.6 h1:oV6JszCETDPPHkqZahjVUaP8IlWDSUm2B5lRISvsL2g= github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.27.6/go.mod h1:JsyDIVlHAYBxZHya8YzO7RzLq24uVUs01aG9BiKOYlo= -github.com/aws/aws-sdk-go-v2/service/emr v1.46.4 h1:+Y/EZ3kCmAORSH2Q1NWxtys3+Uy/+hn/t/XbKm3jwa4= -github.com/aws/aws-sdk-go-v2/service/emr v1.46.4/go.mod h1:1Rl0CmeP2He+Oiz7PtsVJxFIt1h2m1rt0vahJtIldE8= +github.com/aws/aws-sdk-go-v2/service/emr v1.47.0 h1:S3soqtUBuxbG1FcLFiP2uGInncnM0eei+hsmCou2aBs= +github.com/aws/aws-sdk-go-v2/service/emr v1.47.0/go.mod h1:1Rl0CmeP2He+Oiz7PtsVJxFIt1h2m1rt0vahJtIldE8= github.com/aws/aws-sdk-go-v2/service/emrcontainers v1.33.7 h1:OzrMVLJ97pCg2BCER5Tk0/Fg/604Ravd4VR3rRQeKJU= github.com/aws/aws-sdk-go-v2/service/emrcontainers v1.33.7/go.mod h1:JYC8r7iUXCR02VKACPxpcOeLtYnHeKNrMzLv0U6uKVs= github.com/aws/aws-sdk-go-v2/service/emrserverless v1.26.6 h1:0SqOqOHxwzy+2i/DvV/a5Lc+UrfDFRDiCQhVT9jTFFU= @@ -281,8 +281,8 @@ github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.38.4 h1:aiUxEicGm5tUeTfhsay github.com/aws/aws-sdk-go-v2/service/imagebuilder v1.38.4/go.mod h1:6tZhu4I5K6paE401s53iw4F8fskiW6Z+HfOis/MyVwg= github.com/aws/aws-sdk-go-v2/service/inspector v1.25.6 h1:7tGA6lqnXk+KU9ZAYuExBkcw9pLw/mv/bXYxO5Sgsc0= github.com/aws/aws-sdk-go-v2/service/inspector v1.25.6/go.mod h1:UJfA0/mna6xg+45rmRqxX0+72UdlLnW7r99ke5MX4JU= -github.com/aws/aws-sdk-go-v2/service/inspector2 v1.33.1 h1:kRcDnjvUTrcHnN0faXj3t+O3/wRFvPo6dkJFoe41EjE= -github.com/aws/aws-sdk-go-v2/service/inspector2 v1.33.1/go.mod h1:WDIty+W4K+zTro9oNy51ct4odnoZSEQl9VdnRyJI4pE= +github.com/aws/aws-sdk-go-v2/service/inspector2 v1.34.0 h1:qEaZRkBG/RrgakiBGSU4j2gvYiJ4R29T65YLqynr92U= +github.com/aws/aws-sdk-go-v2/service/inspector2 v1.34.0/go.mod h1:WDIty+W4K+zTro9oNy51ct4odnoZSEQl9VdnRyJI4pE= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 h1:iXtILhvDxB6kPvEXgsDhGaZCSC6LQET5ZHSdJozeI0Y= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1/go.mod h1:9nu0fVANtYiAePIBh2/pFUSwtJ402hLnp854CNoDOeE= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.4.5 h1:gvZOjQKPxFXy1ft3QnEyXmT+IqneM9QAUWlM3r0mfqw= @@ -295,8 +295,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.5 h1:P1doBzv5VEg1ON github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.5/go.mod h1:NOP+euMW7W3Ukt28tAxPuoWao4rhhqJD3QEBk7oCg7w= github.com/aws/aws-sdk-go-v2/service/internetmonitor v1.20.1 h1:bMINUQ0Vx+W0F55LdM/QNmCyy4EpGNFRZxtEY9YY9Y4= github.com/aws/aws-sdk-go-v2/service/internetmonitor v1.20.1/go.mod h1:FwrxOAc2QpAXWHy6pPDHqQpQy/2NuZcdvj1x+lfQEek= -github.com/aws/aws-sdk-go-v2/service/iot v1.60.1 h1:od5vzNqjcpoJQ+QjfcysAvVIdTL41b4m7uVqHBtnSYk= -github.com/aws/aws-sdk-go-v2/service/iot v1.60.1/go.mod h1:S3rkM2vxkYQdO+eEfv7EKzL11An45GCt2/lcnI5LbU0= +github.com/aws/aws-sdk-go-v2/service/iot v1.61.0 h1:VsaQ+YkTqF7R/GbzWGdT9NVhKoxhw67eSC4JIA1QH2k= +github.com/aws/aws-sdk-go-v2/service/iot v1.61.0/go.mod h1:S3rkM2vxkYQdO+eEfv7EKzL11An45GCt2/lcnI5LbU0= github.com/aws/aws-sdk-go-v2/service/iotanalytics v1.26.6 h1:HCNKm01tmleHcWYZQ9xHreJx0+2mWetldsfHK5G2LZs= github.com/aws/aws-sdk-go-v2/service/iotanalytics v1.26.6/go.mod h1:YBeFAvdZ9sTyody+TwjI++jM7+A+gGMdNxUrssNDnlI= github.com/aws/aws-sdk-go-v2/service/iotevents v1.27.6 h1:6jqw638zUZ+hCrb40uzIXL/4b6o75Yykrt5gJVtorUU= @@ -325,8 +325,8 @@ github.com/aws/aws-sdk-go-v2/service/kms v1.37.6 h1:CZImQdb1QbU9sGgJ9IswhVkxAcjk github.com/aws/aws-sdk-go-v2/service/kms v1.37.6/go.mod h1:YJDdlK0zsyxVBxGU48AR/Mi8DMrGdc1E3Yij4fNrONA= github.com/aws/aws-sdk-go-v2/service/lakeformation v1.38.3 h1:vbc9pblnCXXwSGnUW6abjBH2nN66nifZzPfh0fapXl0= github.com/aws/aws-sdk-go-v2/service/lakeformation v1.38.3/go.mod h1:GSrO+Jr1SM/Jfdd52DIN48EY2tbhgk02nogvzpLkFks= -github.com/aws/aws-sdk-go-v2/service/lambda v1.67.0 h1:3BbFvl2FPtIIS6NEE/nnytkES85Kl93/VDAFICtGzfM= -github.com/aws/aws-sdk-go-v2/service/lambda v1.67.0/go.mod h1:guz2K3x4FKSdDaoeB+TPVgJNU9oj2gftbp5cR8ela1A= +github.com/aws/aws-sdk-go-v2/service/lambda v1.69.0 h1:BXt75frE/FYtAmEDBJRBa2HexOw+oAZWZl6QknZEFgg= +github.com/aws/aws-sdk-go-v2/service/lambda v1.69.0/go.mod h1:guz2K3x4FKSdDaoeB+TPVgJNU9oj2gftbp5cR8ela1A= github.com/aws/aws-sdk-go-v2/service/launchwizard v1.8.6 h1:+GPVOamTqDV7sSYzvziM4WbEv4u5jw/2bVYDl5NnmNU= github.com/aws/aws-sdk-go-v2/service/launchwizard v1.8.6/go.mod h1:2KF56C6mZldwDGFF/vyv83VGXqDVpAaH3NwBE2+OTtw= github.com/aws/aws-sdk-go-v2/service/lexmodelbuildingservice v1.28.6 h1:G6qKJwPyBMvFyWjAWW7lbZoN6VsYBCPxzjrQRKCexFg= @@ -365,8 +365,8 @@ github.com/aws/aws-sdk-go-v2/service/mwaa v1.33.0 h1:2MD49J99Lxb43LfLItaZEPVVgXH github.com/aws/aws-sdk-go-v2/service/mwaa v1.33.0/go.mod h1:xBgoacMucYu8C1qm8Z9kcI8ZbnbPgHR2EynpoPt4RZw= github.com/aws/aws-sdk-go-v2/service/neptune v1.35.5 h1:HDoA1Z3r2TuF6CJfYSoLV5Wr70ll+GtJM4vL4n7SAv0= github.com/aws/aws-sdk-go-v2/service/neptune v1.35.5/go.mod h1:vZbGimpx06Ar8EnMRoJLNYsJ6YeYFdvozTz8Kx279lU= -github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.14.4 h1:bicyAt8d5ozkA1dYNWLG2DdA3tH1biSdvC/+2qsWH5E= -github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.14.4/go.mod h1:Uade5ii2gNtKGSUZ2rXZBTSow50uCWh8mNLxsBeSppM= +github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.15.0 h1:BhMpfPFW0vgobYTzfrMFijjXxHCqpyB906ToYuswnpQ= +github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.15.0/go.mod h1:Uade5ii2gNtKGSUZ2rXZBTSow50uCWh8mNLxsBeSppM= github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.44.3 h1:5gs6lyhGYupTMTE+sFsbh35W+XPCdCt4Pgg8qEUleGw= github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.44.3/go.mod h1:RrSc7fUe1EX71WfWClFvg55tAdQJ0UdG1uCOBzAgFFo= github.com/aws/aws-sdk-go-v2/service/networkmanager v1.31.6 h1:j1DzkC+I+mSVkgLXmXadU0bU1NKqLhtJC0VAnmvTvWE= @@ -399,16 +399,16 @@ github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.18.1 h1:Rq87gPsr+seXV github.com/aws/aws-sdk-go-v2/service/pinpointsmsvoicev2 v1.18.1/go.mod h1:7ouFIQqHwpK5rnzhCkDfF3LioqoOiQs5UD7ANRhxCsg= github.com/aws/aws-sdk-go-v2/service/pipes v1.18.4 h1:hkcI3Is0nBoo0RwMCTY3N9jd3kLbF3eELkmb5xeWDWA= github.com/aws/aws-sdk-go-v2/service/pipes v1.18.4/go.mod h1:ubOlYYLTKhB0FNA85qTHyJGsTTR20T406ywZBXZdcNs= -github.com/aws/aws-sdk-go-v2/service/polly v1.45.6 h1:BB7f5DkU0M86skyEWjCCu2WaiLLPlZzl97np014XQJ8= -github.com/aws/aws-sdk-go-v2/service/polly v1.45.6/go.mod h1:Rp9B8Z/0JVupwGQZavo5YmYjI8mF6wNIv5+Dv4IQb3M= +github.com/aws/aws-sdk-go-v2/service/polly v1.45.7 h1:vjSRnb6eE/VeWy5sicCbp1uG3yn9idstyJ9fiwydFv4= +github.com/aws/aws-sdk-go-v2/service/polly v1.45.7/go.mod h1:Rp9B8Z/0JVupwGQZavo5YmYjI8mF6wNIv5+Dv4IQb3M= github.com/aws/aws-sdk-go-v2/service/pricing v1.32.6 h1:ZzoCQskTXjZBqKW9ZpUFUBCcK22TQZWbO+6PbX8Gu2U= github.com/aws/aws-sdk-go-v2/service/pricing v1.32.6/go.mod h1:9U+el9JTtl0llHl7GimPXMmqNHkjgMeV9vMVvznTqfs= github.com/aws/aws-sdk-go-v2/service/qbusiness v1.16.1 h1:h0NRI0sp2vSW3pocytiirHXzUzqz7sAKtECLucRjLo8= github.com/aws/aws-sdk-go-v2/service/qbusiness v1.16.1/go.mod h1:npob1eKe0EiDBkePh5Y9vnTsI8N507o/XIyZLEYfiYg= github.com/aws/aws-sdk-go-v2/service/qldb v1.25.6 h1:0x4VnCqVcYDsiQs7+VTz3qtaeyTCyB9FtZNAMkb2TCo= github.com/aws/aws-sdk-go-v2/service/qldb v1.25.6/go.mod h1:E7qOKK1pXhE9b1M+52KfCoPr8rIhFUimRgy7bxtLN1U= -github.com/aws/aws-sdk-go-v2/service/quicksight v1.79.1 h1:TjlMHaIWnSa7qV+bdfPRYYG71y2G1oK2OcwZArwCHrU= -github.com/aws/aws-sdk-go-v2/service/quicksight v1.79.1/go.mod h1:vFpU88RJn13XpH88/x7cu+onAag/9cGpjpre8t/0srE= +github.com/aws/aws-sdk-go-v2/service/quicksight v1.80.0 h1:bVG1RvmyEsy5XJNgTGKFox/PUaenvRI6kv6Svb3ifac= +github.com/aws/aws-sdk-go-v2/service/quicksight v1.80.0/go.mod h1:vFpU88RJn13XpH88/x7cu+onAag/9cGpjpre8t/0srE= github.com/aws/aws-sdk-go-v2/service/ram v1.29.6 h1:84mPZMJZHAZBFtff+UbZjAck7ZSiRY+nxmElxTEKa1c= github.com/aws/aws-sdk-go-v2/service/ram v1.29.6/go.mod h1:I6romstEDoLQy+FCQxBmCkoKB3TkpFqiYKrc56nQEFI= github.com/aws/aws-sdk-go-v2/service/rbin v1.21.0 h1:Tx49bha+JoGKWeph1Z5zcyDr4u2e5CrTunWxlI0dsoU= @@ -423,8 +423,8 @@ github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.24.3 h1:kK6hgb+NPtKbV github.com/aws/aws-sdk-go-v2/service/redshiftserverless v1.24.3/go.mod h1:rM2oYKRheMpuxjJ7fkIqoegIVdG4GkdOqRx1PSx9xYs= github.com/aws/aws-sdk-go-v2/service/rekognition v1.45.7 h1:kC6qaN1AVzhBzDo/0sUCdkJVcamuMslppfys4oGtxR4= github.com/aws/aws-sdk-go-v2/service/rekognition v1.45.7/go.mod h1:/OYd+ham4lcrARFxWjW+TzBZ0u1gprKqbOUAnX4e0D4= -github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.27.4 h1:DDV5IgFQaDoPiPK04iZfoDhW17z8jSWzbeOP+Voh474= -github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.27.4/go.mod h1:qjJmrIFydKnYY0o/pzlSRiVW3MlfexrcfLGprTB9RGU= +github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.28.0 h1:j4tpuJDBBOrjO0nu0/OYF+npDe0zUKDh87Bvu6xMm5M= +github.com/aws/aws-sdk-go-v2/service/resiliencehub v1.28.0/go.mod h1:qjJmrIFydKnYY0o/pzlSRiVW3MlfexrcfLGprTB9RGU= github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.16.1 h1:4sLI1tQYWtjUKbGcqi24jrK9yCRj9dzDlpoHI0nPBBM= github.com/aws/aws-sdk-go-v2/service/resourceexplorer2 v1.16.1/go.mod h1:/BvZpktD03eMkAyP9EJgIZ/0KpfCKAokOo+rFAPWNQo= github.com/aws/aws-sdk-go-v2/service/resourcegroups v1.27.6 h1:1Xt2iiHMw+5WwGLaKZ7KhB+NabAHdPo2pPmSQJO9RAY= @@ -447,14 +447,14 @@ github.com/aws/aws-sdk-go-v2/service/route53resolver v1.34.1 h1:FlKzCc4JH3i87BpF github.com/aws/aws-sdk-go-v2/service/route53resolver v1.34.1/go.mod h1:Srhr/nWE3+IKKhOqUBc/hYmdgCgxt2Z91GMFFtJyOeE= github.com/aws/aws-sdk-go-v2/service/rum v1.21.6 h1:4U/ss6VTGPGvnSzDyojk/atrOWhJ9OPh4RHwYEm86aA= github.com/aws/aws-sdk-go-v2/service/rum v1.21.6/go.mod h1:kAUyICwBeSM4d/WWS2ZcRz9RLtd0ZuDEQbTf4YCmcbA= -github.com/aws/aws-sdk-go-v2/service/s3 v1.67.1 h1:LXLnDfjT/P6SPIaCE86xCOjJROPn4FNB2EdN68vMK5c= -github.com/aws/aws-sdk-go-v2/service/s3 v1.67.1/go.mod h1:ralv4XawHjEMaHOWnTFushl0WRqim/gQWesAMF6hTow= +github.com/aws/aws-sdk-go-v2/service/s3 v1.68.0 h1:bFpcqdwtAEsgpZXvkTxIThFQx/EM0oV6kXmfFIGjxME= +github.com/aws/aws-sdk-go-v2/service/s3 v1.68.0/go.mod h1:ralv4XawHjEMaHOWnTFushl0WRqim/gQWesAMF6hTow= github.com/aws/aws-sdk-go-v2/service/s3control v1.50.1 h1:WjVnnNd++hjjmuODULNfZaW2zEKZVrDGZvdQUK2dF8M= github.com/aws/aws-sdk-go-v2/service/s3control v1.50.1/go.mod h1:ymXHnBHIxM/iqrgGphFuoUfuczoy4inIr2LH8PRj8NQ= github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.6 h1:zzoRIW5fgL23XkMtW4eDNMvWreQLOJNeFCK2tmjfz1w= github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.6/go.mod h1:eWYAk3ydR9kivn2OqgXUAgZTvmeSQeoYKiEFIQFVm1M= -github.com/aws/aws-sdk-go-v2/service/sagemaker v1.167.1 h1:ZuWM7eVEdaG73ltv7eUXeKGFSDkpSX0Ub5E6YHdsBy0= -github.com/aws/aws-sdk-go-v2/service/sagemaker v1.167.1/go.mod h1:F2Dsgm3rYCwBQ3kceuZwwdx6N/7jpcRIREp3CGMBwV8= +github.com/aws/aws-sdk-go-v2/service/sagemaker v1.168.0 h1:t3gEqynGngUIZ3dqg9LsrGgK/4Qemqy/LQJtpI7waow= +github.com/aws/aws-sdk-go-v2/service/sagemaker v1.168.0/go.mod h1:F2Dsgm3rYCwBQ3kceuZwwdx6N/7jpcRIREp3CGMBwV8= github.com/aws/aws-sdk-go-v2/service/scheduler v1.12.6 h1:68IWlYXT4lWbn1EmL8NBouGTyi9W/IXkXSJbTiasjXY= github.com/aws/aws-sdk-go-v2/service/scheduler v1.12.6/go.mod h1:p6YS4Jv8IRTR8g77fl7iAYa72RfFV5t7ek8TP8/fKVM= github.com/aws/aws-sdk-go-v2/service/schemas v1.28.7 h1:2Wt+RX/lsLb/+np1UV9naIpl0gg03bs7rkt76Gr6W8s= @@ -475,28 +475,28 @@ github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.33.6 h1:SNpBx1RGzJRBdiU github.com/aws/aws-sdk-go-v2/service/servicediscovery v1.33.6/go.mod h1:wUxQDWQLkWd7A7ROXBwiOhjKFOvHAoKHbrykS9xq9D0= github.com/aws/aws-sdk-go-v2/service/servicequotas v1.25.6 h1:GiXCmQ0LWJxMqxeRK8Oc1w2Ufyn9ADxc0MXZMzFTYyI= github.com/aws/aws-sdk-go-v2/service/servicequotas v1.25.6/go.mod h1:j97IqfLFihFonWq16KSfpMENWQ1PvLjNhjoJfpwYTv8= -github.com/aws/aws-sdk-go-v2/service/ses v1.28.5 h1:fct7t4dGDFoJRk+8EIYBXLNsjd0PdvlRRTtfVwkMwSc= -github.com/aws/aws-sdk-go-v2/service/ses v1.28.5/go.mod h1:JRCjHrdiLrSoHRbbOd0lTQOS5U9Yxe72wB3Rk+e2tcQ= +github.com/aws/aws-sdk-go-v2/service/ses v1.29.0 h1:b6Je/QdCfxf6xupis7Eu8fH6SPFE3tG/Xd6MDOpOGJo= +github.com/aws/aws-sdk-go-v2/service/ses v1.29.0/go.mod h1:JRCjHrdiLrSoHRbbOd0lTQOS5U9Yxe72wB3Rk+e2tcQ= github.com/aws/aws-sdk-go-v2/service/sesv2 v1.38.3 h1:el5Rx1kxCrz4rb/lCPl+Hq33ZAdKohbOTlcks7nR7L0= github.com/aws/aws-sdk-go-v2/service/sesv2 v1.38.3/go.mod h1:Lw3+PgymmO/wdBXubwIAn+RiG7T/cD9gE5kicRmN54A= -github.com/aws/aws-sdk-go-v2/service/sfn v1.33.6 h1:nS79DBMlscyO8OYSJXgv/MlVAevIia3jIrupV6Cj57Q= -github.com/aws/aws-sdk-go-v2/service/sfn v1.33.6/go.mod h1:3dMtLKPPdu8n0VakTR9ncAjFGvnRyLMD1Ib5USqCLG4= +github.com/aws/aws-sdk-go-v2/service/sfn v1.34.0 h1:fWI2n4gv/RHaPaRbceJsQxlvVwBdH2a1v/qjFx1xI58= +github.com/aws/aws-sdk-go-v2/service/sfn v1.34.0/go.mod h1:3dMtLKPPdu8n0VakTR9ncAjFGvnRyLMD1Ib5USqCLG4= github.com/aws/aws-sdk-go-v2/service/shield v1.29.6 h1:6Gyhego+FPrK45FxaQ0wRm4EpovxHc51M4WFaQdGJz0= github.com/aws/aws-sdk-go-v2/service/shield v1.29.6/go.mod h1:KYGAHKJFsHD+QVZ08NHHjAtA0FBrfm5YVSGe7eV4AH0= github.com/aws/aws-sdk-go-v2/service/signer v1.26.6 h1:inoZy/MBkjYLTsvOlU+b3ifeBiWbtQlSp5CKAoFb/6k= github.com/aws/aws-sdk-go-v2/service/signer v1.26.6/go.mod h1:PlARViFxCTRAUavXGcQObbvAneCEeln0hvpQCsHJATU= -github.com/aws/aws-sdk-go-v2/service/sns v1.33.5 h1:nJDOsZumqKsejsiGKgpezFzI2oatHmQi/kKKC4wS8v4= -github.com/aws/aws-sdk-go-v2/service/sns v1.33.5/go.mod h1:SODr0Lu3lFdT0SGsGX1TzFTapwveBrT5wztVoYtppm8= +github.com/aws/aws-sdk-go-v2/service/sns v1.33.6 h1:lEUtRHICiXsd7VRwRjXaY7MApT2X4Ue0Mrwe6XbyBro= +github.com/aws/aws-sdk-go-v2/service/sns v1.33.6/go.mod h1:SODr0Lu3lFdT0SGsGX1TzFTapwveBrT5wztVoYtppm8= github.com/aws/aws-sdk-go-v2/service/sqs v1.37.1 h1:39WvSrVq9DD6UHkD+fx5x19P5KpRQfNdtgReDVNbelc= github.com/aws/aws-sdk-go-v2/service/sqs v1.37.1/go.mod h1:3gwPzC9LER/BTQdQZ3r6dUktb1rSjABF1D3Sr6nS7VU= -github.com/aws/aws-sdk-go-v2/service/ssm v1.55.6 h1:mh6Osa3cjwaaVSzJ92a8x1dBh8XQ7ekKLHyhjtx5RRw= -github.com/aws/aws-sdk-go-v2/service/ssm v1.55.6/go.mod h1:l9qF25TzH95FhcIak6e4vt79KE4I7M2Nf59eMUVjj6c= +github.com/aws/aws-sdk-go-v2/service/ssm v1.56.0 h1:mADKqoZaodipGgiZfuAjtlcr4IVBtXPZKVjkzUZCCYM= +github.com/aws/aws-sdk-go-v2/service/ssm v1.56.0/go.mod h1:l9qF25TzH95FhcIak6e4vt79KE4I7M2Nf59eMUVjj6c= github.com/aws/aws-sdk-go-v2/service/ssmcontacts v1.26.6 h1:mYRRsmR2P2tGRzoAWOc0dhh6/wm5xF9MRkMJ/OJdkNk= github.com/aws/aws-sdk-go-v2/service/ssmcontacts v1.26.6/go.mod h1:aTtebl9x8vxZTTUamDzvujt1OICEpcZED1oCi80yyJw= github.com/aws/aws-sdk-go-v2/service/ssmincidents v1.34.6 h1:dqJenl1BmS8fQWI8Ol/h3WdME5lRiYdmggoHv1fihVY= github.com/aws/aws-sdk-go-v2/service/ssmincidents v1.34.6/go.mod h1:NU/CID+MNfIEoHY+XOQ4xvtF8vPm0eco0thWTY2EM9o= -github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.2.7 h1:d26uTPkNtnu91NP0+OUAiJL8HoBqzexaElP+8e97zRM= -github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.2.7/go.mod h1:MtHMOMSvnNeeu3F5WP30eZwSp1qRbxjkT2xor1mb/H4= +github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.3.0 h1:SYNFn4FRwdrh0tWdRBcrVN1T3/QgisV/E68/y+0cda8= +github.com/aws/aws-sdk-go-v2/service/ssmquicksetup v1.3.0/go.mod h1:MtHMOMSvnNeeu3F5WP30eZwSp1qRbxjkT2xor1mb/H4= github.com/aws/aws-sdk-go-v2/service/ssmsap v1.18.6 h1:uJACk0uiWe+s5Y7CWo15ojwRS4uwxBsfjrcG/QxztKo= github.com/aws/aws-sdk-go-v2/service/ssmsap v1.18.6/go.mod h1:v676cxw/KjLk2vM97EL/nrpiX160mY97QErDa2ArdUs= github.com/aws/aws-sdk-go-v2/service/sso v1.24.6 h1:3zu537oLmsPfDMyjnUS2g+F2vITgy5pB74tHI+JBNoM= @@ -517,16 +517,16 @@ github.com/aws/aws-sdk-go-v2/service/taxsettings v1.7.0 h1:NWEjSezAbU7klTwlWJFLh github.com/aws/aws-sdk-go-v2/service/taxsettings v1.7.0/go.mod h1:jHBnwkzXiAFmiNEKEuyBxE+eEqfa1qm7wggL7RTgqHM= github.com/aws/aws-sdk-go-v2/service/timestreaminfluxdb v1.6.6 h1:Ouja3w2uigjuZ5wa7aR0CaHZTe+niXSzUvJS/4E1Wa0= github.com/aws/aws-sdk-go-v2/service/timestreaminfluxdb v1.6.6/go.mod h1:OVSgcDB+hYKLrNiho0Y19pQiOMnth63hprCxzpblayA= -github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.6 h1:AOlSnlkT0ZgJxuMcH8Fes1NBg4xNtKTB3+LF4bzHMII= -github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.6/go.mod h1:UyyUbIDdMO1cGXWA37B/KylPyLrq5kNU1m2E+ojF610= +github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.7 h1:i3Uuh/LLP1Qh3x0qh8i2OnaU+nZ5u3oMwffIrtH7yjc= +github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.29.7/go.mod h1:UyyUbIDdMO1cGXWA37B/KylPyLrq5kNU1m2E+ojF610= github.com/aws/aws-sdk-go-v2/service/transcribe v1.41.6 h1:0uM86aXF1xuNNP94lvMua36AS4/urnnV0JIoZs1hgdM= github.com/aws/aws-sdk-go-v2/service/transcribe v1.41.6/go.mod h1:VdynE2CDkpp9p96Nsy+eFE5PJferzNnjuB1kMcjl0Uk= github.com/aws/aws-sdk-go-v2/service/transfer v1.53.5 h1:xyvVof+cdQogIXJDKJdhJ2dVF/svxrjv4zEP1T9fIV0= github.com/aws/aws-sdk-go-v2/service/transfer v1.53.5/go.mod h1:tjYLu1usUNMh2mMGrahX1ZQd7WSIwqe0O7wGd5Gq4aU= github.com/aws/aws-sdk-go-v2/service/verifiedpermissions v1.20.2 h1:ERPfTAJIbZxwDJKCPvsZacGqodEx4dj9K2OC4sDnrCk= github.com/aws/aws-sdk-go-v2/service/verifiedpermissions v1.20.2/go.mod h1:f4UivZUJxaK4N/UIJXQgpirh3yWsNxMzWsrk0sUvZrk= -github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.8 h1:a7UROHRTNSQrJ2h4BETtfACcPjWuZPoPpeMBmxS7K00= -github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.8/go.mod h1:X0X0qZ4S3qpAm8NfTdW4lacTf2VusIV3sbwF+CN3d4k= +github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.9 h1:GRU6B7siT+PRSIS9JmOFLugE90//aCQ9jOfk09wxI+g= +github.com/aws/aws-sdk-go-v2/service/vpclattice v1.12.9/go.mod h1:X0X0qZ4S3qpAm8NfTdW4lacTf2VusIV3sbwF+CN3d4k= github.com/aws/aws-sdk-go-v2/service/waf v1.25.6 h1:FgT+D2lZj5PP1enlTMg4i7yHPCDjk7css+GEQbkwHiI= github.com/aws/aws-sdk-go-v2/service/waf v1.25.6/go.mod h1:CdOaduoCFkcCa1F3V0FfKsRflqwjuuctnt0eyDQlt0Y= github.com/aws/aws-sdk-go-v2/service/wafregional v1.25.6 h1:ZAVHrgxHso3D6ZrWYNW8ZYpWei5YRdMNu4teYal/B4c= @@ -537,12 +537,12 @@ github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.6 h1:gRlAqT37MBjotuhc github.com/aws/aws-sdk-go-v2/service/wellarchitected v1.34.6/go.mod h1:5/10vqAzXC/biuHdbkYAULETemq0j+7fafDQyqUjKRA= github.com/aws/aws-sdk-go-v2/service/worklink v1.23.2 h1:VN3Qydtdl3UlJRHVxQxSP1d8I5gtvT5zdaCCAfZST7Y= github.com/aws/aws-sdk-go-v2/service/worklink v1.23.2/go.mod h1:Z3RLpIq4q49syd921XdsKeD584kPu89iKTEjluh7908= -github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.0 h1:7rGPAEvw9t7crYz4C4n80GHLe9O8XxbmeBywWp7iCVw= -github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.0/go.mod h1:ZKS7KNf+/ecd+vfEVnfee4ZKg09jrB6/14Qnf79Y+so= +github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.1 h1:c974+tQIdxp/CoNWQfG6JWc90dgZDnup8/k8M0aR4+U= +github.com/aws/aws-sdk-go-v2/service/workspaces v1.50.1/go.mod h1:ZKS7KNf+/ecd+vfEVnfee4ZKg09jrB6/14Qnf79Y+so= github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.25.0 h1:H5JtZI/cuMrzvzl44q542vCr3w3EHlYl5+0ac9MdAik= github.com/aws/aws-sdk-go-v2/service/workspacesweb v1.25.0/go.mod h1:NgEGK1Ex63erNYNTWMenNczoi8/nguJvIvobKYp1LQ8= -github.com/aws/aws-sdk-go-v2/service/xray v1.29.6 h1:petUl/lqCEs41/fs28skMHZZsBah5oQk6uHKZSBqApk= -github.com/aws/aws-sdk-go-v2/service/xray v1.29.6/go.mod h1:+wep8ElVmvR0bCsQ1SQWMKhAlA3+Ks0+uitEfYQ8zO8= +github.com/aws/aws-sdk-go-v2/service/xray v1.30.0 h1:3kGcueLqlC3x5LqVWgckz38Kd5pHqpzhVC95beoZVyI= +github.com/aws/aws-sdk-go-v2/service/xray v1.30.0/go.mod h1:+wep8ElVmvR0bCsQ1SQWMKhAlA3+Ks0+uitEfYQ8zO8= github.com/aws/smithy-go v1.22.1 h1:/HPHZQ0g7f4eUeK6HKglFz8uwVfZKgoI25rb/J+dnro= github.com/aws/smithy-go v1.22.1/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/beevik/etree v1.4.1 h1:PmQJDDYahBGNKDcpdX8uPy1xRCwoCGVUiW669MEirVI= From 686686ab8bdb2ef2eb65bd50eaef4a36ebcca803 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 22 Nov 2024 18:11:11 -0500 Subject: [PATCH 074/118] Fix aws_rds_reserved_instance_offering data source --- .../service/rds/reserved_instance_offering_data_source.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/service/rds/reserved_instance_offering_data_source.go b/internal/service/rds/reserved_instance_offering_data_source.go index c973eaccf06..7e0e06484d6 100644 --- a/internal/service/rds/reserved_instance_offering_data_source.go +++ b/internal/service/rds/reserved_instance_offering_data_source.go @@ -81,8 +81,9 @@ func dataSourceReservedOfferingRead(ctx context.Context, d *schema.ResourceData, ProductDescription: aws.String(d.Get("product_description").(string)), } - offering, err := findReservedDBInstancesOffering(ctx, conn, input, tfslices.PredicateTrue[*types.ReservedDBInstancesOffering]()) - + offering, err := findReservedDBInstancesOffering(ctx, conn, input, func(v *types.ReservedDBInstancesOffering) bool { + return aws.ToString(v.ProductDescription) == d.Get("product_description").(string) && aws.ToString(v.DBInstanceClass) == d.Get("db_instance_class").(string) + }) if err != nil { return sdkdiag.AppendFromErr(diags, tfresource.SingularDataSourceFindError("RDS Reserved Instance Offering", err)) } @@ -103,7 +104,6 @@ func dataSourceReservedOfferingRead(ctx context.Context, d *schema.ResourceData, func findReservedDBInstancesOffering(ctx context.Context, conn *rds.Client, input *rds.DescribeReservedDBInstancesOfferingsInput, filter tfslices.Predicate[*types.ReservedDBInstancesOffering]) (*types.ReservedDBInstancesOffering, error) { output, err := findReservedDBInstancesOfferings(ctx, conn, input, filter) - if err != nil { return nil, err } From d216ceec8d90b3db9bb95bb899566e0668c940a4 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 22 Nov 2024 18:15:27 -0500 Subject: [PATCH 075/118] Add changelog --- .changelog/40281.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/40281.txt diff --git a/.changelog/40281.txt b/.changelog/40281.txt new file mode 100644 index 00000000000..a00a2bc0659 --- /dev/null +++ b/.changelog/40281.txt @@ -0,0 +1,3 @@ +```release-note:bug +data-source/aws_rds_reserved_instance_offering: When `product_description` (e.g., "postgresql") is a substring of multiple products, fix `Error: multiple RDS Reserved Instance Offerings matched; use additional constraints to reduce matches to a single RDS Reserved Instance Offering` +``` From 64584619e4673612a56bb6f539f8b939607bd35f Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 22 Nov 2024 18:15:51 -0500 Subject: [PATCH 076/118] Rework tests for existing instances, postgresql --- ...rved_instance_offering_data_source_test.go | 73 +++++++++++++++++-- 1 file changed, 65 insertions(+), 8 deletions(-) diff --git a/internal/service/rds/reserved_instance_offering_data_source_test.go b/internal/service/rds/reserved_instance_offering_data_source_test.go index 2eb343f8f9a..ad1e80cc278 100644 --- a/internal/service/rds/reserved_instance_offering_data_source_test.go +++ b/internal/service/rds/reserved_instance_offering_data_source_test.go @@ -4,6 +4,7 @@ package rds_test import ( + "fmt" "testing" "github.com/hashicorp/terraform-plugin-testing/helper/resource" @@ -11,7 +12,50 @@ import ( "github.com/hashicorp/terraform-provider-aws/names" ) -func TestAccRDSInstanceOffering_basic(t *testing.T) { +const ( + testInstanceClass = "db.r5.large" +) + +func TestAccRDSReservedInstanceOffering_basic(t *testing.T) { + ctx := acctest.Context(t) + dataSourceName := "data.aws_rds_reserved_instance_offering.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + ErrorCheck: acctest.ErrorCheck(t, names.RDSServiceID), + Steps: []resource.TestStep{ + { + Config: testAccReservedInstanceOfferingConfig_basic(testInstanceClass, "postgresql"), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet(dataSourceName, "currency_code"), + resource.TestCheckResourceAttr(dataSourceName, "db_instance_class", testInstanceClass), + resource.TestCheckResourceAttr(dataSourceName, names.AttrDuration, "31536000"), + resource.TestCheckResourceAttrSet(dataSourceName, "fixed_price"), + resource.TestCheckResourceAttr(dataSourceName, "multi_az", acctest.CtFalse), + resource.TestCheckResourceAttrSet(dataSourceName, "offering_id"), + resource.TestCheckResourceAttr(dataSourceName, "offering_type", "All Upfront"), + resource.TestCheckResourceAttr(dataSourceName, "product_description", "postgresql"), + ), + }, + { + Config: testAccReservedInstanceOfferingConfig_basic(testInstanceClass, "aurora-postgresql"), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet(dataSourceName, "currency_code"), + resource.TestCheckResourceAttr(dataSourceName, "db_instance_class", testInstanceClass), + resource.TestCheckResourceAttr(dataSourceName, names.AttrDuration, "31536000"), + resource.TestCheckResourceAttrSet(dataSourceName, "fixed_price"), + resource.TestCheckResourceAttr(dataSourceName, "multi_az", acctest.CtFalse), + resource.TestCheckResourceAttrSet(dataSourceName, "offering_id"), + resource.TestCheckResourceAttr(dataSourceName, "offering_type", "All Upfront"), + resource.TestCheckResourceAttr(dataSourceName, "product_description", "aurora-postgresql"), + ), + }, + }, + }) +} + +func TestAccRDSReservedInstanceOffering_mysql(t *testing.T) { ctx := acctest.Context(t) dataSourceName := "data.aws_rds_reserved_instance_offering.test" @@ -21,10 +65,10 @@ func TestAccRDSInstanceOffering_basic(t *testing.T) { ErrorCheck: acctest.ErrorCheck(t, names.RDSServiceID), Steps: []resource.TestStep{ { - Config: testAccInstanceOfferingConfig_basic(), + Config: testAccReservedInstanceOfferingConfig_basic(testInstanceClass, "mysql"), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet(dataSourceName, "currency_code"), - resource.TestCheckResourceAttr(dataSourceName, "db_instance_class", "db.t2.micro"), + resource.TestCheckResourceAttr(dataSourceName, "db_instance_class", testInstanceClass), resource.TestCheckResourceAttr(dataSourceName, names.AttrDuration, "31536000"), resource.TestCheckResourceAttrSet(dataSourceName, "fixed_price"), resource.TestCheckResourceAttr(dataSourceName, "multi_az", acctest.CtFalse), @@ -33,18 +77,31 @@ func TestAccRDSInstanceOffering_basic(t *testing.T) { resource.TestCheckResourceAttr(dataSourceName, "product_description", "mysql"), ), }, + { + Config: testAccReservedInstanceOfferingConfig_basic(testInstanceClass, "aurora-mysql"), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet(dataSourceName, "currency_code"), + resource.TestCheckResourceAttr(dataSourceName, "db_instance_class", testInstanceClass), + resource.TestCheckResourceAttr(dataSourceName, names.AttrDuration, "31536000"), + resource.TestCheckResourceAttrSet(dataSourceName, "fixed_price"), + resource.TestCheckResourceAttr(dataSourceName, "multi_az", acctest.CtFalse), + resource.TestCheckResourceAttrSet(dataSourceName, "offering_id"), + resource.TestCheckResourceAttr(dataSourceName, "offering_type", "All Upfront"), + resource.TestCheckResourceAttr(dataSourceName, "product_description", "aurora-mysql"), + ), + }, }, }) } -func testAccInstanceOfferingConfig_basic() string { - return ` +func testAccReservedInstanceOfferingConfig_basic(class, desc string) string { + return fmt.Sprintf(` data "aws_rds_reserved_instance_offering" "test" { - db_instance_class = "db.t2.micro" + db_instance_class = %[1]q duration = 31536000 multi_az = false offering_type = "All Upfront" - product_description = "mysql" + product_description = %[2]q } -` +`, class, desc) } From 5027bf3635069743a26cfaacc432cb1eb6687d40 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 22 Nov 2024 18:16:56 -0500 Subject: [PATCH 077/118] Whitespace --- .changelog/40281.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changelog/40281.txt b/.changelog/40281.txt index a00a2bc0659..05356583127 100644 --- a/.changelog/40281.txt +++ b/.changelog/40281.txt @@ -1,3 +1,3 @@ ```release-note:bug -data-source/aws_rds_reserved_instance_offering: When `product_description` (e.g., "postgresql") is a substring of multiple products, fix `Error: multiple RDS Reserved Instance Offerings matched; use additional constraints to reduce matches to a single RDS Reserved Instance Offering` +data-source/aws_rds_reserved_instance_offering: When `product_description` (e.g., "postgresql") is a substring of multiple products, fix `Error: multiple RDS Reserved Instance Offerings matched; use additional constraints to reduce matches to a single RDS Reserved Instance Offering` ``` From 9e2c74694ccf906520cb1dfb5a0b5f6a75308483 Mon Sep 17 00:00:00 2001 From: Dirk Avery Date: Fri, 22 Nov 2024 18:24:47 -0500 Subject: [PATCH 078/118] Add code comment --- internal/service/rds/reserved_instance_offering_data_source.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/service/rds/reserved_instance_offering_data_source.go b/internal/service/rds/reserved_instance_offering_data_source.go index 7e0e06484d6..a9a0cd606d4 100644 --- a/internal/service/rds/reserved_instance_offering_data_source.go +++ b/internal/service/rds/reserved_instance_offering_data_source.go @@ -81,6 +81,9 @@ func dataSourceReservedOfferingRead(ctx context.Context, d *schema.ResourceData, ProductDescription: aws.String(d.Get("product_description").(string)), } + // A filter is necessary because the API returns all products where the product description contains + // the input product description. Sending "mysql" will return "mysql" *and* "aurora-mysql" offerings, + // causing an error: multiple RDS Reserved Instance Offerings matched offering, err := findReservedDBInstancesOffering(ctx, conn, input, func(v *types.ReservedDBInstancesOffering) bool { return aws.ToString(v.ProductDescription) == d.Get("product_description").(string) && aws.ToString(v.DBInstanceClass) == d.Get("db_instance_class").(string) }) From 44e7d85809a5ac5bc303a513cd03a828277f409d Mon Sep 17 00:00:00 2001 From: changelogbot Date: Sun, 24 Nov 2024 15:18:07 +0000 Subject: [PATCH 079/118] Update CHANGELOG.md for #40281 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c795e5f1a7..bd6b4697505 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ NOTES: BUG FIXES: +* data-source/aws_rds_reserved_instance_offering: When `product_description` (e.g., "postgresql") is a substring of multiple products, fix `Error: multiple RDS Reserved Instance Offerings matched; use additional constraints to reduce matches to a single RDS Reserved Instance Offering` ([#40281](https://github.com/hashicorp/terraform-provider-aws/issues/40281)) * provider: Suppress `Warning: AWS account ID not found for provider` when `skip_requesting_account_id` is `true` ([#40264](https://github.com/hashicorp/terraform-provider-aws/issues/40264)) * resource/aws_batch_job_definition: Fix crash when specifying `eksProperties` or `ecsProperties` block ([#40172](https://github.com/hashicorp/terraform-provider-aws/issues/40172)) * resource/aws_chatbot_slack_channel_configuration: Fix inconsistent provider result when order of `sns_topic_arns`changes ([#40253](https://github.com/hashicorp/terraform-provider-aws/issues/40253)) From d5ac8747d7d20cc60debc1dee9101b313550e732 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Sun, 24 Nov 2024 15:54:46 -0500 Subject: [PATCH 080/118] r/aws_memorydb_acl: Standardize. --- internal/service/memorydb/acl.go | 179 ++++++++++++++----- internal/service/memorydb/acl_data_source.go | 3 +- internal/service/memorydb/acl_test.go | 4 - internal/service/memorydb/exports_test.go | 2 + internal/service/memorydb/find.go | 21 --- internal/service/memorydb/status.go | 17 -- internal/service/memorydb/wait.go | 31 ---- 7 files changed, 140 insertions(+), 117 deletions(-) diff --git a/internal/service/memorydb/acl.go b/internal/service/memorydb/acl.go index 18e883b3ca9..4c590cf78a3 100644 --- a/internal/service/memorydb/acl.go +++ b/internal/service/memorydb/acl.go @@ -6,12 +6,14 @@ package memorydb import ( "context" "log" + "time" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/memorydb" awstypes "github.com/aws/aws-sdk-go-v2/service/memorydb/types" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/id" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" "github.com/hashicorp/terraform-provider-aws/internal/conns" @@ -81,7 +83,6 @@ func resourceACL() *schema.Resource { func resourceACLCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) name := create.Name(d.Get(names.AttrName).(string), d.Get(names.AttrNamePrefix).(string)) @@ -94,25 +95,48 @@ func resourceACLCreate(ctx context.Context, d *schema.ResourceData, meta interfa input.UserNames = flex.ExpandStringValueSet(v.(*schema.Set)) } - log.Printf("[DEBUG] Creating MemoryDB ACL: %+v", input) _, err := conn.CreateACL(ctx, input) if err != nil { return sdkdiag.AppendErrorf(diags, "creating MemoryDB ACL (%s): %s", name, err) } - if err := waitACLActive(ctx, conn, name); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB ACL (%s) to be created: %s", name, err) - } - d.SetId(name) + if _, err := waitACLActive(ctx, conn, d.Id()); err != nil { + return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB ACL (%s) create: %s", d.Id(), err) + } + return append(diags, resourceACLRead(ctx, d, meta)...) } -func resourceACLUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { +func resourceACLRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics + conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) + + acl, err := findACLByName(ctx, conn, d.Id()) + if !d.IsNewResource() && tfresource.NotFound(err) { + log.Printf("[WARN] MemoryDB ACL (%s) not found, removing from state", d.Id()) + d.SetId("") + return diags + } + + if err != nil { + return sdkdiag.AppendErrorf(diags, "reading MemoryDB ACL (%s): %s", d.Id(), err) + } + + d.Set(names.AttrARN, acl.ARN) + d.Set("minimum_engine_version", acl.MinimumEngineVersion) + d.Set(names.AttrName, acl.Name) + d.Set(names.AttrNamePrefix, create.NamePrefixFromName(aws.ToString(acl.Name))) + d.Set("user_names", acl.UserNames) + + return diags +} + +func resourceACLUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + var diags diag.Diagnostics conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) if d.HasChangesExcept(names.AttrTags, names.AttrTagsAll) { @@ -121,9 +145,9 @@ func resourceACLUpdate(ctx context.Context, d *schema.ResourceData, meta interfa } o, n := d.GetChange("user_names") - oldSet, newSet := o.(*schema.Set), n.(*schema.Set) + os, ns := o.(*schema.Set), n.(*schema.Set) - if toAdd := newSet.Difference(oldSet); toAdd.Len() > 0 { + if toAdd := ns.Difference(os); toAdd.Len() > 0 { input.UserNamesToAdd = flex.ExpandStringValueSet(toAdd) } @@ -134,9 +158,10 @@ func resourceACLUpdate(ctx context.Context, d *schema.ResourceData, meta interfa // InvalidParameterValueException. To work around this, filter out any // users that have been reported as no longer being in the group. - initialState, err := FindACLByName(ctx, conn, d.Id()) + initialState, err := findACLByName(ctx, conn, d.Id()) + if err != nil { - return sdkdiag.AppendErrorf(diags, "getting MemoryDB ACL (%s) current state: %s", d.Id(), err) + return sdkdiag.AppendErrorf(diags, "reading MemoryDB ACL (%s): %s", d.Id(), err) } initialUserNames := map[string]struct{}{} @@ -144,7 +169,7 @@ func resourceACLUpdate(ctx context.Context, d *schema.ResourceData, meta interfa initialUserNames[userName] = struct{}{} } - for _, v := range oldSet.Difference(newSet).List() { + for _, v := range os.Difference(ns).List() { userNameToRemove := v.(string) _, userNameStillPresent := initialUserNames[userNameToRemove] @@ -154,15 +179,14 @@ func resourceACLUpdate(ctx context.Context, d *schema.ResourceData, meta interfa } if len(input.UserNamesToAdd) > 0 || len(input.UserNamesToRemove) > 0 { - log.Printf("[DEBUG] Updating MemoryDB ACL (%s)", d.Id()) - _, err := conn.UpdateACL(ctx, input) + if err != nil { return sdkdiag.AppendErrorf(diags, "updating MemoryDB ACL (%s): %s", d.Id(), err) } - if err := waitACLActive(ctx, conn, d.Id()); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB ACL (%s) to be modified: %s", d.Id(), err) + if _, err := waitACLActive(ctx, conn, d.Id()); err != nil { + return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB ACL (%s) update: %s", d.Id(), err) } } } @@ -170,53 +194,124 @@ func resourceACLUpdate(ctx context.Context, d *schema.ResourceData, meta interfa return append(diags, resourceACLRead(ctx, d, meta)...) } -func resourceACLRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { +func resourceACLDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - acl, err := FindACLByName(ctx, conn, d.Id()) + log.Printf("[DEBUG] Deleting MemoryDB ACL: (%s)", d.Id()) + _, err := conn.DeleteACL(ctx, &memorydb.DeleteACLInput{ + ACLName: aws.String(d.Id()), + }) - if !d.IsNewResource() && tfresource.NotFound(err) { - log.Printf("[WARN] MemoryDB ACL (%s) not found, removing from state", d.Id()) - d.SetId("") + if errs.IsA[*awstypes.ACLNotFoundFault](err) { return diags } if err != nil { - return sdkdiag.AppendErrorf(diags, "reading MemoryDB ACL (%s): %s", d.Id(), err) + return sdkdiag.AppendErrorf(diags, "deleting MemoryDB ACL (%s): %s", d.Id(), err) } - d.Set(names.AttrARN, acl.ARN) - d.Set("minimum_engine_version", acl.MinimumEngineVersion) - d.Set(names.AttrName, acl.Name) - d.Set(names.AttrNamePrefix, create.NamePrefixFromName(aws.ToString(acl.Name))) - d.Set("user_names", flex.FlattenStringValueSet(acl.UserNames)) + if _, err := waitACLDeleted(ctx, conn, d.Id()); err != nil { + return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB ACL (%s) delete: %s", d.Id(), err) + } return diags } -func resourceACLDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - var diags diag.Diagnostics +func findACLByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.ACL, error) { + input := &memorydb.DescribeACLsInput{ + ACLName: aws.String(name), + } - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) + return findACL(ctx, conn, input) +} - log.Printf("[DEBUG] Deleting MemoryDB ACL: (%s)", d.Id()) - _, err := conn.DeleteACL(ctx, &memorydb.DeleteACLInput{ - ACLName: aws.String(d.Id()), - }) +func findACL(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeACLsInput) (*awstypes.ACL, error) { + output, err := findACLs(ctx, conn, input) - if errs.IsA[*awstypes.ACLNotFoundFault](err) { - return diags + if err != nil { + return nil, err } - if err != nil { - return sdkdiag.AppendErrorf(diags, "deleting MemoryDB ACL (%s): %s", d.Id(), err) + return tfresource.AssertSingleValueResult(output) +} + +func findACLs(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeACLsInput) ([]awstypes.ACL, error) { + var output []awstypes.ACL + + pages := memorydb.NewDescribeACLsPaginator(conn, input) + for pages.HasMorePages() { + page, err := pages.NextPage(ctx) + + if errs.IsA[*awstypes.ACLNotFoundFault](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: input, + } + } + + if err != nil { + return nil, err + } + + output = append(output, page.ACLs...) } - if err := waitACLDeleted(ctx, conn, d.Id()); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB ACL (%s) to be deleted: %s", d.Id(), err) + return output, nil +} + +func statusACL(ctx context.Context, conn *memorydb.Client, name string) retry.StateRefreshFunc { + return func() (interface{}, string, error) { + output, err := findACLByName(ctx, conn, name) + + if tfresource.NotFound(err) { + return nil, "", nil + } + + if err != nil { + return nil, "", err + } + + return output, aws.ToString(output.Status), nil } +} - return diags +func waitACLActive(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.ACL, error) { + const ( + timeout = 5 * time.Minute + ) + stateConf := &retry.StateChangeConf{ + Pending: []string{aclStatusCreating, aclStatusModifying}, + Target: []string{aclStatusActive}, + Refresh: statusACL(ctx, conn, name), + Timeout: timeout, + } + + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*awstypes.ACL); ok { + return output, err + } + + return nil, err +} + +func waitACLDeleted(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.ACL, error) { + const ( + timeout = 5 * time.Minute + ) + stateConf := &retry.StateChangeConf{ + Pending: []string{aclStatusDeleting}, + Target: []string{}, + Refresh: statusACL(ctx, conn, name), + Timeout: timeout, + } + + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*awstypes.ACL); ok { + return output, err + } + + return nil, err } diff --git a/internal/service/memorydb/acl_data_source.go b/internal/service/memorydb/acl_data_source.go index 5166b31bde5..33f9b288b2e 100644 --- a/internal/service/memorydb/acl_data_source.go +++ b/internal/service/memorydb/acl_data_source.go @@ -53,14 +53,13 @@ func dataSourceACLRead(ctx context.Context, d *schema.ResourceData, meta interfa name := d.Get(names.AttrName).(string) - acl, err := FindACLByName(ctx, conn, name) + acl, err := findACLByName(ctx, conn, name) if err != nil { return sdkdiag.AppendFromErr(diags, tfresource.SingularDataSourceFindError("MemoryDB ACL", err)) } d.SetId(aws.ToString(acl.Name)) - d.Set(names.AttrARN, acl.ARN) d.Set("minimum_engine_version", acl.MinimumEngineVersion) d.Set(names.AttrName, acl.Name) diff --git a/internal/service/memorydb/acl_test.go b/internal/service/memorydb/acl_test.go index 8c7b28209de..f58b7b50d17 100644 --- a/internal/service/memorydb/acl_test.go +++ b/internal/service/memorydb/acl_test.go @@ -328,10 +328,6 @@ func testAccCheckACLExists(ctx context.Context, n string) resource.TestCheckFunc return fmt.Errorf("Not found: %s", n) } - if rs.Primary.ID == "" { - return fmt.Errorf("No MemoryDB ACL ID is set") - } - conn := acctest.Provider.Meta().(*conns.AWSClient).MemoryDBClient(ctx) _, err := tfmemorydb.FindACLByName(ctx, conn, rs.Primary.Attributes[names.AttrName]) diff --git a/internal/service/memorydb/exports_test.go b/internal/service/memorydb/exports_test.go index 390d77dc827..26895a2930c 100644 --- a/internal/service/memorydb/exports_test.go +++ b/internal/service/memorydb/exports_test.go @@ -11,4 +11,6 @@ var ( ResourceSnapshot = resourceSnapshot ResourceSubnetGroup = resourceSubnetGroup ResourceUser = resourceUser + + FindACLByName = findACLByName ) diff --git a/internal/service/memorydb/find.go b/internal/service/memorydb/find.go index d99be4281ec..801c8bc33a9 100644 --- a/internal/service/memorydb/find.go +++ b/internal/service/memorydb/find.go @@ -14,27 +14,6 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/tfresource" ) -func FindACLByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.ACL, error) { - input := memorydb.DescribeACLsInput{ - ACLName: aws.String(name), - } - - output, err := conn.DescribeACLs(ctx, &input) - - if errs.IsA[*awstypes.ACLNotFoundFault](err) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: input, - } - } - - if err != nil { - return nil, err - } - - return tfresource.AssertSingleValueResult(output.ACLs) -} - func FindClusterByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.Cluster, error) { input := memorydb.DescribeClustersInput{ ClusterName: aws.String(name), diff --git a/internal/service/memorydb/status.go b/internal/service/memorydb/status.go index ddcb9175757..1c96f021c88 100644 --- a/internal/service/memorydb/status.go +++ b/internal/service/memorydb/status.go @@ -12,23 +12,6 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/tfresource" ) -// statusACL fetches the MemoryDB ACL and its status. -func statusACL(ctx context.Context, conn *memorydb.Client, aclName string) retry.StateRefreshFunc { - return func() (interface{}, string, error) { - acl, err := FindACLByName(ctx, conn, aclName) - - if tfresource.NotFound(err) { - return nil, "", nil - } - - if err != nil { - return nil, "", err - } - - return acl, aws.ToString(acl.Status), nil - } -} - // statusCluster fetches the MemoryDB Cluster and its status. func statusCluster(ctx context.Context, conn *memorydb.Client, clusterName string) retry.StateRefreshFunc { return func() (interface{}, string, error) { diff --git a/internal/service/memorydb/wait.go b/internal/service/memorydb/wait.go index e36670d928b..ed6d14785d8 100644 --- a/internal/service/memorydb/wait.go +++ b/internal/service/memorydb/wait.go @@ -12,9 +12,6 @@ import ( ) const ( - aclActiveTimeout = 5 * time.Minute - aclDeletedTimeout = 5 * time.Minute - clusterAvailableTimeout = 120 * time.Minute clusterDeletedTimeout = 120 * time.Minute @@ -29,34 +26,6 @@ const ( snapshotDeletedTimeout = 120 * time.Minute ) -// waitACLActive waits for MemoryDB ACL to reach an active state after modifications. -func waitACLActive(ctx context.Context, conn *memorydb.Client, aclId string) error { - stateConf := &retry.StateChangeConf{ - Pending: []string{aclStatusCreating, aclStatusModifying}, - Target: []string{aclStatusActive}, - Refresh: statusACL(ctx, conn, aclId), - Timeout: aclActiveTimeout, - } - - _, err := stateConf.WaitForStateContext(ctx) - - return err -} - -// waitACLDeleted waits for MemoryDB ACL to be deleted. -func waitACLDeleted(ctx context.Context, conn *memorydb.Client, aclId string) error { - stateConf := &retry.StateChangeConf{ - Pending: []string{aclStatusDeleting}, - Target: []string{}, - Refresh: statusACL(ctx, conn, aclId), - Timeout: aclDeletedTimeout, - } - - _, err := stateConf.WaitForStateContext(ctx) - - return err -} - // waitClusterAvailable waits for MemoryDB Cluster to reach an active state after modifications. func waitClusterAvailable(ctx context.Context, conn *memorydb.Client, clusterId string, timeout time.Duration) error { stateConf := &retry.StateChangeConf{ From fd2dc10579583969741f72345c349b104c0de478 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Sun, 24 Nov 2024 16:00:59 -0500 Subject: [PATCH 081/118] d/aws_memorydb_acl: Transparent tagging. --- internal/service/memorydb/acl_data_source.go | 17 ++--------------- .../service/memorydb/service_package_gen.go | 3 +++ 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/internal/service/memorydb/acl_data_source.go b/internal/service/memorydb/acl_data_source.go index 33f9b288b2e..6ecfded6eb1 100644 --- a/internal/service/memorydb/acl_data_source.go +++ b/internal/service/memorydb/acl_data_source.go @@ -11,13 +11,13 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" - "github.com/hashicorp/terraform-provider-aws/internal/flex" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/names" ) // @SDKDataSource("aws_memorydb_acl", name="ACL") +// @Tags(identifierAttribute="arn") func dataSourceACL() *schema.Resource { return &schema.Resource{ ReadWithoutTimeout: dataSourceACLRead, @@ -47,12 +47,9 @@ func dataSourceACL() *schema.Resource { func dataSourceACLRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig(ctx) name := d.Get(names.AttrName).(string) - acl, err := findACLByName(ctx, conn, name) if err != nil { @@ -63,17 +60,7 @@ func dataSourceACLRead(ctx context.Context, d *schema.ResourceData, meta interfa d.Set(names.AttrARN, acl.ARN) d.Set("minimum_engine_version", acl.MinimumEngineVersion) d.Set(names.AttrName, acl.Name) - d.Set("user_names", flex.FlattenStringValueSet(acl.UserNames)) - - tags, err := listTags(ctx, conn, d.Get(names.AttrARN).(string)) - - if err != nil { - return sdkdiag.AppendErrorf(diags, "listing tags for MemoryDB ACL (%s): %s", d.Id(), err) - } - - if err := d.Set(names.AttrTags, tags.IgnoreAWS().IgnoreConfig(ignoreTagsConfig).Map()); err != nil { - return sdkdiag.AppendErrorf(diags, "setting tags: %s", err) - } + d.Set("user_names", acl.UserNames) return diags } diff --git a/internal/service/memorydb/service_package_gen.go b/internal/service/memorydb/service_package_gen.go index 6792524af95..1913cd5c1f0 100644 --- a/internal/service/memorydb/service_package_gen.go +++ b/internal/service/memorydb/service_package_gen.go @@ -28,6 +28,9 @@ func (p *servicePackage) SDKDataSources(ctx context.Context) []*types.ServicePac Factory: dataSourceACL, TypeName: "aws_memorydb_acl", Name: "ACL", + Tags: &types.ServicePackageResourceTags{ + IdentifierAttribute: names.AttrARN, + }, }, { Factory: dataSourceCluster, From b8722a1e0ce1cc98dff931dacc715a761e737e55 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Sun, 24 Nov 2024 16:32:57 -0500 Subject: [PATCH 082/118] r/aws_memorydb_cluster: Standardize. --- internal/service/memorydb/cluster.go | 763 +++++++++++------- .../service/memorydb/cluster_data_source.go | 2 +- internal/service/memorydb/exports_test.go | 3 +- internal/service/memorydb/find.go | 22 - internal/service/memorydb/status.go | 60 -- internal/service/memorydb/wait.go | 65 -- 6 files changed, 462 insertions(+), 453 deletions(-) diff --git a/internal/service/memorydb/cluster.go b/internal/service/memorydb/cluster.go index 08ff6d35464..31fbae011db 100644 --- a/internal/service/memorydb/cluster.go +++ b/internal/service/memorydb/cluster.go @@ -15,6 +15,7 @@ import ( awstypes "github.com/aws/aws-sdk-go-v2/service/memorydb/types" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/id" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" "github.com/hashicorp/terraform-provider-aws/internal/conns" @@ -23,6 +24,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" "github.com/hashicorp/terraform-provider-aws/internal/flex" + tfslices "github.com/hashicorp/terraform-provider-aws/internal/slices" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/internal/verify" @@ -43,219 +45,221 @@ func resourceCluster() *schema.Resource { }, Timeouts: &schema.ResourceTimeout{ - Create: schema.DefaultTimeout(clusterAvailableTimeout), - Update: schema.DefaultTimeout(clusterAvailableTimeout), - Delete: schema.DefaultTimeout(clusterDeletedTimeout), + Create: schema.DefaultTimeout(120 * time.Minute), + Update: schema.DefaultTimeout(120 * time.Minute), + Delete: schema.DefaultTimeout(120 * time.Minute), }, CustomizeDiff: verify.SetTagsDiff, - Schema: map[string]*schema.Schema{ - "acl_name": { - Type: schema.TypeString, - Required: true, - }, - names.AttrARN: { - Type: schema.TypeString, - Computed: true, - }, - names.AttrAutoMinorVersionUpgrade: { - Type: schema.TypeBool, - Optional: true, - Default: true, - ForceNew: true, - }, - "cluster_endpoint": endpointSchema(), - "data_tiering": { - Type: schema.TypeBool, - ForceNew: true, - Optional: true, - Default: false, - }, - names.AttrDescription: { - Type: schema.TypeString, - Optional: true, - Default: "Managed by Terraform", - }, - "engine_patch_version": { - Type: schema.TypeString, - Computed: true, - }, - names.AttrEngine: { - Type: schema.TypeString, - Optional: true, - Computed: true, - ValidateDiagFunc: enum.Validate[clusterEngine](), - }, - names.AttrEngineVersion: { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - "final_snapshot_name": { - Type: schema.TypeString, - Optional: true, - ValidateFunc: validateResourceName(snapshotNameMaxLength), - }, - names.AttrKMSKeyARN: { - // The API will accept an ID, but return the ARN on every read. - // For the sake of consistency, force everyone to use ARN-s. - // To prevent confusion, the attribute is suffixed _arn rather - // than the _id implied by the API. - Type: schema.TypeString, - Optional: true, - ForceNew: true, - ValidateFunc: verify.ValidARN, - }, - "maintenance_window": { - Type: schema.TypeString, - Optional: true, - Computed: true, - ValidateFunc: verify.ValidOnceAWeekWindowFormat, - }, - names.AttrName: { - Type: schema.TypeString, - Optional: true, - Computed: true, - ForceNew: true, - ConflictsWith: []string{names.AttrNamePrefix}, - ValidateFunc: validateResourceName(clusterNameMaxLength), - }, - names.AttrNamePrefix: { - Type: schema.TypeString, - Optional: true, - Computed: true, - ForceNew: true, - ConflictsWith: []string{names.AttrName}, - ValidateFunc: validateResourceNamePrefix(clusterNameMaxLength - id.UniqueIDSuffixLength), - }, - "node_type": { - Type: schema.TypeString, - Required: true, - }, - "num_replicas_per_shard": { - Type: schema.TypeInt, - Optional: true, - Default: 1, - ValidateFunc: validation.IntBetween(0, 5), - }, - "num_shards": { - Type: schema.TypeInt, - Optional: true, - Default: 1, - ValidateFunc: validation.IntAtLeast(1), - }, - names.AttrParameterGroupName: { - Type: schema.TypeString, - Optional: true, - Computed: true, - }, - names.AttrPort: { - Type: schema.TypeInt, - Optional: true, - Computed: true, - ForceNew: true, - }, - names.AttrSecurityGroupIDs: { - Type: schema.TypeSet, - Optional: true, - Elem: &schema.Schema{ - Type: schema.TypeString, + SchemaFunc: func() map[string]*schema.Schema { + return map[string]*schema.Schema{ + "acl_name": { + Type: schema.TypeString, + Required: true, }, - }, - "shards": { - Type: schema.TypeSet, - Computed: true, - Set: shardHash, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - names.AttrName: { - Type: schema.TypeString, - Computed: true, - }, - "nodes": { - Type: schema.TypeSet, - Computed: true, - Set: nodeHash, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - names.AttrAvailabilityZone: { - Type: schema.TypeString, - Computed: true, - }, - names.AttrCreateTime: { - Type: schema.TypeString, - Computed: true, - }, - names.AttrEndpoint: endpointSchema(), - names.AttrName: { - Type: schema.TypeString, - Computed: true, + names.AttrARN: { + Type: schema.TypeString, + Computed: true, + }, + names.AttrAutoMinorVersionUpgrade: { + Type: schema.TypeBool, + Optional: true, + Default: true, + ForceNew: true, + }, + "cluster_endpoint": endpointSchema(), + "data_tiering": { + Type: schema.TypeBool, + ForceNew: true, + Optional: true, + Default: false, + }, + names.AttrDescription: { + Type: schema.TypeString, + Optional: true, + Default: "Managed by Terraform", + }, + "engine_patch_version": { + Type: schema.TypeString, + Computed: true, + }, + names.AttrEngine: { + Type: schema.TypeString, + Optional: true, + Computed: true, + ValidateDiagFunc: enum.Validate[clusterEngine](), + }, + names.AttrEngineVersion: { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + "final_snapshot_name": { + Type: schema.TypeString, + Optional: true, + ValidateFunc: validateResourceName(snapshotNameMaxLength), + }, + names.AttrKMSKeyARN: { + // The API will accept an ID, but return the ARN on every read. + // For the sake of consistency, force everyone to use ARN-s. + // To prevent confusion, the attribute is suffixed _arn rather + // than the _id implied by the API. + Type: schema.TypeString, + Optional: true, + ForceNew: true, + ValidateFunc: verify.ValidARN, + }, + "maintenance_window": { + Type: schema.TypeString, + Optional: true, + Computed: true, + ValidateFunc: verify.ValidOnceAWeekWindowFormat, + }, + names.AttrName: { + Type: schema.TypeString, + Optional: true, + Computed: true, + ForceNew: true, + ConflictsWith: []string{names.AttrNamePrefix}, + ValidateFunc: validateResourceName(clusterNameMaxLength), + }, + names.AttrNamePrefix: { + Type: schema.TypeString, + Optional: true, + Computed: true, + ForceNew: true, + ConflictsWith: []string{names.AttrName}, + ValidateFunc: validateResourceNamePrefix(clusterNameMaxLength - id.UniqueIDSuffixLength), + }, + "node_type": { + Type: schema.TypeString, + Required: true, + }, + "num_replicas_per_shard": { + Type: schema.TypeInt, + Optional: true, + Default: 1, + ValidateFunc: validation.IntBetween(0, 5), + }, + "num_shards": { + Type: schema.TypeInt, + Optional: true, + Default: 1, + ValidateFunc: validation.IntAtLeast(1), + }, + names.AttrParameterGroupName: { + Type: schema.TypeString, + Optional: true, + Computed: true, + }, + names.AttrPort: { + Type: schema.TypeInt, + Optional: true, + Computed: true, + ForceNew: true, + }, + names.AttrSecurityGroupIDs: { + Type: schema.TypeSet, + Optional: true, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "shards": { + Type: schema.TypeSet, + Computed: true, + Set: shardHash, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + names.AttrName: { + Type: schema.TypeString, + Computed: true, + }, + "nodes": { + Type: schema.TypeSet, + Computed: true, + Set: nodeHash, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + names.AttrAvailabilityZone: { + Type: schema.TypeString, + Computed: true, + }, + names.AttrCreateTime: { + Type: schema.TypeString, + Computed: true, + }, + names.AttrEndpoint: endpointSchema(), + names.AttrName: { + Type: schema.TypeString, + Computed: true, + }, }, }, }, - }, - "num_nodes": { - Type: schema.TypeInt, - Computed: true, - }, - "slots": { - Type: schema.TypeString, - Computed: true, + "num_nodes": { + Type: schema.TypeInt, + Computed: true, + }, + "slots": { + Type: schema.TypeString, + Computed: true, + }, }, }, }, - }, - "snapshot_arns": { - Type: schema.TypeList, - Optional: true, - ForceNew: true, - ConflictsWith: []string{"snapshot_name"}, - Elem: &schema.Schema{ - Type: schema.TypeString, - ValidateFunc: validation.All( - verify.ValidARN, - validation.StringDoesNotContainAny(","), - ), + "snapshot_arns": { + Type: schema.TypeList, + Optional: true, + ForceNew: true, + ConflictsWith: []string{"snapshot_name"}, + Elem: &schema.Schema{ + Type: schema.TypeString, + ValidateFunc: validation.All( + verify.ValidARN, + validation.StringDoesNotContainAny(","), + ), + }, }, - }, - "snapshot_name": { - Type: schema.TypeString, - Optional: true, - ForceNew: true, - ConflictsWith: []string{"snapshot_arns"}, - }, - "snapshot_retention_limit": { - Type: schema.TypeInt, - Computed: true, - Optional: true, - ValidateFunc: validation.IntBetween(0, 35), - }, - "snapshot_window": { - Type: schema.TypeString, - Optional: true, - Computed: true, - ValidateFunc: verify.ValidOnceADayWindowFormat, - }, - names.AttrSNSTopicARN: { - Type: schema.TypeString, - Optional: true, - ValidateFunc: verify.ValidARN, - }, - "subnet_group_name": { - Type: schema.TypeString, - Optional: true, - Computed: true, - ForceNew: true, - }, - names.AttrTags: tftags.TagsSchema(), - names.AttrTagsAll: tftags.TagsSchemaComputed(), - "tls_enabled": { - Type: schema.TypeBool, - Optional: true, - Default: true, - ForceNew: true, - }, + "snapshot_name": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + ConflictsWith: []string{"snapshot_arns"}, + }, + "snapshot_retention_limit": { + Type: schema.TypeInt, + Computed: true, + Optional: true, + ValidateFunc: validation.IntBetween(0, 35), + }, + "snapshot_window": { + Type: schema.TypeString, + Optional: true, + Computed: true, + ValidateFunc: verify.ValidOnceADayWindowFormat, + }, + names.AttrSNSTopicARN: { + Type: schema.TypeString, + Optional: true, + ValidateFunc: verify.ValidARN, + }, + "subnet_group_name": { + Type: schema.TypeString, + Optional: true, + Computed: true, + ForceNew: true, + }, + names.AttrTags: tftags.TagsSchema(), + names.AttrTagsAll: tftags.TagsSchemaComputed(), + "tls_enabled": { + Type: schema.TypeBool, + Optional: true, + Default: true, + ForceNew: true, + }, + } }, } } @@ -281,7 +285,6 @@ func endpointSchema() *schema.Schema { func resourceClusterCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) name := create.Name(d.Get(names.AttrName).(string), d.Get(names.AttrNamePrefix).(string)) @@ -333,14 +336,11 @@ func resourceClusterCreate(ctx context.Context, d *schema.ResourceData, meta int } if v, ok := d.GetOk("snapshot_arns"); ok && len(v.([]interface{})) > 0 { - v := v.([]interface{}) - input.SnapshotArns = flex.ExpandStringValueList(v) - log.Printf("[DEBUG] Restoring MemoryDB Cluster (%s) from S3 snapshots %#v", name, v) + input.SnapshotArns = flex.ExpandStringValueList(v.([]interface{})) } if v, ok := d.GetOk("snapshot_name"); ok { input.SnapshotName = aws.String(v.(string)) - log.Printf("[DEBUG] Restoring MemoryDB Cluster (%s) from snapshot %s", name, v.(string)) } if v, ok := d.GetOk("snapshot_retention_limit"); ok { @@ -359,15 +359,14 @@ func resourceClusterCreate(ctx context.Context, d *schema.ResourceData, meta int input.SubnetGroupName = aws.String(v.(string)) } - log.Printf("[DEBUG] Creating MemoryDB Cluster: %+v", input) _, err := conn.CreateCluster(ctx, input) if err != nil { return sdkdiag.AppendErrorf(diags, "creating MemoryDB Cluster (%s): %s", name, err) } - if err := waitClusterAvailable(ctx, conn, name, d.Timeout(schema.TimeoutCreate)); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Cluster (%s) to be created: %s", name, err) + if _, err := waitClusterAvailable(ctx, conn, name, d.Timeout(schema.TimeoutCreate)); err != nil { + return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Cluster (%s) create: %s", name, err) } d.SetId(name) @@ -375,9 +374,74 @@ func resourceClusterCreate(ctx context.Context, d *schema.ResourceData, meta int return append(diags, resourceClusterRead(ctx, d, meta)...) } -func resourceClusterUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { +func resourceClusterRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics + conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) + + cluster, err := findClusterByName(ctx, conn, d.Id()) + + if !d.IsNewResource() && tfresource.NotFound(err) { + log.Printf("[WARN] MemoryDB Cluster (%s) not found, removing from state", d.Id()) + d.SetId("") + return diags + } + + if err != nil { + return sdkdiag.AppendErrorf(diags, "reading MemoryDB Cluster (%s): %s", d.Id(), err) + } + d.Set("acl_name", cluster.ACLName) + d.Set(names.AttrARN, cluster.ARN) + d.Set(names.AttrAutoMinorVersionUpgrade, cluster.AutoMinorVersionUpgrade) + if v := cluster.ClusterEndpoint; v != nil { + d.Set("cluster_endpoint", flattenEndpoint(v)) + d.Set(names.AttrPort, v.Port) + } + if v := string(cluster.DataTiering); v != "" { + v, err := strconv.ParseBool(v) + if err != nil { + return sdkdiag.AppendFromErr(diags, err) + } + + d.Set("data_tiering", v) + } + d.Set(names.AttrDescription, cluster.Description) + d.Set("engine_patch_version", cluster.EnginePatchVersion) + d.Set(names.AttrEngine, cluster.Engine) + d.Set(names.AttrEngineVersion, cluster.EngineVersion) + d.Set(names.AttrKMSKeyARN, cluster.KmsKeyId) // KmsKeyId is actually an ARN here. + d.Set("maintenance_window", cluster.MaintenanceWindow) + d.Set(names.AttrName, cluster.Name) + d.Set(names.AttrNamePrefix, create.NamePrefixFromName(aws.ToString(cluster.Name))) + d.Set("node_type", cluster.NodeType) + if v, err := deriveClusterNumReplicasPerShard(cluster); err != nil { + return sdkdiag.AppendFromErr(diags, err) + } else { + d.Set("num_replicas_per_shard", v) + } + d.Set("num_shards", cluster.NumberOfShards) + d.Set(names.AttrParameterGroupName, cluster.ParameterGroupName) + d.Set(names.AttrSecurityGroupIDs, tfslices.ApplyToAll(cluster.SecurityGroups, func(v awstypes.SecurityGroupMembership) string { + return aws.ToString(v.SecurityGroupId) + })) + if err := d.Set("shards", flattenShards(cluster.Shards)); err != nil { + return sdkdiag.AppendErrorf(diags, "setting shards: %s", err) + } + d.Set("snapshot_retention_limit", cluster.SnapshotRetentionLimit) + d.Set("snapshot_window", cluster.SnapshotWindow) + if aws.ToString(cluster.SnsTopicStatus) == clusterSNSTopicStatusActive { + d.Set(names.AttrSNSTopicARN, cluster.SnsTopicArn) + } else { + d.Set(names.AttrSNSTopicARN, "") + } + d.Set("subnet_group_name", cluster.SubnetGroupName) + d.Set("tls_enabled", cluster.TLSEnabled) + + return diags +} + +func resourceClusterUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + var diags diag.Diagnostics conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) if d.HasChangesExcept("final_snapshot_name", names.AttrTags, names.AttrTagsAll) { @@ -454,35 +518,33 @@ func resourceClusterUpdate(ctx context.Context, d *schema.ResourceData, meta int if d.HasChange(names.AttrSNSTopicARN) { v := d.Get(names.AttrSNSTopicARN).(string) - input.SnsTopicArn = aws.String(v) - if v == "" { input.SnsTopicStatus = aws.String(clusterSNSTopicStatusInactive) } else { input.SnsTopicStatus = aws.String(clusterSNSTopicStatusActive) } } - log.Printf("[DEBUG] Updating MemoryDB Cluster (%s)", d.Id()) _, err := conn.UpdateCluster(ctx, input) + if err != nil { return sdkdiag.AppendErrorf(diags, "updating MemoryDB Cluster (%s): %s", d.Id(), err) } - if err := waitClusterAvailable(ctx, conn, d.Id(), d.Timeout(schema.TimeoutUpdate)); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Cluster (%s) to be modified: %s", d.Id(), err) + if _, err := waitClusterAvailable(ctx, conn, d.Id(), d.Timeout(schema.TimeoutUpdate)); err != nil { + return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Cluster (%s) update: %s", d.Id(), err) } if waitParameterGroupInSync { - if err := waitClusterParameterGroupInSync(ctx, conn, d.Id()); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Cluster (%s) parameter group to be in sync: %s", d.Id(), err) + if _, err := waitClusterParameterGroupInSync(ctx, conn, d.Id()); err != nil { + return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Cluster (%s) parameter group: %s", d.Id(), err) } } if waitSecurityGroupsActive { - if err := waitClusterSecurityGroupsActive(ctx, conn, d.Id()); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Cluster (%s) security groups to be available: %s", d.Id(), err) + if _, err := waitClusterSecurityGroupsActive(ctx, conn, d.Id()); err != nil { + return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Cluster (%s) security groups: %s", d.Id(), err) } } } @@ -490,114 +552,207 @@ func resourceClusterUpdate(ctx context.Context, d *schema.ResourceData, meta int return append(diags, resourceClusterRead(ctx, d, meta)...) } -func resourceClusterRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { +func resourceClusterDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - cluster, err := FindClusterByName(ctx, conn, d.Id()) + input := &memorydb.DeleteClusterInput{ + ClusterName: aws.String(d.Id()), + } - if !d.IsNewResource() && tfresource.NotFound(err) { - log.Printf("[WARN] MemoryDB Cluster (%s) not found, removing from state", d.Id()) - d.SetId("") + if v := d.Get("final_snapshot_name"); v != nil && len(v.(string)) > 0 { + input.FinalSnapshotName = aws.String(v.(string)) + } + + log.Printf("[DEBUG] Deleting MemoryDB Cluster: (%s)", d.Id()) + _, err := conn.DeleteCluster(ctx, input) + + if errs.IsA[*awstypes.ClusterNotFoundFault](err) { return diags } if err != nil { - return sdkdiag.AppendErrorf(diags, "reading MemoryDB Cluster (%s): %s", d.Id(), err) + return sdkdiag.AppendErrorf(diags, "deleting MemoryDB Cluster (%s): %s", d.Id(), err) } - d.Set("acl_name", cluster.ACLName) - d.Set(names.AttrARN, cluster.ARN) - d.Set(names.AttrAutoMinorVersionUpgrade, cluster.AutoMinorVersionUpgrade) + if _, err := waitClusterDeleted(ctx, conn, d.Id(), d.Timeout(schema.TimeoutDelete)); err != nil { + return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Cluster (%s) delete: %s", d.Id(), err) + } - if v := cluster.ClusterEndpoint; v != nil { - d.Set("cluster_endpoint", flattenEndpoint(v)) - d.Set(names.AttrPort, v.Port) + return diags +} + +func findClusterByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.Cluster, error) { + input := &memorydb.DescribeClustersInput{ + ClusterName: aws.String(name), + ShowShardDetails: aws.Bool(true), } - if v := string(cluster.DataTiering); v != "" { - b, err := strconv.ParseBool(v) + return findCluster(ctx, conn, input) +} + +func findCluster(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeClustersInput) (*awstypes.Cluster, error) { + output, err := findClusters(ctx, conn, input) + + if err != nil { + return nil, err + } + + return tfresource.AssertSingleValueResult(output) +} + +func findClusters(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeClustersInput) ([]awstypes.Cluster, error) { + var output []awstypes.Cluster + + pages := memorydb.NewDescribeClustersPaginator(conn, input) + for pages.HasMorePages() { + page, err := pages.NextPage(ctx) + + if errs.IsA[*awstypes.ClusterNotFoundFault](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: input, + } + } + if err != nil { - return sdkdiag.AppendErrorf(diags, "reading data_tiering for MemoryDB Cluster (%s): %s", d.Id(), err) + return nil, err } - d.Set("data_tiering", b) + output = append(output, page.Clusters...) } - d.Set(names.AttrDescription, cluster.Description) - d.Set("engine_patch_version", cluster.EnginePatchVersion) - d.Set(names.AttrEngine, cluster.Engine) - d.Set(names.AttrEngineVersion, cluster.EngineVersion) - d.Set(names.AttrKMSKeyARN, cluster.KmsKeyId) // KmsKeyId is actually an ARN here. - d.Set("maintenance_window", cluster.MaintenanceWindow) - d.Set(names.AttrName, cluster.Name) - d.Set(names.AttrNamePrefix, create.NamePrefixFromName(aws.ToString(cluster.Name))) - d.Set("node_type", cluster.NodeType) + return output, nil +} - numReplicasPerShard, err := deriveClusterNumReplicasPerShard(cluster) - if err != nil { - return sdkdiag.AppendErrorf(diags, "reading num_replicas_per_shard for MemoryDB Cluster (%s): %s", d.Id(), err) - } - d.Set("num_replicas_per_shard", numReplicasPerShard) +func statusCluster(ctx context.Context, conn *memorydb.Client, name string) retry.StateRefreshFunc { + return func() (interface{}, string, error) { + output, err := findClusterByName(ctx, conn, name) - d.Set("num_shards", cluster.NumberOfShards) - d.Set(names.AttrParameterGroupName, cluster.ParameterGroupName) + if tfresource.NotFound(err) { + return nil, "", nil + } - var securityGroupIds []*string - for _, v := range cluster.SecurityGroups { - securityGroupIds = append(securityGroupIds, v.SecurityGroupId) + if err != nil { + return nil, "", err + } + + return output, aws.ToString(output.Status), nil } - d.Set(names.AttrSecurityGroupIDs, flex.FlattenStringSet(securityGroupIds)) +} - if err := d.Set("shards", flattenShards(cluster.Shards)); err != nil { - return sdkdiag.AppendErrorf(diags, "failed to set shards for MemoryDB Cluster (%s): %s", d.Id(), err) +func statusClusterParameterGroup(ctx context.Context, conn *memorydb.Client, name string) retry.StateRefreshFunc { + return func() (interface{}, string, error) { + output, err := findClusterByName(ctx, conn, name) + + if tfresource.NotFound(err) { + return nil, "", nil + } + + if err != nil { + return nil, "", err + } + + return output, aws.ToString(output.ParameterGroupStatus), nil } +} - d.Set("snapshot_retention_limit", cluster.SnapshotRetentionLimit) - d.Set("snapshot_window", cluster.SnapshotWindow) +func statusClusterSecurityGroups(ctx context.Context, conn *memorydb.Client, name string) retry.StateRefreshFunc { + return func() (interface{}, string, error) { + output, err := findClusterByName(ctx, conn, name) - if aws.ToString(cluster.SnsTopicStatus) == clusterSNSTopicStatusActive { - d.Set(names.AttrSNSTopicARN, cluster.SnsTopicArn) - } else { - d.Set(names.AttrSNSTopicARN, "") + if tfresource.NotFound(err) { + return nil, "", nil + } + + if err != nil { + return nil, "", err + } + + for _, v := range output.SecurityGroups { + // When at least one security group change is being applied (whether + // that be adding or removing an SG), say that we're still in progress. + if aws.ToString(v.Status) != clusterSecurityGroupStatusActive { + return output, clusterSecurityGroupStatusModifying, nil + } + } + + return output, clusterSecurityGroupStatusActive, nil } +} - d.Set("subnet_group_name", cluster.SubnetGroupName) - d.Set("tls_enabled", cluster.TLSEnabled) +func waitClusterAvailable(ctx context.Context, conn *memorydb.Client, name string, timeout time.Duration) (*awstypes.Cluster, error) { + stateConf := &retry.StateChangeConf{ + Pending: []string{clusterStatusCreating, clusterStatusUpdating, clusterStatusSnapshotting}, + Target: []string{clusterStatusAvailable}, + Refresh: statusCluster(ctx, conn, name), + Timeout: timeout, + } - return diags + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*awstypes.Cluster); ok { + return output, err + } + + return nil, err } -func resourceClusterDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - var diags diag.Diagnostics +func waitClusterDeleted(ctx context.Context, conn *memorydb.Client, name string, timeout time.Duration) (*awstypes.Cluster, error) { + stateConf := &retry.StateChangeConf{ + Pending: []string{clusterStatusDeleting}, + Target: []string{}, + Refresh: statusCluster(ctx, conn, name), + Timeout: timeout, + } - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) + outputRaw, err := stateConf.WaitForStateContext(ctx) - input := &memorydb.DeleteClusterInput{ - ClusterName: aws.String(d.Id()), + if output, ok := outputRaw.(*awstypes.Cluster); ok { + return output, err } - if v := d.Get("final_snapshot_name"); v != nil && len(v.(string)) > 0 { - input.FinalSnapshotName = aws.String(v.(string)) + return nil, err +} + +func waitClusterParameterGroupInSync(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.Cluster, error) { + const ( + timeout = 60 * time.Minute + ) + stateConf := &retry.StateChangeConf{ + Pending: []string{clusterParameterGroupStatusApplying}, + Target: []string{clusterParameterGroupStatusInSync}, + Refresh: statusClusterParameterGroup(ctx, conn, name), + Timeout: timeout, } - log.Printf("[DEBUG] Deleting MemoryDB Cluster: (%s)", d.Id()) - _, err := conn.DeleteCluster(ctx, input) + outputRaw, err := stateConf.WaitForStateContext(ctx) - if errs.IsA[*awstypes.ClusterNotFoundFault](err) { - return diags + if output, ok := outputRaw.(*awstypes.Cluster); ok { + return output, err } - if err != nil { - return sdkdiag.AppendErrorf(diags, "deleting MemoryDB Cluster (%s): %s", d.Id(), err) + return nil, err +} + +func waitClusterSecurityGroupsActive(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.Cluster, error) { + const ( + timeout = 10 * time.Minute + ) + stateConf := &retry.StateChangeConf{ + Pending: []string{clusterSecurityGroupStatusModifying}, + Target: []string{clusterSecurityGroupStatusActive}, + Refresh: statusClusterSecurityGroups(ctx, conn, name), + Timeout: timeout, } - if err := waitClusterDeleted(ctx, conn, d.Id(), d.Timeout(schema.TimeoutDelete)); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Cluster (%s) to be deleted: %s", d.Id(), err) + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*awstypes.Cluster); ok { + return output, err } - return diags + return nil, err } func shardHash(v interface{}) int { @@ -608,48 +763,48 @@ func nodeHash(v interface{}) int { return create.StringHashcode(v.(map[string]interface{})[names.AttrName].(string)) } -func flattenEndpoint(endpoint *awstypes.Endpoint) []interface{} { - if endpoint == nil { +func flattenEndpoint(apiObject *awstypes.Endpoint) []interface{} { + if apiObject == nil { return []interface{}{} } - m := map[string]interface{}{} + tfMap := map[string]interface{}{} - if v := aws.ToString(endpoint.Address); v != "" { - m[names.AttrAddress] = v + if v := aws.ToString(apiObject.Address); v != "" { + tfMap[names.AttrAddress] = v } - if endpoint.Port != 0 { - m[names.AttrPort] = endpoint.Port + if apiObject.Port != 0 { + tfMap[names.AttrPort] = apiObject.Port } - return []interface{}{m} + return []interface{}{tfMap} } -func flattenShards(shards []awstypes.Shard) *schema.Set { - shardSet := schema.NewSet(shardHash, nil) +func flattenShards(apiObjects []awstypes.Shard) *schema.Set { + tfSet := schema.NewSet(shardHash, nil) - for _, shard := range shards { + for _, apiObject := range apiObjects { nodeSet := schema.NewSet(nodeHash, nil) - for _, node := range shard.Nodes { + for _, apiObject := range apiObject.Nodes { nodeSet.Add(map[string]interface{}{ - names.AttrAvailabilityZone: aws.ToString(node.AvailabilityZone), - names.AttrCreateTime: aws.ToTime(node.CreateTime).Format(time.RFC3339), - names.AttrEndpoint: flattenEndpoint(node.Endpoint), - names.AttrName: aws.ToString(node.Name), + names.AttrAvailabilityZone: aws.ToString(apiObject.AvailabilityZone), + names.AttrCreateTime: aws.ToTime(apiObject.CreateTime).Format(time.RFC3339), + names.AttrEndpoint: flattenEndpoint(apiObject.Endpoint), + names.AttrName: aws.ToString(apiObject.Name), }) } - shardSet.Add(map[string]interface{}{ - names.AttrName: aws.ToString(shard.Name), - "num_nodes": int(aws.ToInt32(shard.NumberOfNodes)), + tfSet.Add(map[string]interface{}{ + names.AttrName: aws.ToString(apiObject.Name), + "num_nodes": aws.ToInt32(apiObject.NumberOfNodes), "nodes": nodeSet, - "slots": aws.ToString(shard.Slots), + "slots": aws.ToString(apiObject.Slots), }) } - return shardSet + return tfSet } // deriveClusterNumReplicasPerShard determines the replicas per shard diff --git a/internal/service/memorydb/cluster_data_source.go b/internal/service/memorydb/cluster_data_source.go index 639a29088ba..bf9fa68c3cf 100644 --- a/internal/service/memorydb/cluster_data_source.go +++ b/internal/service/memorydb/cluster_data_source.go @@ -176,7 +176,7 @@ func dataSourceClusterRead(ctx context.Context, d *schema.ResourceData, meta int name := d.Get(names.AttrName).(string) - cluster, err := FindClusterByName(ctx, conn, name) + cluster, err := findClusterByName(ctx, conn, name) if err != nil { return sdkdiag.AppendFromErr(diags, tfresource.SingularDataSourceFindError("MemoryDB Cluster", err)) diff --git a/internal/service/memorydb/exports_test.go b/internal/service/memorydb/exports_test.go index 26895a2930c..a25404ff2fb 100644 --- a/internal/service/memorydb/exports_test.go +++ b/internal/service/memorydb/exports_test.go @@ -12,5 +12,6 @@ var ( ResourceSubnetGroup = resourceSubnetGroup ResourceUser = resourceUser - FindACLByName = findACLByName + FindACLByName = findACLByName + FindClusterByName = findClusterByName ) diff --git a/internal/service/memorydb/find.go b/internal/service/memorydb/find.go index 801c8bc33a9..edfbdb1de5c 100644 --- a/internal/service/memorydb/find.go +++ b/internal/service/memorydb/find.go @@ -14,28 +14,6 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/tfresource" ) -func FindClusterByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.Cluster, error) { - input := memorydb.DescribeClustersInput{ - ClusterName: aws.String(name), - ShowShardDetails: aws.Bool(true), - } - - output, err := conn.DescribeClusters(ctx, &input) - - if errs.IsA[*awstypes.ClusterNotFoundFault](err) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: input, - } - } - - if err != nil { - return nil, err - } - - return tfresource.AssertSingleValueResult(output.Clusters) -} - func FindParameterGroupByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.ParameterGroup, error) { input := memorydb.DescribeParameterGroupsInput{ ParameterGroupName: aws.String(name), diff --git a/internal/service/memorydb/status.go b/internal/service/memorydb/status.go index 1c96f021c88..338d3971aad 100644 --- a/internal/service/memorydb/status.go +++ b/internal/service/memorydb/status.go @@ -12,66 +12,6 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/tfresource" ) -// statusCluster fetches the MemoryDB Cluster and its status. -func statusCluster(ctx context.Context, conn *memorydb.Client, clusterName string) retry.StateRefreshFunc { - return func() (interface{}, string, error) { - cluster, err := FindClusterByName(ctx, conn, clusterName) - - if tfresource.NotFound(err) { - return nil, "", nil - } - - if err != nil { - return nil, "", err - } - - return cluster, aws.ToString(cluster.Status), nil - } -} - -// statusClusterParameterGroup fetches the MemoryDB Cluster and its parameter group status. -func statusClusterParameterGroup(ctx context.Context, conn *memorydb.Client, clusterName string) retry.StateRefreshFunc { - return func() (interface{}, string, error) { - cluster, err := FindClusterByName(ctx, conn, clusterName) - - if tfresource.NotFound(err) { - return nil, "", nil - } - - if err != nil { - return nil, "", err - } - - return cluster, aws.ToString(cluster.ParameterGroupStatus), nil - } -} - -// statusClusterSecurityGroups fetches the MemoryDB Cluster and its security group status. -func statusClusterSecurityGroups(ctx context.Context, conn *memorydb.Client, clusterName string) retry.StateRefreshFunc { - return func() (interface{}, string, error) { - cluster, err := FindClusterByName(ctx, conn, clusterName) - - if tfresource.NotFound(err) { - return nil, "", nil - } - - if err != nil { - return nil, "", err - } - - for _, sg := range cluster.SecurityGroups { - // When at least one security group change is being applied (whether - // that be adding or removing an SG), say that we're still in progress. - - if aws.ToString(sg.Status) != clusterSecurityGroupStatusActive { - return cluster, clusterSecurityGroupStatusModifying, nil - } - } - - return cluster, clusterSecurityGroupStatusActive, nil - } -} - // statusSnapshot fetches the MemoryDB Snapshot and its status. func statusSnapshot(ctx context.Context, conn *memorydb.Client, snapshotName string) retry.StateRefreshFunc { return func() (interface{}, string, error) { diff --git a/internal/service/memorydb/wait.go b/internal/service/memorydb/wait.go index ed6d14785d8..f100245ba5e 100644 --- a/internal/service/memorydb/wait.go +++ b/internal/service/memorydb/wait.go @@ -12,13 +12,6 @@ import ( ) const ( - clusterAvailableTimeout = 120 * time.Minute - clusterDeletedTimeout = 120 * time.Minute - - clusterParameterGroupInSyncTimeout = 60 * time.Minute - - clusterSecurityGroupsActiveTimeout = 10 * time.Minute - userActiveTimeout = 5 * time.Minute userDeletedTimeout = 5 * time.Minute @@ -26,64 +19,6 @@ const ( snapshotDeletedTimeout = 120 * time.Minute ) -// waitClusterAvailable waits for MemoryDB Cluster to reach an active state after modifications. -func waitClusterAvailable(ctx context.Context, conn *memorydb.Client, clusterId string, timeout time.Duration) error { - stateConf := &retry.StateChangeConf{ - Pending: []string{clusterStatusCreating, clusterStatusUpdating, clusterStatusSnapshotting}, - Target: []string{clusterStatusAvailable}, - Refresh: statusCluster(ctx, conn, clusterId), - Timeout: timeout, - } - - _, err := stateConf.WaitForStateContext(ctx) - - return err -} - -// waitClusterDeleted waits for MemoryDB Cluster to be deleted. -func waitClusterDeleted(ctx context.Context, conn *memorydb.Client, clusterId string, timeout time.Duration) error { - stateConf := &retry.StateChangeConf{ - Pending: []string{clusterStatusDeleting}, - Target: []string{}, - Refresh: statusCluster(ctx, conn, clusterId), - Timeout: timeout, - } - - _, err := stateConf.WaitForStateContext(ctx) - - return err -} - -// waitClusterParameterGroupInSync waits for MemoryDB Cluster to come in sync -// with a new parameter group. -func waitClusterParameterGroupInSync(ctx context.Context, conn *memorydb.Client, clusterId string) error { - stateConf := &retry.StateChangeConf{ - Pending: []string{clusterParameterGroupStatusApplying}, - Target: []string{clusterParameterGroupStatusInSync}, - Refresh: statusClusterParameterGroup(ctx, conn, clusterId), - Timeout: clusterParameterGroupInSyncTimeout, - } - - _, err := stateConf.WaitForStateContext(ctx) - - return err -} - -// waitClusterSecurityGroupsActive waits for MemoryDB Cluster to apply all -// security group-related changes. -func waitClusterSecurityGroupsActive(ctx context.Context, conn *memorydb.Client, clusterId string) error { - stateConf := &retry.StateChangeConf{ - Pending: []string{clusterSecurityGroupStatusModifying}, - Target: []string{clusterSecurityGroupStatusActive}, - Refresh: statusClusterSecurityGroups(ctx, conn, clusterId), - Timeout: clusterSecurityGroupsActiveTimeout, - } - - _, err := stateConf.WaitForStateContext(ctx) - - return err -} - // waitUserActive waits for MemoryDB user to reach an active state after modifications. func waitUserActive(ctx context.Context, conn *memorydb.Client, userId string) error { stateConf := &retry.StateChangeConf{ From ac56917482f14f8a642c277328f30fa731b02eb6 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Sun, 24 Nov 2024 16:38:08 -0500 Subject: [PATCH 083/118] d/aws_memorydb_cluster: Transparent tagging. --- .../service/memorydb/cluster_data_source.go | 322 ++++++++---------- .../service/memorydb/service_package_gen.go | 3 + 2 files changed, 153 insertions(+), 172 deletions(-) diff --git a/internal/service/memorydb/cluster_data_source.go b/internal/service/memorydb/cluster_data_source.go index bf9fa68c3cf..0d6bb22c744 100644 --- a/internal/service/memorydb/cluster_data_source.go +++ b/internal/service/memorydb/cluster_data_source.go @@ -8,174 +8,175 @@ import ( "strconv" "github.com/aws/aws-sdk-go-v2/aws" + awstypes "github.com/aws/aws-sdk-go-v2/service/memorydb/types" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" - "github.com/hashicorp/terraform-provider-aws/internal/flex" + tfslices "github.com/hashicorp/terraform-provider-aws/internal/slices" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/names" ) // @SDKDataSource("aws_memorydb_cluster", name="Cluster") +// @Tags(identifierAttribute="arn") func dataSourceCluster() *schema.Resource { return &schema.Resource{ ReadWithoutTimeout: dataSourceClusterRead, - Schema: map[string]*schema.Schema{ - "acl_name": { - Type: schema.TypeString, - Computed: true, - }, - names.AttrARN: { - Type: schema.TypeString, - Computed: true, - }, - names.AttrAutoMinorVersionUpgrade: { - Type: schema.TypeBool, - Computed: true, - }, - "cluster_endpoint": endpointSchema(), - "data_tiering": { - Type: schema.TypeBool, - Computed: true, - }, - names.AttrDescription: { - Type: schema.TypeString, - Computed: true, - }, - "engine_patch_version": { - Type: schema.TypeString, - Computed: true, - }, - names.AttrEngine: { - Type: schema.TypeString, - Computed: true, - }, - names.AttrEngineVersion: { - Type: schema.TypeString, - Computed: true, - }, - "final_snapshot_name": { - Type: schema.TypeString, - Computed: true, - }, - names.AttrKMSKeyARN: { - Type: schema.TypeString, - Computed: true, - }, - "maintenance_window": { - Type: schema.TypeString, - Computed: true, - }, - names.AttrName: { - Type: schema.TypeString, - Required: true, - }, - "node_type": { - Type: schema.TypeString, - Computed: true, - }, - "num_replicas_per_shard": { - Type: schema.TypeInt, - Computed: true, - }, - "num_shards": { - Type: schema.TypeInt, - Computed: true, - }, - names.AttrParameterGroupName: { - Type: schema.TypeString, - Computed: true, - }, - names.AttrPort: { - Type: schema.TypeInt, - Computed: true, - }, - names.AttrSecurityGroupIDs: { - Type: schema.TypeSet, - Computed: true, - Elem: &schema.Schema{ - Type: schema.TypeString, + SchemaFunc: func() map[string]*schema.Schema { + return map[string]*schema.Schema{ + "acl_name": { + Type: schema.TypeString, + Computed: true, }, - }, - "shards": { - Type: schema.TypeSet, - Computed: true, - Set: shardHash, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - names.AttrName: { - Type: schema.TypeString, - Computed: true, - }, - "nodes": { - Type: schema.TypeSet, - Computed: true, - Set: nodeHash, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - names.AttrAvailabilityZone: { - Type: schema.TypeString, - Computed: true, - }, - names.AttrCreateTime: { - Type: schema.TypeString, - Computed: true, - }, - names.AttrEndpoint: endpointSchema(), - names.AttrName: { - Type: schema.TypeString, - Computed: true, + names.AttrARN: { + Type: schema.TypeString, + Computed: true, + }, + names.AttrAutoMinorVersionUpgrade: { + Type: schema.TypeBool, + Computed: true, + }, + "cluster_endpoint": endpointSchema(), + "data_tiering": { + Type: schema.TypeBool, + Computed: true, + }, + names.AttrDescription: { + Type: schema.TypeString, + Computed: true, + }, + "engine_patch_version": { + Type: schema.TypeString, + Computed: true, + }, + names.AttrEngine: { + Type: schema.TypeString, + Computed: true, + }, + names.AttrEngineVersion: { + Type: schema.TypeString, + Computed: true, + }, + "final_snapshot_name": { + Type: schema.TypeString, + Computed: true, + }, + names.AttrKMSKeyARN: { + Type: schema.TypeString, + Computed: true, + }, + "maintenance_window": { + Type: schema.TypeString, + Computed: true, + }, + names.AttrName: { + Type: schema.TypeString, + Required: true, + }, + "node_type": { + Type: schema.TypeString, + Computed: true, + }, + "num_replicas_per_shard": { + Type: schema.TypeInt, + Computed: true, + }, + "num_shards": { + Type: schema.TypeInt, + Computed: true, + }, + names.AttrParameterGroupName: { + Type: schema.TypeString, + Computed: true, + }, + names.AttrPort: { + Type: schema.TypeInt, + Computed: true, + }, + names.AttrSecurityGroupIDs: { + Type: schema.TypeSet, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "shards": { + Type: schema.TypeSet, + Computed: true, + Set: shardHash, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + names.AttrName: { + Type: schema.TypeString, + Computed: true, + }, + "nodes": { + Type: schema.TypeSet, + Computed: true, + Set: nodeHash, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + names.AttrAvailabilityZone: { + Type: schema.TypeString, + Computed: true, + }, + names.AttrCreateTime: { + Type: schema.TypeString, + Computed: true, + }, + names.AttrEndpoint: endpointSchema(), + names.AttrName: { + Type: schema.TypeString, + Computed: true, + }, }, }, }, - }, - "num_nodes": { - Type: schema.TypeInt, - Computed: true, - }, - "slots": { - Type: schema.TypeString, - Computed: true, + "num_nodes": { + Type: schema.TypeInt, + Computed: true, + }, + "slots": { + Type: schema.TypeString, + Computed: true, + }, }, }, }, - }, - "snapshot_retention_limit": { - Type: schema.TypeInt, - Computed: true, - }, - "snapshot_window": { - Type: schema.TypeString, - Computed: true, - }, - names.AttrSNSTopicARN: { - Type: schema.TypeString, - Computed: true, - }, - "subnet_group_name": { - Type: schema.TypeString, - Computed: true, - }, - names.AttrTags: tftags.TagsSchemaComputed(), - "tls_enabled": { - Type: schema.TypeBool, - Computed: true, - }, + "snapshot_retention_limit": { + Type: schema.TypeInt, + Computed: true, + }, + "snapshot_window": { + Type: schema.TypeString, + Computed: true, + }, + names.AttrSNSTopicARN: { + Type: schema.TypeString, + Computed: true, + }, + "subnet_group_name": { + Type: schema.TypeString, + Computed: true, + }, + names.AttrTags: tftags.TagsSchemaComputed(), + "tls_enabled": { + Type: schema.TypeBool, + Computed: true, + }, + } }, } } func dataSourceClusterRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig(ctx) name := d.Get(names.AttrName).(string) - cluster, err := findClusterByName(ctx, conn, name) if err != nil { @@ -183,25 +184,21 @@ func dataSourceClusterRead(ctx context.Context, d *schema.ResourceData, meta int } d.SetId(aws.ToString(cluster.Name)) - d.Set("acl_name", cluster.ACLName) d.Set(names.AttrARN, cluster.ARN) d.Set(names.AttrAutoMinorVersionUpgrade, cluster.AutoMinorVersionUpgrade) - if v := cluster.ClusterEndpoint; v != nil { d.Set("cluster_endpoint", flattenEndpoint(v)) d.Set(names.AttrPort, v.Port) } - if v := string(cluster.DataTiering); v != "" { - b, err := strconv.ParseBool(v) + v, err := strconv.ParseBool(v) if err != nil { - return sdkdiag.AppendErrorf(diags, "reading data_tiering for MemoryDB Cluster (%s): %s", d.Id(), err) + return sdkdiag.AppendFromErr(diags, err) } - d.Set("data_tiering", b) + d.Set("data_tiering", v) } - d.Set(names.AttrDescription, cluster.Description) d.Set("engine_patch_version", cluster.EnginePatchVersion) d.Set(names.AttrEngine, cluster.Engine) @@ -210,47 +207,28 @@ func dataSourceClusterRead(ctx context.Context, d *schema.ResourceData, meta int d.Set("maintenance_window", cluster.MaintenanceWindow) d.Set(names.AttrName, cluster.Name) d.Set("node_type", cluster.NodeType) - - numReplicasPerShard, err := deriveClusterNumReplicasPerShard(cluster) - if err != nil { - return sdkdiag.AppendErrorf(diags, "reading num_replicas_per_shard for MemoryDB Cluster (%s): %s", d.Id(), err) + if v, err := deriveClusterNumReplicasPerShard(cluster); err != nil { + return sdkdiag.AppendFromErr(diags, err) + } else { + d.Set("num_replicas_per_shard", v) } - d.Set("num_replicas_per_shard", numReplicasPerShard) - d.Set("num_shards", cluster.NumberOfShards) d.Set(names.AttrParameterGroupName, cluster.ParameterGroupName) - - var securityGroupIds []*string - for _, v := range cluster.SecurityGroups { - securityGroupIds = append(securityGroupIds, v.SecurityGroupId) - } - d.Set(names.AttrSecurityGroupIDs, flex.FlattenStringSet(securityGroupIds)) - + d.Set(names.AttrSecurityGroupIDs, tfslices.ApplyToAll(cluster.SecurityGroups, func(v awstypes.SecurityGroupMembership) string { + return aws.ToString(v.SecurityGroupId) + })) if err := d.Set("shards", flattenShards(cluster.Shards)); err != nil { - return sdkdiag.AppendErrorf(diags, "failed to set shards for MemoryDB Cluster (%s): %s", d.Id(), err) + return sdkdiag.AppendErrorf(diags, "setting shards: %s", err) } - d.Set("snapshot_retention_limit", cluster.SnapshotRetentionLimit) d.Set("snapshot_window", cluster.SnapshotWindow) - if aws.ToString(cluster.SnsTopicStatus) == clusterSNSTopicStatusActive { d.Set(names.AttrSNSTopicARN, cluster.SnsTopicArn) } else { d.Set(names.AttrSNSTopicARN, "") } - d.Set("subnet_group_name", cluster.SubnetGroupName) d.Set("tls_enabled", cluster.TLSEnabled) - tags, err := listTags(ctx, conn, d.Get(names.AttrARN).(string)) - - if err != nil { - return sdkdiag.AppendErrorf(diags, "listing tags for MemoryDB Cluster (%s): %s", d.Id(), err) - } - - if err := d.Set(names.AttrTags, tags.IgnoreAWS().IgnoreConfig(ignoreTagsConfig).Map()); err != nil { - return sdkdiag.AppendErrorf(diags, "setting tags: %s", err) - } - return diags } diff --git a/internal/service/memorydb/service_package_gen.go b/internal/service/memorydb/service_package_gen.go index 1913cd5c1f0..b49f97cd71b 100644 --- a/internal/service/memorydb/service_package_gen.go +++ b/internal/service/memorydb/service_package_gen.go @@ -36,6 +36,9 @@ func (p *servicePackage) SDKDataSources(ctx context.Context) []*types.ServicePac Factory: dataSourceCluster, TypeName: "aws_memorydb_cluster", Name: "Cluster", + Tags: &types.ServicePackageResourceTags{ + IdentifierAttribute: names.AttrARN, + }, }, { Factory: dataSourceParameterGroup, From 96df325974435b46d7232b6e6d12cb6a0be13c08 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Sun, 24 Nov 2024 17:23:45 -0500 Subject: [PATCH 084/118] r/aws_memorydb_parameter_group: Standardize. --- internal/service/memorydb/cluster.go | 20 +- .../service/memorydb/cluster_data_source.go | 4 +- internal/service/memorydb/exports_test.go | 7 +- internal/service/memorydb/find.go | 21 -- internal/service/memorydb/parameter_group.go | 310 +++++++++--------- .../memorydb/parameter_group_data_source.go | 12 +- 6 files changed, 182 insertions(+), 192 deletions(-) diff --git a/internal/service/memorydb/cluster.go b/internal/service/memorydb/cluster.go index 31fbae011db..3f6df61a561 100644 --- a/internal/service/memorydb/cluster.go +++ b/internal/service/memorydb/cluster.go @@ -24,6 +24,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" "github.com/hashicorp/terraform-provider-aws/internal/flex" + "github.com/hashicorp/terraform-provider-aws/internal/sdkv2" tfslices "github.com/hashicorp/terraform-provider-aws/internal/slices" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" @@ -169,7 +170,7 @@ func resourceCluster() *schema.Resource { "shards": { Type: schema.TypeSet, Computed: true, - Set: shardHash, + Set: clusterShardHash, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ names.AttrName: { @@ -179,7 +180,7 @@ func resourceCluster() *schema.Resource { "nodes": { Type: schema.TypeSet, Computed: true, - Set: nodeHash, + Set: clusterShardNodeHash, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ names.AttrAvailabilityZone: { @@ -755,13 +756,10 @@ func waitClusterSecurityGroupsActive(ctx context.Context, conn *memorydb.Client, return nil, err } -func shardHash(v interface{}) int { - return create.StringHashcode(v.(map[string]interface{})[names.AttrName].(string)) -} - -func nodeHash(v interface{}) int { - return create.StringHashcode(v.(map[string]interface{})[names.AttrName].(string)) -} +var ( + clusterShardHash = sdkv2.SimpleSchemaSetFunc(names.AttrName) + clusterShardNodeHash = sdkv2.SimpleSchemaSetFunc(names.AttrName) +) func flattenEndpoint(apiObject *awstypes.Endpoint) []interface{} { if apiObject == nil { @@ -782,10 +780,10 @@ func flattenEndpoint(apiObject *awstypes.Endpoint) []interface{} { } func flattenShards(apiObjects []awstypes.Shard) *schema.Set { - tfSet := schema.NewSet(shardHash, nil) + tfSet := schema.NewSet(clusterShardHash, nil) for _, apiObject := range apiObjects { - nodeSet := schema.NewSet(nodeHash, nil) + nodeSet := schema.NewSet(clusterShardNodeHash, nil) for _, apiObject := range apiObject.Nodes { nodeSet.Add(map[string]interface{}{ diff --git a/internal/service/memorydb/cluster_data_source.go b/internal/service/memorydb/cluster_data_source.go index 0d6bb22c744..3a4876af9bf 100644 --- a/internal/service/memorydb/cluster_data_source.go +++ b/internal/service/memorydb/cluster_data_source.go @@ -106,7 +106,7 @@ func dataSourceCluster() *schema.Resource { "shards": { Type: schema.TypeSet, Computed: true, - Set: shardHash, + Set: clusterShardHash, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ names.AttrName: { @@ -116,7 +116,7 @@ func dataSourceCluster() *schema.Resource { "nodes": { Type: schema.TypeSet, Computed: true, - Set: nodeHash, + Set: clusterShardNodeHash, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ names.AttrAvailabilityZone: { diff --git a/internal/service/memorydb/exports_test.go b/internal/service/memorydb/exports_test.go index a25404ff2fb..4a1d1b3a712 100644 --- a/internal/service/memorydb/exports_test.go +++ b/internal/service/memorydb/exports_test.go @@ -12,6 +12,9 @@ var ( ResourceSubnetGroup = resourceSubnetGroup ResourceUser = resourceUser - FindACLByName = findACLByName - FindClusterByName = findClusterByName + FindACLByName = findACLByName + FindClusterByName = findClusterByName + FindParameterGroupByName = findParameterGroupByName + ParameterChanges = parameterChanges + ParameterHash = parameterHash ) diff --git a/internal/service/memorydb/find.go b/internal/service/memorydb/find.go index edfbdb1de5c..160b843ba89 100644 --- a/internal/service/memorydb/find.go +++ b/internal/service/memorydb/find.go @@ -14,27 +14,6 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/tfresource" ) -func FindParameterGroupByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.ParameterGroup, error) { - input := memorydb.DescribeParameterGroupsInput{ - ParameterGroupName: aws.String(name), - } - - output, err := conn.DescribeParameterGroups(ctx, &input) - - if errs.IsA[*awstypes.ParameterGroupNotFoundFault](err) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: input, - } - } - - if err != nil { - return nil, err - } - - return tfresource.AssertSingleValueResult(output.ParameterGroups) -} - func FindSnapshotByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.Snapshot, error) { input := memorydb.DescribeSnapshotsInput{ SnapshotName: aws.String(name), diff --git a/internal/service/memorydb/parameter_group.go b/internal/service/memorydb/parameter_group.go index 0444678df5b..625357ac1b2 100644 --- a/internal/service/memorydb/parameter_group.go +++ b/internal/service/memorydb/parameter_group.go @@ -4,10 +4,10 @@ package memorydb import ( - "bytes" "context" "fmt" "log" + "slices" "strings" "time" @@ -22,6 +22,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/create" "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" + "github.com/hashicorp/terraform-provider-aws/internal/sdkv2" tfslices "github.com/hashicorp/terraform-provider-aws/internal/slices" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" @@ -91,7 +92,7 @@ func resourceParameterGroup() *schema.Resource { }, }, }, - Set: ParameterHash, + Set: parameterHash, }, names.AttrTags: tftags.TagsSchema(), names.AttrTagsAll: tftags.TagsSchemaComputed(), @@ -99,9 +100,12 @@ func resourceParameterGroup() *schema.Resource { } } +var ( + parameterHash = sdkv2.SimpleSchemaSetFunc(names.AttrName, names.AttrValue) +) + func resourceParameterGroupCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) name := create.Name(d.Get(names.AttrName).(string), d.Get(names.AttrNamePrefix).(string)) @@ -112,7 +116,6 @@ func resourceParameterGroupCreate(ctx context.Context, d *schema.ResourceData, m Tags: getTagsIn(ctx), } - log.Printf("[DEBUG] Creating MemoryDB Parameter Group: %+v", input) output, err := conn.CreateParameterGroup(ctx, input) if err != nil { @@ -122,71 +125,15 @@ func resourceParameterGroupCreate(ctx context.Context, d *schema.ResourceData, m d.SetId(name) d.Set(names.AttrARN, output.ParameterGroup.ARN) - log.Printf("[INFO] MemoryDB Parameter Group ID: %s", d.Id()) - // Update to apply parameter changes. return append(diags, resourceParameterGroupUpdate(ctx, d, meta)...) } -func resourceParameterGroupUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - var diags diag.Diagnostics - - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - - if d.HasChange(names.AttrParameter) { - o, n := d.GetChange(names.AttrParameter) - toRemove, toAdd := ParameterChanges(o, n) - - log.Printf("[DEBUG] Updating MemoryDB Parameter Group (%s)", d.Id()) - log.Printf("[DEBUG] Parameters to remove: %#v", toRemove) - log.Printf("[DEBUG] Parameters to add or update: %#v", toAdd) - - // The API is limited to updating no more than 20 parameters at a time. - const maxParams = 20 - - for len(toRemove) > 0 { - // Removing a parameter from state is equivalent to resetting it - // to its default state. - - var paramsToReset []*awstypes.ParameterNameValue - if len(toRemove) <= maxParams { - paramsToReset, toRemove = toRemove[:], nil - } else { - paramsToReset, toRemove = toRemove[:maxParams], toRemove[maxParams:] - } - - err := resetParameterGroupParameters(ctx, conn, d.Get(names.AttrName).(string), paramsToReset) - - if err != nil { - return sdkdiag.AppendErrorf(diags, "resetting MemoryDB Parameter Group (%s) parameters to defaults: %s", d.Id(), err) - } - } - - for len(toAdd) > 0 { - var paramsToModify []*awstypes.ParameterNameValue - if len(toAdd) <= maxParams { - paramsToModify, toAdd = toAdd[:], nil - } else { - paramsToModify, toAdd = toAdd[:maxParams], toAdd[maxParams:] - } - - err := modifyParameterGroupParameters(ctx, conn, d.Get(names.AttrName).(string), paramsToModify) - - if err != nil { - return sdkdiag.AppendErrorf(diags, "modifying MemoryDB Parameter Group (%s) parameters: %s", d.Id(), err) - } - } - } - - return append(diags, resourceParameterGroupRead(ctx, d, meta)...) -} - func resourceParameterGroupRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - group, err := FindParameterGroupByName(ctx, conn, d.Id()) + group, err := findParameterGroupByName(ctx, conn, d.Id()) if !d.IsNewResource() && tfresource.NotFound(err) { log.Printf("[WARN] MemoryDB Parameter Group (%s) not found, removing from state", d.Id()) @@ -205,22 +152,71 @@ func resourceParameterGroupRead(ctx context.Context, d *schema.ResourceData, met d.Set(names.AttrNamePrefix, create.NamePrefixFromName(aws.ToString(group.Name))) userDefinedParameters := createUserDefinedParameterMap(d) - parameters, err := listParameterGroupParameters(ctx, conn, d.Get(names.AttrFamily).(string), d.Id(), userDefinedParameters) + if err != nil { - return sdkdiag.AppendErrorf(diags, "listing parameters for MemoryDB Parameter Group (%s): %s", d.Id(), err) + return sdkdiag.AppendFromErr(diags, err) } if err := d.Set(names.AttrParameter, flattenParameters(parameters)); err != nil { - return sdkdiag.AppendErrorf(diags, "failed to set parameter: %s", err) + return sdkdiag.AppendErrorf(diags, "setting parameter: %s", err) } return diags } -func resourceParameterGroupDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { +func resourceParameterGroupUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics + conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) + + if d.HasChange(names.AttrParameter) { + o, n := d.GetChange(names.AttrParameter) + toRemove, toAdd := parameterChanges(o, n) + + // The API is limited to updating no more than 20 parameters at a time. + const maxParams = 20 + + // Removing a parameter from state is equivalent to resetting it + // to its default state. + for chunk := range slices.Chunk(toRemove, maxParams) { + input := &memorydb.ResetParameterGroupInput{ + ParameterGroupName: aws.String(d.Id()), + ParameterNames: tfslices.ApplyToAll(chunk, func(v awstypes.ParameterNameValue) string { + return aws.ToString(v.ParameterName) + }), + } + + const ( + timeout = 30 * time.Second + ) + _, err := tfresource.RetryWhenIsAErrorMessageContains[*awstypes.InvalidParameterGroupStateFault](ctx, timeout, func() (interface{}, error) { + return conn.ResetParameterGroup(ctx, input) + }, " has pending changes") + + if err != nil { + return sdkdiag.AppendErrorf(diags, "resetting MemoryDB Parameter Group (%s) parameters to defaults: %s", d.Id(), err) + } + } + + for chunk := range slices.Chunk(toAdd, maxParams) { + input := &memorydb.UpdateParameterGroupInput{ + ParameterGroupName: aws.String(d.Id()), + ParameterNameValues: chunk, + } + + _, err := conn.UpdateParameterGroup(ctx, input) + if err != nil { + return sdkdiag.AppendErrorf(diags, "modifying MemoryDB Parameter Group (%s) parameters: %s", d.Id(), err) + } + } + } + + return append(diags, resourceParameterGroupRead(ctx, d, meta)...) +} + +func resourceParameterGroupDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + var diags diag.Diagnostics conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) log.Printf("[DEBUG] Deleting MemoryDB Parameter Group: (%s)", d.Id()) @@ -239,130 +235,144 @@ func resourceParameterGroupDelete(ctx context.Context, d *schema.ResourceData, m return diags } -// resetParameterGroupParameters resets the given parameters to their default values. -func resetParameterGroupParameters(ctx context.Context, conn *memorydb.Client, name string, parameters []*awstypes.ParameterNameValue) error { - var parameterNames []string - for _, parameter := range parameters { - parameterNames = append(parameterNames, *parameter.ParameterName) +func findParameterGroupByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.ParameterGroup, error) { + input := &memorydb.DescribeParameterGroupsInput{ + ParameterGroupName: aws.String(name), } - input := memorydb.ResetParameterGroupInput{ - ParameterGroupName: aws.String(name), - ParameterNames: parameterNames, + return findParameterGroup(ctx, conn, input) +} + +func findParameterGroup(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeParameterGroupsInput) (*awstypes.ParameterGroup, error) { + output, err := findParameterGroups(ctx, conn, input) + + if err != nil { + return nil, err } - return retry.RetryContext(ctx, 30*time.Second, func() *retry.RetryError { - _, err := conn.ResetParameterGroup(ctx, &input) - if err != nil { - if errs.IsAErrorMessageContains[*awstypes.InvalidParameterGroupStateFault](err, " has pending changes") { - return retry.RetryableError(err) + return tfresource.AssertSingleValueResult(output) +} + +func findParameterGroups(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeParameterGroupsInput) ([]awstypes.ParameterGroup, error) { + var output []awstypes.ParameterGroup + + pages := memorydb.NewDescribeParameterGroupsPaginator(conn, input) + for pages.HasMorePages() { + page, err := pages.NextPage(ctx) + + if errs.IsA[*awstypes.ParameterGroupNotFoundFault](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: input, } - return retry.NonRetryableError(err) } - return nil - }) + + if err != nil { + return nil, err + } + + output = append(output, page.ParameterGroups...) + } + + return output, nil } -// modifyParameterGroupParameters updates the given parameters. -func modifyParameterGroupParameters(ctx context.Context, conn *memorydb.Client, name string, parameters []*awstypes.ParameterNameValue) error { - input := memorydb.UpdateParameterGroupInput{ - ParameterGroupName: aws.String(name), - ParameterNameValues: tfslices.Values(parameters), +func findParametersByParameterGroupName(ctx context.Context, conn *memorydb.Client, name string) ([]awstypes.Parameter, error) { + input := &memorydb.DescribeParametersInput{ + ParameterGroupName: aws.String(name), } - _, err := conn.UpdateParameterGroup(ctx, &input) - return err + + return findParameters(ctx, conn, input) } -// listParameterGroupParameters returns the user-defined MemoryDB parameters -// in the group with the given name and family. -// -// Parameters given in userDefined will be returned even if the value is equal -// to the default. -func listParameterGroupParameters(ctx context.Context, conn *memorydb.Client, family, name string, userDefined map[string]string) ([]awstypes.Parameter, error) { - query := func(ctx context.Context, parameterGroupName string) ([]awstypes.Parameter, error) { - input := memorydb.DescribeParametersInput{ - ParameterGroupName: aws.String(parameterGroupName), +func findParameters(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeParametersInput) ([]awstypes.Parameter, error) { + var output []awstypes.Parameter + + pages := memorydb.NewDescribeParametersPaginator(conn, input) + for pages.HasMorePages() { + page, err := pages.NextPage(ctx) + + if errs.IsA[*awstypes.ParameterGroupNotFoundFault](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: input, + } } - output, err := conn.DescribeParameters(ctx, &input) if err != nil { return nil, err } - return output.Parameters, nil + output = append(output, page.Parameters...) } + return output, nil +} + +// listParameterGroupParameters returns the user-defined MemoryDB parameters +// in the group with the given name and family. +// +// Parameters given in userDefined will be returned even if the value is equal +// to the default. +func listParameterGroupParameters(ctx context.Context, conn *memorydb.Client, family, name string, userDefined map[string]string) ([]awstypes.Parameter, error) { // There isn't an official API for defaults, and the mapping of family // to default parameter group name is a guess. - defaultsFamily := "default." + strings.ReplaceAll(family, "_", "-") + defaults, err := findParametersByParameterGroupName(ctx, conn, defaultsFamily) - defaults, err := query(ctx, defaultsFamily) if err != nil { - return nil, fmt.Errorf("list defaults for family %s: %w", defaultsFamily, err) + return nil, fmt.Errorf("reading MemoryDB Parameter Group (%s) parameters: %w", defaultsFamily, err) } defaultValueByName := map[string]string{} - for _, defaultPV := range defaults { - defaultValueByName[aws.ToString(defaultPV.Name)] = aws.ToString(defaultPV.Value) + for _, v := range defaults { + defaultValueByName[aws.ToString(v.Name)] = aws.ToString(v.Value) } - current, err := query(ctx, name) + current, err := findParametersByParameterGroupName(ctx, conn, name) + if err != nil { - return nil, err + return nil, fmt.Errorf("reading MemoryDB Parameter Group (%s) parameters: %w", name, err) } - var result []awstypes.Parameter + var apiObjects []awstypes.Parameter - for _, parameter := range current { - name := aws.ToString(parameter.Name) - currentValue := aws.ToString(parameter.Value) + for _, v := range current { + name := aws.ToString(v.Name) + currentValue := aws.ToString(v.Value) defaultValue := defaultValueByName[name] _, isUserDefined := userDefined[name] if currentValue != defaultValue || isUserDefined { - result = append(result, parameter) + apiObjects = append(apiObjects, v) } } - return result, nil + return apiObjects, nil } -// ParameterHash was copy-pasted from ElastiCache. -func ParameterHash(v interface{}) int { - var buf bytes.Buffer - m := v.(map[string]interface{}) - buf.WriteString(fmt.Sprintf("%s-", m[names.AttrName].(string))) - buf.WriteString(fmt.Sprintf("%s-", m[names.AttrValue].(string))) - - return create.StringHashcode(buf.String()) -} - -// ParameterChanges was copy-pasted from ElastiCache. -func ParameterChanges(o, n interface{}) (remove, addOrUpdate []*awstypes.ParameterNameValue) { +func parameterChanges(o, n interface{}) (remove, addOrUpdate []awstypes.ParameterNameValue) { if o == nil { o = new(schema.Set) } if n == nil { n = new(schema.Set) } + os, ns := o.(*schema.Set), n.(*schema.Set) - os := o.(*schema.Set) - ns := n.(*schema.Set) - - om := make(map[string]*awstypes.ParameterNameValue, os.Len()) - for _, raw := range os.List() { - param := raw.(map[string]interface{}) - om[param[names.AttrName].(string)] = expandParameterNameValue(param) + om := make(map[string]awstypes.ParameterNameValue, os.Len()) + for _, tfMapRaw := range os.List() { + tfMap := tfMapRaw.(map[string]interface{}) + om[tfMap[names.AttrName].(string)] = expandParameterNameValue(tfMap) } - nm := make(map[string]*awstypes.ParameterNameValue, len(addOrUpdate)) - for _, raw := range ns.List() { - param := raw.(map[string]interface{}) - nm[param[names.AttrName].(string)] = expandParameterNameValue(param) + nm := make(map[string]awstypes.ParameterNameValue, len(addOrUpdate)) + for _, tfMapRaw := range ns.List() { + tfMap := tfMapRaw.(map[string]interface{}) + nm[tfMap[names.AttrName].(string)] = expandParameterNameValue(tfMap) } // Remove: key is in old, but not in new - remove = make([]*awstypes.ParameterNameValue, 0, os.Len()) + remove = make([]awstypes.ParameterNameValue, 0, os.Len()) for k := range om { if _, ok := nm[k]; !ok { remove = append(remove, om[k]) @@ -370,7 +380,7 @@ func ParameterChanges(o, n interface{}) (remove, addOrUpdate []*awstypes.Paramet } // Add or Update: key is in new, but not in old or has changed value - addOrUpdate = make([]*awstypes.ParameterNameValue, 0, ns.Len()) + addOrUpdate = make([]awstypes.ParameterNameValue, 0, ns.Len()) for k, nv := range nm { ov, ok := om[k] if !ok || ok && (aws.ToString(nv.ParameterValue) != aws.ToString(ov.ParameterValue)) { @@ -381,23 +391,25 @@ func ParameterChanges(o, n interface{}) (remove, addOrUpdate []*awstypes.Paramet return remove, addOrUpdate } -func flattenParameters(list []awstypes.Parameter) []map[string]interface{} { - result := make([]map[string]interface{}, 0, len(list)) - for _, i := range list { - if i.Value != nil { - result = append(result, map[string]interface{}{ - names.AttrName: strings.ToLower(aws.ToString(i.Name)), - names.AttrValue: aws.ToString(i.Value), +func flattenParameters(apiObjects []awstypes.Parameter) []interface{} { + tfList := make([]interface{}, 0, len(apiObjects)) + + for _, apiObject := range apiObjects { + if apiObject.Value != nil { + tfList = append(tfList, map[string]interface{}{ + names.AttrName: strings.ToLower(aws.ToString(apiObject.Name)), + names.AttrValue: aws.ToString(apiObject.Value), }) } } - return result + + return tfList } -func expandParameterNameValue(param map[string]interface{}) *awstypes.ParameterNameValue { - return &awstypes.ParameterNameValue{ - ParameterName: aws.String(param[names.AttrName].(string)), - ParameterValue: aws.String(param[names.AttrValue].(string)), +func expandParameterNameValue(tfMap map[string]interface{}) awstypes.ParameterNameValue { + return awstypes.ParameterNameValue{ + ParameterName: aws.String(tfMap[names.AttrName].(string)), + ParameterValue: aws.String(tfMap[names.AttrValue].(string)), } } diff --git a/internal/service/memorydb/parameter_group_data_source.go b/internal/service/memorydb/parameter_group_data_source.go index 92a10dd628f..06bdf19d488 100644 --- a/internal/service/memorydb/parameter_group_data_source.go +++ b/internal/service/memorydb/parameter_group_data_source.go @@ -53,7 +53,7 @@ func dataSourceParameterGroup() *schema.Resource { }, }, }, - Set: ParameterHash, + Set: parameterHash, }, names.AttrTags: tftags.TagsSchemaComputed(), }, @@ -62,13 +62,11 @@ func dataSourceParameterGroup() *schema.Resource { func dataSourceParameterGroupRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig(ctx) name := d.Get(names.AttrName).(string) - - group, err := FindParameterGroupByName(ctx, conn, name) + group, err := findParameterGroupByName(ctx, conn, name) if err != nil { return sdkdiag.AppendFromErr(diags, tfresource.SingularDataSourceFindError("MemoryDB Parameter Group", err)) @@ -82,14 +80,14 @@ func dataSourceParameterGroupRead(ctx context.Context, d *schema.ResourceData, m d.Set(names.AttrName, group.Name) userDefinedParameters := createUserDefinedParameterMap(d) - parameters, err := listParameterGroupParameters(ctx, conn, d.Get(names.AttrFamily).(string), d.Id(), userDefinedParameters) + if err != nil { - return sdkdiag.AppendErrorf(diags, "listing parameters for MemoryDB Parameter Group (%s): %s", d.Id(), err) + return sdkdiag.AppendFromErr(diags, err) } if err := d.Set(names.AttrParameter, flattenParameters(parameters)); err != nil { - return sdkdiag.AppendErrorf(diags, "failed to set parameter: %s", err) + return sdkdiag.AppendErrorf(diags, "setting parameter: %s", err) } tags, err := listTags(ctx, conn, d.Get(names.AttrARN).(string)) From 252f9ac1b957f5aa89e47004c1d260ac93ab38b3 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Sun, 24 Nov 2024 17:26:22 -0500 Subject: [PATCH 085/118] d/aws_memorydb_parameter_group: Transparent tagging. --- .../service/memorydb/parameter_group_data_source.go | 13 +------------ internal/service/memorydb/service_package_gen.go | 3 +++ 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/internal/service/memorydb/parameter_group_data_source.go b/internal/service/memorydb/parameter_group_data_source.go index 06bdf19d488..f9f532a3e6b 100644 --- a/internal/service/memorydb/parameter_group_data_source.go +++ b/internal/service/memorydb/parameter_group_data_source.go @@ -17,6 +17,7 @@ import ( ) // @SDKDataSource("aws_memorydb_parameter_group", name="Parameter Group") +// @Tags(identifierAttribute="arn") func dataSourceParameterGroup() *schema.Resource { return &schema.Resource{ ReadWithoutTimeout: dataSourceParameterGroupRead, @@ -63,7 +64,6 @@ func dataSourceParameterGroup() *schema.Resource { func dataSourceParameterGroupRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig(ctx) name := d.Get(names.AttrName).(string) group, err := findParameterGroupByName(ctx, conn, name) @@ -73,7 +73,6 @@ func dataSourceParameterGroupRead(ctx context.Context, d *schema.ResourceData, m } d.SetId(aws.ToString(group.Name)) - d.Set(names.AttrARN, group.ARN) d.Set(names.AttrDescription, group.Description) d.Set(names.AttrFamily, group.Family) @@ -90,15 +89,5 @@ func dataSourceParameterGroupRead(ctx context.Context, d *schema.ResourceData, m return sdkdiag.AppendErrorf(diags, "setting parameter: %s", err) } - tags, err := listTags(ctx, conn, d.Get(names.AttrARN).(string)) - - if err != nil { - return sdkdiag.AppendErrorf(diags, "listing tags for MemoryDB Parameter Group (%s): %s", d.Id(), err) - } - - if err := d.Set(names.AttrTags, tags.IgnoreAWS().IgnoreConfig(ignoreTagsConfig).Map()); err != nil { - return sdkdiag.AppendErrorf(diags, "setting tags: %s", err) - } - return diags } diff --git a/internal/service/memorydb/service_package_gen.go b/internal/service/memorydb/service_package_gen.go index b49f97cd71b..1b6990357f4 100644 --- a/internal/service/memorydb/service_package_gen.go +++ b/internal/service/memorydb/service_package_gen.go @@ -44,6 +44,9 @@ func (p *servicePackage) SDKDataSources(ctx context.Context) []*types.ServicePac Factory: dataSourceParameterGroup, TypeName: "aws_memorydb_parameter_group", Name: "Parameter Group", + Tags: &types.ServicePackageResourceTags{ + IdentifierAttribute: names.AttrARN, + }, }, { Factory: dataSourceSnapshot, From ee7aed2c5adf8d1322bebe5dbb62e73fab2953df Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Sun, 24 Nov 2024 17:41:46 -0500 Subject: [PATCH 086/118] r/aws_memorydb_snapshot: Standardize. --- internal/service/memorydb/cluster.go | 8 +- internal/service/memorydb/exports_test.go | 1 + internal/service/memorydb/find.go | 21 --- internal/service/memorydb/snapshot.go | 164 ++++++++++++++---- .../service/memorydb/snapshot_data_source.go | 2 +- internal/service/memorydb/status.go | 17 -- internal/service/memorydb/wait.go | 31 ---- 7 files changed, 133 insertions(+), 111 deletions(-) diff --git a/internal/service/memorydb/cluster.go b/internal/service/memorydb/cluster.go index 3f6df61a561..6317a0eb66d 100644 --- a/internal/service/memorydb/cluster.go +++ b/internal/service/memorydb/cluster.go @@ -366,12 +366,12 @@ func resourceClusterCreate(ctx context.Context, d *schema.ResourceData, meta int return sdkdiag.AppendErrorf(diags, "creating MemoryDB Cluster (%s): %s", name, err) } - if _, err := waitClusterAvailable(ctx, conn, name, d.Timeout(schema.TimeoutCreate)); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Cluster (%s) create: %s", name, err) - } - d.SetId(name) + if _, err := waitClusterAvailable(ctx, conn, d.Id(), d.Timeout(schema.TimeoutCreate)); err != nil { + return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Cluster (%s) create: %s", d.Id(), err) + } + return append(diags, resourceClusterRead(ctx, d, meta)...) } diff --git a/internal/service/memorydb/exports_test.go b/internal/service/memorydb/exports_test.go index 4a1d1b3a712..2f067e40774 100644 --- a/internal/service/memorydb/exports_test.go +++ b/internal/service/memorydb/exports_test.go @@ -15,6 +15,7 @@ var ( FindACLByName = findACLByName FindClusterByName = findClusterByName FindParameterGroupByName = findParameterGroupByName + FindSnapshotByName = findSnapshotByName ParameterChanges = parameterChanges ParameterHash = parameterHash ) diff --git a/internal/service/memorydb/find.go b/internal/service/memorydb/find.go index 160b843ba89..68a13466614 100644 --- a/internal/service/memorydb/find.go +++ b/internal/service/memorydb/find.go @@ -14,27 +14,6 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/tfresource" ) -func FindSnapshotByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.Snapshot, error) { - input := memorydb.DescribeSnapshotsInput{ - SnapshotName: aws.String(name), - } - - output, err := conn.DescribeSnapshots(ctx, &input) - - if errs.IsA[*awstypes.SnapshotNotFoundFault](err) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: input, - } - } - - if err != nil { - return nil, err - } - - return tfresource.AssertSingleValueResult(output.Snapshots) -} - func FindSubnetGroupByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.SubnetGroup, error) { input := memorydb.DescribeSubnetGroupsInput{ SubnetGroupName: aws.String(name), diff --git a/internal/service/memorydb/snapshot.go b/internal/service/memorydb/snapshot.go index 4d4b00578a8..5c64b1f2b8b 100644 --- a/internal/service/memorydb/snapshot.go +++ b/internal/service/memorydb/snapshot.go @@ -6,12 +6,14 @@ package memorydb import ( "context" "log" + "time" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/memorydb" awstypes "github.com/aws/aws-sdk-go-v2/service/memorydb/types" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/id" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/create" @@ -37,8 +39,8 @@ func resourceSnapshot() *schema.Resource { }, Timeouts: &schema.ResourceTimeout{ - Create: schema.DefaultTimeout(snapshotAvailableTimeout), - Delete: schema.DefaultTimeout(snapshotDeletedTimeout), + Create: schema.DefaultTimeout(120 * time.Minute), + Delete: schema.DefaultTimeout(120 * time.Minute), }, CustomizeDiff: verify.SetTagsDiff, @@ -155,7 +157,6 @@ func resourceSnapshot() *schema.Resource { func resourceSnapshotCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) name := create.Name(d.Get(names.AttrName).(string), d.Get(names.AttrNamePrefix).(string)) @@ -169,33 +170,26 @@ func resourceSnapshotCreate(ctx context.Context, d *schema.ResourceData, meta in input.KmsKeyId = aws.String(v.(string)) } - log.Printf("[DEBUG] Creating MemoryDB Snapshot: %+v", input) _, err := conn.CreateSnapshot(ctx, input) if err != nil { return sdkdiag.AppendErrorf(diags, "creating MemoryDB Snapshot (%s): %s", name, err) } - if err := waitSnapshotAvailable(ctx, conn, name, d.Timeout(schema.TimeoutCreate)); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Snapshot (%s) to be created: %s", name, err) - } - d.SetId(name) - return append(diags, resourceSnapshotRead(ctx, d, meta)...) -} + if _, err := waitSnapshotAvailable(ctx, conn, d.Id(), d.Timeout(schema.TimeoutCreate)); err != nil { + return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Snapshot (%s) create: %s", d.Id(), err) + } -func resourceSnapshotUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - // Tags only. - return resourceSnapshotRead(ctx, d, meta) + return append(diags, resourceSnapshotRead(ctx, d, meta)...) } func resourceSnapshotRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - snapshot, err := FindSnapshotByName(ctx, conn, d.Id()) + snapshot, err := findSnapshotByName(ctx, conn, d.Id()) if !d.IsNewResource() && tfresource.NotFound(err) { log.Printf("[WARN] MemoryDB Snapshot (%s) not found, removing from state", d.Id()) @@ -209,7 +203,7 @@ func resourceSnapshotRead(ctx context.Context, d *schema.ResourceData, meta inte d.Set(names.AttrARN, snapshot.ARN) if err := d.Set("cluster_configuration", flattenClusterConfiguration(snapshot.ClusterConfiguration)); err != nil { - return sdkdiag.AppendErrorf(diags, "failed to set cluster_configuration for MemoryDB Snapshot (%s): %s", d.Id(), err) + return sdkdiag.AppendErrorf(diags, "setting cluster_configuration: %s", err) } d.Set(names.AttrClusterName, snapshot.ClusterConfiguration.Name) d.Set(names.AttrKMSKeyARN, snapshot.KmsKeyId) @@ -220,9 +214,13 @@ func resourceSnapshotRead(ctx context.Context, d *schema.ResourceData, meta inte return diags } +func resourceSnapshotUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + // Tags only. + return resourceSnapshotRead(ctx, d, meta) +} + func resourceSnapshotDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) log.Printf("[DEBUG] Deleting MemoryDB Snapshot: (%s)", d.Id()) @@ -238,34 +236,126 @@ func resourceSnapshotDelete(ctx context.Context, d *schema.ResourceData, meta in return sdkdiag.AppendErrorf(diags, "deleting MemoryDB Snapshot (%s): %s", d.Id(), err) } - if err := waitSnapshotDeleted(ctx, conn, d.Id(), d.Timeout(schema.TimeoutDelete)); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Snapshot (%s) to be deleted: %s", d.Id(), err) + if _, err := waitSnapshotDeleted(ctx, conn, d.Id(), d.Timeout(schema.TimeoutDelete)); err != nil { + return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB Snapshot (%s) delete: %s", d.Id(), err) } return diags } -func flattenClusterConfiguration(v *awstypes.ClusterConfiguration) []interface{} { - if v == nil { +func findSnapshotByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.Snapshot, error) { + input := &memorydb.DescribeSnapshotsInput{ + SnapshotName: aws.String(name), + } + + return findSnapshot(ctx, conn, input) +} + +func findSnapshot(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeSnapshotsInput) (*awstypes.Snapshot, error) { + output, err := findSnapshots(ctx, conn, input) + + if err != nil { + return nil, err + } + + return tfresource.AssertSingleValueResult(output) +} + +func findSnapshots(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeSnapshotsInput) ([]awstypes.Snapshot, error) { + var output []awstypes.Snapshot + + pages := memorydb.NewDescribeSnapshotsPaginator(conn, input) + for pages.HasMorePages() { + page, err := pages.NextPage(ctx) + + if errs.IsA[*awstypes.SnapshotNotFoundFault](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: input, + } + } + + if err != nil { + return nil, err + } + + output = append(output, page.Snapshots...) + } + + return output, nil +} + +func statusSnapshot(ctx context.Context, conn *memorydb.Client, name string) retry.StateRefreshFunc { + return func() (interface{}, string, error) { + output, err := findSnapshotByName(ctx, conn, name) + + if tfresource.NotFound(err) { + return nil, "", nil + } + + if err != nil { + return nil, "", err + } + + return output, aws.ToString(output.Status), nil + } +} + +func waitSnapshotAvailable(ctx context.Context, conn *memorydb.Client, name string, timeout time.Duration) (*awstypes.Snapshot, error) { + stateConf := &retry.StateChangeConf{ + Pending: []string{snapshotStatusCreating}, + Target: []string{snapshotStatusAvailable}, + Refresh: statusSnapshot(ctx, conn, name), + Timeout: timeout, + } + + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*awstypes.Snapshot); ok { + return output, err + } + + return nil, err +} + +func waitSnapshotDeleted(ctx context.Context, conn *memorydb.Client, name string, timeout time.Duration) (*awstypes.Snapshot, error) { + stateConf := &retry.StateChangeConf{ + Pending: []string{snapshotStatusDeleting}, + Target: []string{}, + Refresh: statusSnapshot(ctx, conn, name), + Timeout: timeout, + } + + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*awstypes.Snapshot); ok { + return output, err + } + + return nil, err +} + +func flattenClusterConfiguration(apiObject *awstypes.ClusterConfiguration) []interface{} { + if apiObject == nil { return []interface{}{} } - m := map[string]interface{}{ - names.AttrDescription: aws.ToString(v.Description), - names.AttrEngine: aws.ToString(v.Engine), - names.AttrEngineVersion: aws.ToString(v.EngineVersion), - "maintenance_window": aws.ToString(v.MaintenanceWindow), - names.AttrName: aws.ToString(v.Name), - "node_type": aws.ToString(v.NodeType), - "num_shards": aws.ToInt32(v.NumShards), - names.AttrParameterGroupName: aws.ToString(v.ParameterGroupName), - names.AttrPort: aws.ToInt32(v.Port), - "snapshot_retention_limit": aws.ToInt32(v.SnapshotRetentionLimit), - "snapshot_window": aws.ToString(v.SnapshotWindow), - "subnet_group_name": aws.ToString(v.SubnetGroupName), - names.AttrTopicARN: aws.ToString(v.TopicArn), - names.AttrVPCID: aws.ToString(v.VpcId), + tfMap := map[string]interface{}{ + names.AttrDescription: aws.ToString(apiObject.Description), + names.AttrEngine: aws.ToString(apiObject.Engine), + names.AttrEngineVersion: aws.ToString(apiObject.EngineVersion), + "maintenance_window": aws.ToString(apiObject.MaintenanceWindow), + names.AttrName: aws.ToString(apiObject.Name), + "node_type": aws.ToString(apiObject.NodeType), + "num_shards": aws.ToInt32(apiObject.NumShards), + names.AttrParameterGroupName: aws.ToString(apiObject.ParameterGroupName), + names.AttrPort: aws.ToInt32(apiObject.Port), + "snapshot_retention_limit": aws.ToInt32(apiObject.SnapshotRetentionLimit), + "snapshot_window": aws.ToString(apiObject.SnapshotWindow), + "subnet_group_name": aws.ToString(apiObject.SubnetGroupName), + names.AttrTopicARN: aws.ToString(apiObject.TopicArn), + names.AttrVPCID: aws.ToString(apiObject.VpcId), } - return []interface{}{m} + return []interface{}{tfMap} } diff --git a/internal/service/memorydb/snapshot_data_source.go b/internal/service/memorydb/snapshot_data_source.go index 179cb52f981..b5382061517 100644 --- a/internal/service/memorydb/snapshot_data_source.go +++ b/internal/service/memorydb/snapshot_data_source.go @@ -119,7 +119,7 @@ func dataSourceSnapshotRead(ctx context.Context, d *schema.ResourceData, meta in name := d.Get(names.AttrName).(string) - snapshot, err := FindSnapshotByName(ctx, conn, name) + snapshot, err := findSnapshotByName(ctx, conn, name) if err != nil { return sdkdiag.AppendFromErr(diags, tfresource.SingularDataSourceFindError("MemoryDB Snapshot", err)) diff --git a/internal/service/memorydb/status.go b/internal/service/memorydb/status.go index 338d3971aad..d9f009f04da 100644 --- a/internal/service/memorydb/status.go +++ b/internal/service/memorydb/status.go @@ -12,23 +12,6 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/tfresource" ) -// statusSnapshot fetches the MemoryDB Snapshot and its status. -func statusSnapshot(ctx context.Context, conn *memorydb.Client, snapshotName string) retry.StateRefreshFunc { - return func() (interface{}, string, error) { - snapshot, err := FindSnapshotByName(ctx, conn, snapshotName) - - if tfresource.NotFound(err) { - return nil, "", nil - } - - if err != nil { - return nil, "", err - } - - return snapshot, aws.ToString(snapshot.Status), nil - } -} - // statusUser fetches the MemoryDB user and its status. func statusUser(ctx context.Context, conn *memorydb.Client, userName string) retry.StateRefreshFunc { return func() (interface{}, string, error) { diff --git a/internal/service/memorydb/wait.go b/internal/service/memorydb/wait.go index f100245ba5e..14e6fdcfd5d 100644 --- a/internal/service/memorydb/wait.go +++ b/internal/service/memorydb/wait.go @@ -14,9 +14,6 @@ import ( const ( userActiveTimeout = 5 * time.Minute userDeletedTimeout = 5 * time.Minute - - snapshotAvailableTimeout = 120 * time.Minute - snapshotDeletedTimeout = 120 * time.Minute ) // waitUserActive waits for MemoryDB user to reach an active state after modifications. @@ -46,31 +43,3 @@ func waitUserDeleted(ctx context.Context, conn *memorydb.Client, userId string) return err } - -// waitSnapshotAvailable waits for MemoryDB snapshot to reach the available state. -func waitSnapshotAvailable(ctx context.Context, conn *memorydb.Client, snapshotId string, timeout time.Duration) error { - stateConf := &retry.StateChangeConf{ - Pending: []string{snapshotStatusCreating}, - Target: []string{snapshotStatusAvailable}, - Refresh: statusSnapshot(ctx, conn, snapshotId), - Timeout: timeout, - } - - _, err := stateConf.WaitForStateContext(ctx) - - return err -} - -// waitSnapshotDeleted waits for MemoryDB snapshot to be deleted. -func waitSnapshotDeleted(ctx context.Context, conn *memorydb.Client, snapshotId string, timeout time.Duration) error { - stateConf := &retry.StateChangeConf{ - Pending: []string{snapshotStatusDeleting}, - Target: []string{}, - Refresh: statusSnapshot(ctx, conn, snapshotId), - Timeout: timeout, - } - - _, err := stateConf.WaitForStateContext(ctx) - - return err -} From f232ffffc562f77d30dd4c344a062cfd5a48ffad Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Sun, 24 Nov 2024 17:44:10 -0500 Subject: [PATCH 087/118] d/aws_memorydb_snapshot: Transparent tagging. --- internal/service/memorydb/service_package_gen.go | 3 +++ internal/service/memorydb/snapshot_data_source.go | 15 ++------------- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/internal/service/memorydb/service_package_gen.go b/internal/service/memorydb/service_package_gen.go index 1b6990357f4..b2125e33747 100644 --- a/internal/service/memorydb/service_package_gen.go +++ b/internal/service/memorydb/service_package_gen.go @@ -52,6 +52,9 @@ func (p *servicePackage) SDKDataSources(ctx context.Context) []*types.ServicePac Factory: dataSourceSnapshot, TypeName: "aws_memorydb_snapshot", Name: "Snapshot", + Tags: &types.ServicePackageResourceTags{ + IdentifierAttribute: names.AttrARN, + }, }, { Factory: dataSourceSubnetGroup, diff --git a/internal/service/memorydb/snapshot_data_source.go b/internal/service/memorydb/snapshot_data_source.go index b5382061517..fa7304f64a5 100644 --- a/internal/service/memorydb/snapshot_data_source.go +++ b/internal/service/memorydb/snapshot_data_source.go @@ -17,6 +17,7 @@ import ( ) // @SDKDataSource("aws_memorydb_snapshot", name="Snapshot") +// @Tags(identifierAttribute="arn") func dataSourceSnapshot() *schema.Resource { return &schema.Resource{ ReadWithoutTimeout: dataSourceSnapshotRead, @@ -113,9 +114,7 @@ func dataSourceSnapshot() *schema.Resource { func dataSourceSnapshotRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig(ctx) name := d.Get(names.AttrName).(string) @@ -129,22 +128,12 @@ func dataSourceSnapshotRead(ctx context.Context, d *schema.ResourceData, meta in d.Set(names.AttrARN, snapshot.ARN) if err := d.Set("cluster_configuration", flattenClusterConfiguration(snapshot.ClusterConfiguration)); err != nil { - return sdkdiag.AppendErrorf(diags, "failed to set cluster_configuration for MemoryDB Snapshot (%s): %s", d.Id(), err) + return sdkdiag.AppendErrorf(diags, "setting cluster_configuration: %s", err) } d.Set(names.AttrClusterName, snapshot.ClusterConfiguration.Name) d.Set(names.AttrKMSKeyARN, snapshot.KmsKeyId) d.Set(names.AttrName, snapshot.Name) d.Set(names.AttrSource, snapshot.Source) - tags, err := listTags(ctx, conn, d.Get(names.AttrARN).(string)) - - if err != nil { - return sdkdiag.AppendErrorf(diags, "listing tags for MemoryDB Snapshot (%s): %s", d.Id(), err) - } - - if err := d.Set(names.AttrTags, tags.IgnoreAWS().IgnoreConfig(ignoreTagsConfig).Map()); err != nil { - return sdkdiag.AppendErrorf(diags, "setting tags: %s", err) - } - return diags } From 9b73acb8d89ecb70615ad6a70a8a388c4393d3b9 Mon Sep 17 00:00:00 2001 From: team-tf-cdk Date: Mon, 25 Nov 2024 00:23:14 +0000 Subject: [PATCH 088/118] cdktf: update index.html.markdown,r/xray_sampling_rule.html.markdown,r/xray_group.html.markdown,r/xray_encryption_config.html.markdown,r/workspaces_workspace.html.markdown,r/workspaces_ip_group.html.markdown,r/workspaces_directory.html.markdown,r/workspaces_connection_alias.html.markdown,r/worklink_website_certificate_authority_association.html.markdown,r/worklink_fleet.html.markdown,r/wafv2_web_acl_logging_configuration.html.markdown,r/wafv2_web_acl_association.html.markdown,r/wafv2_web_acl.html.markdown,r/wafv2_rule_group.html.markdown,r/wafv2_regex_pattern_set.html.markdown,r/wafv2_ip_set.html.markdown,r/wafregional_xss_match_set.html.markdown,r/wafregional_web_acl_association.html.markdown,r/wafregional_web_acl.html.markdown,r/wafregional_sql_injection_match_set.html.markdown,r/wafregional_size_constraint_set.html.markdown,r/wafregional_rule_group.html.markdown,r/wafregional_rule.html.markdown,r/wafregional_regex_pattern_set.html.markdown,r/wafregional_regex_match_set.html.markdown,r/wafregional_rate_based_rule.html.markdown,r/wafregional_ipset.html.markdown,r/wafregional_geo_match_set.html.markdown,r/wafregional_byte_match_set.html.markdown,r/waf_xss_match_set.html.markdown,r/waf_web_acl.html.markdown,r/waf_sql_injection_match_set.html.markdown,r/waf_size_constraint_set.html.markdown,r/waf_rule_group.html.markdown,r/waf_rule.html.markdown,r/waf_regex_pattern_set.html.markdown,r/waf_regex_match_set.html.markdown,r/waf_rate_based_rule.html.markdown,r/waf_ipset.html.markdown,r/waf_geo_match_set.html.markdown,r/waf_byte_match_set.html.markdown,r/vpn_gateway_route_propagation.html.markdown,r/vpn_gateway_attachment.html.markdown,r/vpn_gateway.html.markdown,r/vpn_connection_route.html.markdown,r/vpn_connection.html.markdown,r/vpclattice_target_group_attachment.html.markdown,r/vpclattice_target_group.html.markdown,r/vpclattice_service_network_vpc_association.html.markdown,r/vpclattice_service_network_service_association.html.markdown,r/vpclattice_service_network.html.markdown,r/vpclattice_service.html.markdown,r/vpclattice_resource_policy.html.markdown,r/vpclattice_listener_rule.html.markdown,r/vpclattice_listener.html.markdown,r/vpclattice_auth_policy.html.markdown,r/vpclattice_access_log_subscription.html.markdown,r/vpc_security_group_vpc_association.html.markdown,r/vpc_security_group_ingress_rule.html.markdown,r/vpc_security_group_egress_rule.html.markdown,r/vpc_peering_connection_options.html.markdown,r/vpc_peering_connection_accepter.html.markdown,r/vpc_peering_connection.html.markdown,r/vpc_network_performance_metric_subscription.html.markdown,r/vpc_ipv6_cidr_block_association.html.markdown,r/vpc_ipv4_cidr_block_association.html.markdown,r/vpc_ipam_scope.html.markdown,r/vpc_ipam_resource_discovery_association.html.markdown,r/vpc_ipam_resource_discovery.html.markdown,r/vpc_ipam_preview_next_cidr.html.markdown,r/vpc_ipam_pool_cidr_allocation.html.markdown,r/vpc_ipam_pool_cidr.html.markdown,r/vpc_ipam_pool.html.markdown,r/vpc_ipam_organization_admin_account.html.markdown,r/vpc_ipam.html.markdown,r/vpc_endpoint_subnet_association.html.markdown,r/vpc_endpoint_service_private_dns_verification.html.markdown,r/vpc_endpoint_service_allowed_principal.html.markdown,r/vpc_endpoint_service.html.markdown,r/vpc_endpoint_security_group_association.html.markdown,r/vpc_endpoint_route_table_association.html.markdown,r/vpc_endpoint_private_dns.html.markdown,r/vpc_endpoint_policy.html.markdown,r/vpc_endpoint_connection_notification.html.markdown,r/vpc_endpoint_connection_accepter.html.markdown,r/vpc_endpoint.html.markdown,r/vpc_dhcp_options_association.html.markdown,r/vpc_dhcp_options.html.markdown,r/vpc.html.markdown,r/volume_attachment.html.markdown,r/verifiedpermissions_schema.html.markdown,r/verifiedpermissions_policy_template.html.markdown,r/verifiedpermissions_policy_store.html.markdown,r/verifiedpermissions_policy.html.markdown,r/verifiedpermissions_identity_source.html.markdown,r/verifiedaccess_trust_provider.html.markdown,r/verifiedaccess_instance_trust_provider_attachment.html.markdown,r/verifiedaccess_instance_logging_configuration.html.markdown,r/verifiedaccess_instance.html.markdown,r/verifiedaccess_group.html.markdown,r/verifiedaccess_endpoint.html.markdown,r/transfer_workflow.html.markdown,r/transfer_user.html.markdown,r/transfer_tag.html.markdown,r/transfer_ssh_key.html.markdown,r/transfer_server.html.markdown,r/transfer_profile.html.markdown,r/transfer_connector.html.markdown,r/transfer_certificate.html.markdown,r/transfer_agreement.html.markdown,r/transfer_access.html.markdown,r/transcribe_vocabulary_filter.html.markdown,r/transcribe_vocabulary.html.markdown,r/transcribe_medical_vocabulary.html.markdown,r/transcribe_language_model.html.markdown,r/timestreamwrite_table.html.markdown,r/timestreamwrite_database.html.markdown,r/timestreaminfluxdb_db_instance.html.markdown,r/synthetics_group_association.html.markdown,r/synthetics_group.html.markdown,r/synthetics_canary.html.markdown,r/swf_domain.html.markdown,r/subnet.html.markdown,r/storagegateway_working_storage.html.markdown,r/storagegateway_upload_buffer.html.markdown,r/storagegateway_tape_pool.html.markdown,r/storagegateway_stored_iscsi_volume.html.markdown,r/storagegateway_smb_file_share.html.markdown,r/storagegateway_nfs_file_share.html.markdown,r/storagegateway_gateway.html.markdown,r/storagegateway_file_system_association.html.markdown,r/storagegateway_cached_iscsi_volume.html.markdown,r/storagegateway_cache.html.markdown,r/ssoadmin_trusted_token_issuer.html.markdown,r/ssoadmin_permissions_boundary_attachment.html.markdown,r/ssoadmin_permission_set_inline_policy.html.markdown,r/ssoadmin_permission_set.html.markdown,r/ssoadmin_managed_policy_attachment.html.markdown,r/ssoadmin_instance_access_control_attributes.html.markdown,r/ssoadmin_customer_managed_policy_attachment.html.markdown,r/ssoadmin_application_assignment_configuration.html.markdown,r/ssoadmin_application_assignment.html.markdown,r/ssoadmin_application_access_scope.html.markdown,r/ssoadmin_application.html.markdown,r/ssoadmin_account_assignment.html.markdown,r/ssmquicksetup_configuration_manager.html.markdown,r/ssmincidents_response_plan.html.markdown,r/ssmincidents_replication_set.html.markdown,r/ssmcontacts_rotation.html.markdown,r/ssmcontacts_plan.html.markdown,r/ssmcontacts_contact_channel.html.markdown,r/ssmcontacts_contact.html.markdown,r/ssm_service_setting.html.markdown,r/ssm_resource_data_sync.html.markdown,r/ssm_patch_group.html.markdown,r/ssm_patch_baseline.html.markdown,r/ssm_parameter.html.markdown,r/ssm_maintenance_window_task.html.markdown,r/ssm_maintenance_window_target.html.markdown,r/ssm_maintenance_window.html.markdown,r/ssm_document.html.markdown,r/ssm_default_patch_baseline.html.markdown,r/ssm_association.html.markdown,r/ssm_activation.html.markdown,r/sqs_queue_redrive_policy.html.markdown,r/sqs_queue_redrive_allow_policy.html.markdown,r/sqs_queue_policy.html.markdown,r/sqs_queue.html.markdown,r/spot_instance_request.html.markdown,r/spot_fleet_request.html.markdown,r/spot_datafeed_subscription.html.markdown,r/sns_topic_subscription.html.markdown,r/sns_topic_policy.html.markdown,r/sns_topic_data_protection_policy.html.markdown,r/sns_topic.html.markdown,r/sns_sms_preferences.html.markdown,r/sns_platform_application.html.markdown,r/snapshot_create_volume_permission.html.markdown,r/simpledb_domain.html.markdown,r/signer_signing_profile_permission.html.markdown,r/signer_signing_profile.html.markdown,r/signer_signing_job.html.markdown,r/shield_subscription.html.markdown,r/shield_protection_health_check_association.html.markdown,r/shield_protection_group.html.markdown,r/shield_protection.html.markdown,r/shield_proactive_engagement.html.markdown,r/shield_drt_access_role_arn_association.html.markdown,r/shield_drt_access_log_bucket_association.html.markdown,r/shield_application_layer_automatic_response.html.markdown,r/sfn_state_machine.html.markdown,r/sfn_alias.html.markdown,r/sfn_activity.html.markdown,r/sesv2_email_identity_policy.html.markdown,r/sesv2_email_identity_mail_from_attributes.html.markdown,r/sesv2_email_identity_feedback_attributes.html.markdown,r/sesv2_email_identity.html.markdown,r/sesv2_dedicated_ip_pool.html.markdown,r/sesv2_dedicated_ip_assignment.html.markdown,r/sesv2_contact_list.html.markdown,r/sesv2_configuration_set_event_destination.html.markdown,r/sesv2_configuration_set.html.markdown,r/sesv2_account_vdm_attributes.html.markdown,r/sesv2_account_suppression_attributes.html.markdown,r/ses_template.html.markdown,r/ses_receipt_rule_set.html.markdown,r/ses_receipt_rule.html.markdown,r/ses_receipt_filter.html.markdown,r/ses_identity_policy.html.markdown,r/ses_identity_notification_topic.html.markdown,r/ses_event_destination.html.markdown,r/ses_email_identity.html.markdown,r/ses_domain_mail_from.html.markdown,r/ses_domain_identity_verification.html.markdown,r/ses_domain_identity.html.markdown,r/ses_domain_dkim.html.markdown,r/ses_configuration_set.html.markdown,r/ses_active_receipt_rule_set.html.markdown,r/servicequotas_template_association.html.markdown,r/servicequotas_template.html.markdown,r/servicequotas_service_quota.html.markdown,r/servicecatalogappregistry_application.html.markdown,r/servicecatalog_tag_option_resource_association.html.markdown,r/servicecatalog_tag_option.html.markdown,r/servicecatalog_service_action.html.markdown,r/servicecatalog_provisioning_artifact.html.markdown,r/servicecatalog_provisioned_product.html.markdown,r/servicecatalog_product_portfolio_association.html.markdown,r/servicecatalog_product.html.markdown,r/servicecatalog_principal_portfolio_association.html.markdown,r/servicecatalog_portfolio_share.html.markdown,r/servicecatalog_portfolio.html.markdown,r/servicecatalog_organizations_access.html.markdown,r/servicecatalog_constraint.html.markdown,r/servicecatalog_budget_resource_association.html.markdown,r/service_discovery_service.html.markdown,r/service_discovery_public_dns_namespace.html.markdown,r/service_discovery_private_dns_namespace.html.markdown,r/service_discovery_instance.html.markdown,r/service_discovery_http_namespace.html.markdown,r/serverlessapplicationrepository_cloudformation_stack.html.markdown,r/securitylake_subscriber_notification.html.markdown,r/securitylake_subscriber.html.markdown,r/securitylake_data_lake.html.markdown,r/securitylake_custom_log_source.html.markdown,r/securitylake_aws_log_source.html.markdown,r/securityhub_standards_subscription.html.markdown,r/securityhub_standards_control_association.html.markdown,r/securityhub_standards_control.html.markdown,r/securityhub_product_subscription.html.markdown,r/securityhub_organization_configuration.html.markdown,r/securityhub_organization_admin_account.html.markdown,r/securityhub_member.html.markdown,r/securityhub_invite_accepter.html.markdown,r/securityhub_insight.html.markdown,r/securityhub_finding_aggregator.html.markdown,r/securityhub_configuration_policy_association.markdown,r/securityhub_configuration_policy.html.markdown,r/securityhub_automation_rule.html.markdown,r/securityhub_action_target.html.markdown,r/securityhub_account.html.markdown,r/security_group_rule.html.markdown,r/security_group.html.markdown,r/secretsmanager_secret_version.html.markdown,r/secretsmanager_secret_rotation.html.markdown,r/secretsmanager_secret_policy.html.markdown,r/secretsmanager_secret.html.markdown,r/schemas_schema.html.markdown,r/schemas_registry_policy.html.markdown,r/schemas_registry.html.markdown,r/schemas_discoverer.html.markdown,r/scheduler_schedule_group.html.markdown,r/scheduler_schedule.html.markdown,r/sagemaker_workteam.html.markdown,r/sagemaker_workforce.html.markdown,r/sagemaker_user_profile.html.markdown,r/sagemaker_studio_lifecycle_config.html.markdown,r/sagemaker_space.html.markdown,r/sagemaker_servicecatalog_portfolio_status.html.markdown,r/sagemaker_project.html.markdown,r/sagemaker_pipeline.html.markdown,r/sagemaker_notebook_instance_lifecycle_configuration.html.markdown,r/sagemaker_notebook_instance.html.markdown,r/sagemaker_monitoring_schedule.html.markdown,r/sagemaker_model_package_group_policy.html.markdown,r/sagemaker_model_package_group.html.markdown,r/sagemaker_model.html.markdown,r/sagemaker_mlflow_tracking_server.html.markdown,r/sagemaker_image_version.html.markdown,r/sagemaker_image.html.markdown,r/sagemaker_human_task_ui.html.markdown,r/sagemaker_hub.html.markdown,r/sagemaker_flow_definition.html.markdown,r/sagemaker_feature_group.html.markdown,r/sagemaker_endpoint_configuration.html.markdown,r/sagemaker_endpoint.html.markdown,r/sagemaker_domain.html.markdown,r/sagemaker_device_fleet.html.markdown,r/sagemaker_device.html.markdown,r/sagemaker_data_quality_job_definition.html.markdown,r/sagemaker_code_repository.html.markdown,r/sagemaker_app_image_config.html.markdown,r/sagemaker_app.html.markdown,r/s3outposts_endpoint.html.markdown,r/s3control_storage_lens_configuration.html.markdown,r/s3control_object_lambda_access_point_policy.html.markdown,r/s3control_object_lambda_access_point.html.markdown,r/s3control_multi_region_access_point_policy.html.markdown,r/s3control_multi_region_access_point.html.markdown,r/s3control_bucket_policy.html.markdown,r/s3control_bucket_lifecycle_configuration.html.markdown,r/s3control_bucket.html.markdown,r/s3control_access_point_policy.html.markdown,r/s3control_access_grants_location.html.markdown,r/s3control_access_grants_instance_resource_policy.html.markdown,r/s3control_access_grants_instance.html.markdown,r/s3control_access_grant.html.markdown,r/s3_object_copy.html.markdown,r/s3_object.html.markdown,r/s3_directory_bucket.html.markdown,r/s3_bucket_website_configuration.html.markdown,r/s3_bucket_versioning.html.markdown,r/s3_bucket_server_side_encryption_configuration.html.markdown,r/s3_bucket_request_payment_configuration.html.markdown,r/s3_bucket_replication_configuration.html.markdown,r/s3_bucket_public_access_block.html.markdown,r/s3_bucket_policy.html.markdown,r/s3_bucket_ownership_controls.html.markdown,r/s3_bucket_object_lock_configuration.html.markdown,r/s3_bucket_object.html.markdown,r/s3_bucket_notification.html.markdown,r/s3_bucket_metric.html.markdown,r/s3_bucket_logging.html.markdown,r/s3_bucket_lifecycle_configuration.html.markdown,r/s3_bucket_inventory.html.markdown,r/s3_bucket_intelligent_tiering_configuration.html.markdown,r/s3_bucket_cors_configuration.html.markdown,r/s3_bucket_analytics_configuration.html.markdown,r/s3_bucket_acl.html.markdown,r/s3_bucket_accelerate_configuration.html.markdown,r/s3_bucket.html.markdown,r/s3_account_public_access_block.html.markdown,r/s3_access_point.html.markdown,r/rum_metrics_destination.html.markdown,r/rum_app_monitor.html.markdown,r/route_table_association.html.markdown,r/route_table.html.markdown,r/route53recoveryreadiness_resource_set.html.markdown,r/route53recoveryreadiness_recovery_group.html.markdown,r/route53recoveryreadiness_readiness_check.html.markdown,r/route53recoveryreadiness_cell.html.markdown,r/route53recoverycontrolconfig_safety_rule.html.markdown,r/route53recoverycontrolconfig_routing_control.html.markdown,r/route53recoverycontrolconfig_control_panel.html.markdown,r/route53recoverycontrolconfig_cluster.html.markdown,r/route53profiles_resource_association.html.markdown,r/route53profiles_profile.html.markdown,r/route53profiles_association.html.markdown,r/route53domains_registered_domain.html.markdown,r/route53domains_delegation_signer_record.html.markdown,r/route53_zone_association.html.markdown,r/route53_zone.html.markdown,r/route53_vpc_association_authorization.html.markdown,r/route53_traffic_policy_instance.html.markdown,r/route53_traffic_policy.html.markdown,r/route53_resolver_rule_association.html.markdown,r/route53_resolver_rule.html.markdown,r/route53_resolver_query_log_config_association.html.markdown,r/route53_resolver_query_log_config.html.markdown,r/route53_resolver_firewall_rule_group_association.html.markdown,r/route53_resolver_firewall_rule_group.html.markdown,r/route53_resolver_firewall_rule.html.markdown,r/route53_resolver_firewall_domain_list.html.markdown,r/route53_resolver_firewall_config.html.markdown,r/route53_resolver_endpoint.html.markdown,r/route53_resolver_dnssec_config.html.markdown,r/route53_resolver_config.html.markdown,r/route53_record.html.markdown,r/route53_query_log.html.markdown,r/route53_key_signing_key.html.markdown,r/route53_hosted_zone_dnssec.html.markdown,r/route53_health_check.html.markdown,r/route53_delegation_set.html.markdown,r/route53_cidr_location.html.markdown,r/route53_cidr_collection.html.markdown,r/route.html.markdown,r/rolesanywhere_trust_anchor.html.markdown,r/rolesanywhere_profile.html.markdown,r/resourcegroups_resource.html.markdown,r/resourcegroups_group.html.markdown,r/resourceexplorer2_view.html.markdown,r/resourceexplorer2_index.html.markdown,r/resiliencehub_resiliency_policy.html.markdown,r/rekognition_stream_processor.html.markdown,r/rekognition_project.html.markdown,r/rekognition_collection.html.markdown,r/redshiftserverless_workgroup.html.markdown,r/redshiftserverless_usage_limit.html.markdown,r/redshiftserverless_snapshot.html.markdown,r/redshiftserverless_resource_policy.html.markdown,r/redshiftserverless_namespace.html.markdown,r/redshiftserverless_endpoint_access.html.markdown,r/redshiftserverless_custom_domain_association.html.markdown,r/redshiftdata_statement.html.markdown,r/redshift_usage_limit.html.markdown,r/redshift_subnet_group.html.markdown,r/redshift_snapshot_schedule_association.html.markdown,r/redshift_snapshot_schedule.html.markdown,r/redshift_snapshot_copy_grant.html.markdown,r/redshift_snapshot_copy.html.markdown,r/redshift_scheduled_action.html.markdown,r/redshift_resource_policy.html.markdown,r/redshift_partner.html.markdown,r/redshift_parameter_group.html.markdown,r/redshift_logging.html.markdown,r/redshift_hsm_configuration.html.markdown,r/redshift_hsm_client_certificate.html.markdown,r/redshift_event_subscription.html.markdown,r/redshift_endpoint_authorization.html.markdown,r/redshift_endpoint_access.html.markdown,r/redshift_data_share_consumer_association.html.markdown,r/redshift_data_share_authorization.html.markdown,r/redshift_cluster_snapshot.html.markdown,r/redshift_cluster_iam_roles.html.markdown,r/redshift_cluster.html.markdown,r/redshift_authentication_profile.html.markdown,r/rds_reserved_instance.html.markdown,r/rds_integration.html.markdown,r/rds_instance_state.html.markdown,r/rds_global_cluster.html.markdown,r/rds_export_task.html.markdown,r/rds_custom_db_engine_version.markdown,r/rds_cluster_role_association.html.markdown,r/rds_cluster_parameter_group.html.markdown,r/rds_cluster_instance.html.markdown,r/rds_cluster_endpoint.html.markdown,r/rds_cluster_activity_stream.html.markdown,r/rds_cluster.html.markdown,r/rds_certificate.html.markdown,r/rbin_rule.html.markdown,r/ram_sharing_with_organization.html.markdown,r/ram_resource_share_accepter.html.markdown,r/ram_resource_share.html.markdown,r/ram_resource_association.html.markdown,r/ram_principal_association.html.markdown,r/quicksight_vpc_connection.html.markdown,r/quicksight_user.html.markdown,r/quicksight_theme.html.markdown,r/quicksight_template_alias.html.markdown,r/quicksight_template.html.markdown,r/quicksight_refresh_schedule.html.markdown,r/quicksight_namespace.html.markdown,r/quicksight_ingestion.html.markdown,r/quicksight_iam_policy_assignment.html.markdown,r/quicksight_group_membership.html.markdown,r/quicksight_group.html.markdown,r/quicksight_folder_membership.html.markdown,r/quicksight_folder.html.markdown,r/quicksight_data_source.html.markdown,r/quicksight_data_set.html.markdown,r/quicksight_dashboard.html.markdown,r/quicksight_analysis.html.markdown,r/quicksight_account_subscription.html.markdown,r/qldb_stream.html.markdown,r/qldb_ledger.html.markdown,r/proxy_protocol_policy.html.markdown,r/prometheus_workspace.html.markdown,r/prometheus_scraper.html.markdown,r/prometheus_rule_group_namespace.html.markdown,r/prometheus_alert_manager_definition.html.markdown,r/placement_group.html.markdown,r/pipes_pipe.html.markdown,r/pinpointsmsvoicev2_phone_number.html.markdown,r/pinpointsmsvoicev2_opt_out_list.html.markdown,r/pinpointsmsvoicev2_configuration_set.html.markdown,r/pinpoint_sms_channel.html.markdown,r/pinpoint_gcm_channel.html.markdown,r/pinpoint_event_stream.html.markdown,r/pinpoint_email_template.markdown,r/pinpoint_email_channel.html.markdown,r/pinpoint_baidu_channel.html.markdown,r/pinpoint_app.html.markdown,r/pinpoint_apns_voip_sandbox_channel.html.markdown,r/pinpoint_apns_voip_channel.html.markdown,r/pinpoint_apns_sandbox_channel.html.markdown,r/pinpoint_apns_channel.html.markdown,r/pinpoint_adm_channel.html.markdown,r/paymentcryptography_key_alias.html.markdown,r/paymentcryptography_key.html.markdown,r/osis_pipeline.html.markdown,r/organizations_resource_policy.html.markdown,r/organizations_policy_attachment.html.markdown,r/organizations_policy.html.markdown,r/organizations_organizational_unit.html.markdown,r/organizations_organization.html.markdown,r/organizations_delegated_administrator.html.markdown,r/organizations_account.html.markdown,r/opsworks_user_profile.html.markdown,r/opsworks_static_web_layer.html.markdown,r/opsworks_stack.html.markdown,r/opsworks_rds_db_instance.html.markdown,r/opsworks_rails_app_layer.html.markdown,r/opsworks_php_app_layer.html.markdown,r/opsworks_permission.html.markdown,r/opsworks_nodejs_app_layer.html.markdown,r/opsworks_mysql_layer.html.markdown,r/opsworks_memcached_layer.html.markdown,r/opsworks_java_app_layer.html.markdown,r/opsworks_instance.html.markdown,r/opsworks_haproxy_layer.html.markdown,r/opsworks_ganglia_layer.html.markdown,r/opsworks_ecs_cluster_layer.html.markdown,r/opsworks_custom_layer.html.markdown,r/opsworks_application.html.markdown,r/opensearchserverless_vpc_endpoint.html.markdown,r/opensearchserverless_security_policy.html.markdown,r/opensearchserverless_security_config.html.markdown,r/opensearchserverless_lifecycle_policy.html.markdown,r/opensearchserverless_collection.html.markdown,r/opensearchserverless_access_policy.html.markdown,r/opensearch_vpc_endpoint.html.markdown,r/opensearch_package_association.html.markdown,r/opensearch_package.html.markdown,r/opensearch_outbound_connection.html.markdown,r/opensearch_inbound_connection_accepter.html.markdown,r/opensearch_domain_saml_options.html.markdown,r/opensearch_domain_policy.html.markdown,r/opensearch_domain.html.markdown,r/opensearch_authorize_vpc_endpoint_access.html.markdown,r/oam_sink_policy.html.markdown,r/oam_sink.html.markdown,r/oam_link.html.markdown,r/networkmonitor_probe.html.markdown,r/networkmonitor_monitor.html.markdown,r/networkmanager_vpc_attachment.html.markdown,r/networkmanager_transit_gateway_route_table_attachment.html.markdown,r/networkmanager_transit_gateway_registration.html.markdown,r/networkmanager_transit_gateway_peering.html.markdown,r/networkmanager_transit_gateway_connect_peer_association.html.markdown,r/networkmanager_site_to_site_vpn_attachment.html.markdown,r/networkmanager_site.html.markdown,r/networkmanager_link_association.html.markdown,r/networkmanager_link.html.markdown,r/networkmanager_global_network.html.markdown,r/networkmanager_device.html.markdown,r/networkmanager_customer_gateway_association.html.markdown,r/networkmanager_core_network_policy_attachment.html.markdown,r/networkmanager_core_network.html.markdown,r/networkmanager_connection.html.markdown,r/networkmanager_connect_peer.html.markdown,r/networkmanager_connect_attachment.html.markdown,r/networkmanager_attachment_accepter.html.markdown,r/networkfirewall_tls_inspection_configuration.html.markdown,r/networkfirewall_rule_group.html.markdown,r/networkfirewall_resource_policy.html.markdown,r/networkfirewall_logging_configuration.html.markdown,r/networkfirewall_firewall_policy.html.markdown,r/networkfirewall_firewall.html.markdown,r/network_interface_sg_attachment.html.markdown,r/network_interface_attachment.html.markdown,r/network_interface.html.markdown,r/network_acl_rule.html.markdown,r/network_acl_association.html.markdown,r/network_acl.html.markdown,r/neptune_subnet_group.html.markdown,r/neptune_parameter_group.html.markdown,r/neptune_global_cluster.html.markdown,r/neptune_event_subscription.html.markdown,r/neptune_cluster_snapshot.html.markdown,r/neptune_cluster_parameter_group.html.markdown,r/neptune_cluster_instance.html.markdown,r/neptune_cluster_endpoint.html.markdown,r/neptune_cluster.html.markdown,r/nat_gateway.html.markdown,r/mwaa_environment.html.markdown,r/mskconnect_worker_configuration.html.markdown,r/mskconnect_custom_plugin.html.markdown,r/mskconnect_connector.html.markdown,r/msk_vpc_connection.html.markdown,r/msk_serverless_cluster.html.markdown,r/msk_scram_secret_association.html.markdown,r/msk_replicator.html.markdown,r/msk_configuration.html.markdown,r/msk_cluster_policy.html.markdown,r/msk_cluster.html.markdown,r/mq_configuration.html.markdown,r/mq_broker.html.markdown,r/memorydb_user.html.markdown,r/memorydb_subnet_group.html.markdown,r/memorydb_snapshot.html.markdown,r/memorydb_parameter_group.html.markdown,r/memorydb_cluster.html.markdown,r/memorydb_acl.html.markdown,r/medialive_multiplex_program.html.markdown,r/medialive_multiplex.html.markdown,r/medialive_input_security_group.html.markdown,r/medialive_input.html.markdown,r/medialive_channel.html.markdown,r/media_store_container_policy.html.markdown,r/media_store_container.html.markdown,r/media_package_channel.html.markdown,r/media_convert_queue.html.markdown,r/main_route_table_association.html.markdown,r/macie2_organization_admin_account.html.markdown,r/macie2_member.html.markdown,r/macie2_invitation_accepter.html.markdown,r/macie2_findings_filter.html.markdown,r/macie2_custom_data_identifier.html.markdown,r/macie2_classification_job.html.markdown,r/macie2_classification_export_configuration.html.markdown,r/macie2_account.html.markdown,r/m2_environment.html.markdown,r/m2_deployment.html.markdown,r/m2_application.html.markdown,r/location_tracker_association.html.markdown,r/location_tracker.html.markdown,r/location_route_calculator.html.markdown,r/location_place_index.html.markdown,r/location_map.html.markdown,r/location_geofence_collection.html.markdown,r/load_balancer_policy.html.markdown,r/load_balancer_listener_policy.html.markdown,r/load_balancer_backend_server_policy.html.markdown,r/lightsail_static_ip_attachment.html.markdown,r/lightsail_static_ip.html.markdown,r/lightsail_lb_stickiness_policy.html.markdown,r/lightsail_lb_https_redirection_policy.html.markdown,r/lightsail_lb_certificate_attachment.html.markdown,r/lightsail_lb_certificate.html.markdown,r/lightsail_lb_attachment.html.markdown,r/lightsail_lb.html.markdown,r/lightsail_key_pair.html.markdown,r/lightsail_instance_public_ports.html.markdown,r/lightsail_instance.html.markdown,r/lightsail_domain_entry.html.markdown,r/lightsail_domain.html.markdown,r/lightsail_distribution.html.markdown,r/lightsail_disk_attachment.html.markdown,r/lightsail_disk.html.markdown,r/lightsail_database.html.markdown,r/lightsail_container_service_deployment_version.html.markdown,r/lightsail_container_service.html.markdown,r/lightsail_certificate.html.markdown,r/lightsail_bucket_resource_access.html.markdown,r/lightsail_bucket_access_key.html.markdown,r/lightsail_bucket.html.markdown,r/licensemanager_license_configuration.html.markdown,r/licensemanager_grant_accepter.html.markdown,r/licensemanager_grant.html.markdown,r/licensemanager_association.html.markdown,r/lexv2models_slot_type.html.markdown,r/lexv2models_slot.html.markdown,r/lexv2models_intent.html.markdown,r/lexv2models_bot_version.html.markdown,r/lexv2models_bot_locale.html.markdown,r/lexv2models_bot.html.markdown,r/lex_slot_type.html.markdown,r/lex_intent.html.markdown,r/lex_bot_alias.html.markdown,r/lex_bot.html.markdown,r/lb_trust_store_revocation.html.markdown,r/lb_trust_store.html.markdown,r/lb_target_group_attachment.html.markdown,r/lb_target_group.html.markdown,r/lb_ssl_negotiation_policy.html.markdown,r/lb_listener_rule.html.markdown,r/lb_listener_certificate.html.markdown,r/lb_listener.html.markdown,r/lb_cookie_stickiness_policy.html.markdown,r/lb.html.markdown,r/launch_template.html.markdown,r/launch_configuration.html.markdown,r/lambda_runtime_management_config.html.markdown,r/lambda_provisioned_concurrency_config.html.markdown,r/lambda_permission.html.markdown,r/lambda_layer_version_permission.html.markdown,r/lambda_layer_version.html.markdown,r/lambda_invocation.html.markdown,r/lambda_function_url.html.markdown,r/lambda_function_recursion_config.html.markdown,r/lambda_function_event_invoke_config.html.markdown,r/lambda_function.html.markdown,r/lambda_event_source_mapping.html.markdown,r/lambda_code_signing_config.html.markdown,r/lambda_alias.html.markdown,r/lakeformation_resource_lf_tags.html.markdown,r/lakeformation_resource_lf_tag.html.markdown,r/lakeformation_resource.html.markdown,r/lakeformation_permissions.html.markdown,r/lakeformation_lf_tag.html.markdown,r/lakeformation_data_lake_settings.html.markdown,r/lakeformation_data_cells_filter.html.markdown,r/kms_replica_key.html.markdown,r/kms_replica_external_key.html.markdown,r/kms_key_policy.html.markdown,r/kms_key.html.markdown,r/kms_grant.html.markdown,r/kms_external_key.html.markdown,r/kms_custom_key_store.html.markdown,r/kms_ciphertext.html.markdown,r/kms_alias.html.markdown,r/kinesisanalyticsv2_application_snapshot.html.markdown,r/kinesisanalyticsv2_application.html.markdown,r/kinesis_video_stream.html.markdown,r/kinesis_stream_consumer.html.markdown,r/kinesis_stream.html.markdown,r/kinesis_resource_policy.html.markdown,r/kinesis_firehose_delivery_stream.html.markdown,r/kinesis_analytics_application.html.markdown,r/keyspaces_table.html.markdown,r/keyspaces_keyspace.html.markdown,r/key_pair.html.markdown,r/kendra_thesaurus.html.markdown,r/kendra_query_suggestions_block_list.html.markdown,r/kendra_index.html.markdown,r/kendra_faq.html.markdown,r/kendra_experience.html.markdown,r/kendra_data_source.html.markdown,r/ivschat_room.html.markdown,r/ivschat_logging_configuration.html.markdown,r/ivs_recording_configuration.html.markdown,r/ivs_playback_key_pair.html.markdown,r/ivs_channel.html.markdown,r/iot_topic_rule_destination.html.markdown,r/iot_topic_rule.html.markdown,r/iot_thing_type.html.markdown,r/iot_thing_principal_attachment.html.markdown,r/iot_thing_group_membership.html.markdown,r/iot_thing_group.html.markdown,r/iot_thing.html.markdown,r/iot_role_alias.html.markdown,r/iot_provisioning_template.html.markdown,r/iot_policy_attachment.html.markdown,r/iot_policy.html.markdown,r/iot_logging_options.html.markdown,r/iot_indexing_configuration.html.markdown,r/iot_event_configurations.html.markdown,r/iot_domain_configuration.html.markdown,r/iot_certificate.html.markdown,r/iot_ca_certificate.html.markdown,r/iot_billing_group.html.markdown,r/iot_authorizer.html.markdown,r/internetmonitor_monitor.html.markdown,r/internet_gateway_attachment.html.markdown,r/internet_gateway.html.markdown,r/instance.html.markdown,r/inspector_resource_group.html.markdown,r/inspector_assessment_template.html.markdown,r/inspector_assessment_target.html.markdown,r/inspector2_organization_configuration.html.markdown,r/inspector2_member_association.html.markdown,r/inspector2_enabler.html.markdown,r/inspector2_delegated_admin_account.html.markdown,r/imagebuilder_workflow.html.markdown,r/imagebuilder_lifecycle_policy.html.markdown,r/imagebuilder_infrastructure_configuration.html.markdown,r/imagebuilder_image_recipe.html.markdown,r/imagebuilder_image_pipeline.html.markdown,r/imagebuilder_image.html.markdown,r/imagebuilder_distribution_configuration.html.markdown,r/imagebuilder_container_recipe.html.markdown,r/imagebuilder_component.html.markdown,r/identitystore_user.html.markdown,r/identitystore_group_membership.html.markdown,r/identitystore_group.html.markdown,r/iam_virtual_mfa_device.html.markdown,r/iam_user_ssh_key.html.markdown,r/iam_user_policy_attachments_exclusive.html.markdown,r/iam_user_policy_attachment.html.markdown,r/iam_user_policy.html.markdown,r/iam_user_policies_exclusive.html.markdown,r/iam_user_login_profile.html.markdown,r/iam_user_group_membership.html.markdown,r/iam_user.html.markdown,r/iam_signing_certificate.html.markdown,r/iam_service_specific_credential.html.markdown,r/iam_service_linked_role.html.markdown,r/iam_server_certificate.html.markdown,r/iam_security_token_service_preferences.html.markdown,r/iam_saml_provider.html.markdown,r/iam_role_policy_attachments_exclusive.html.markdown,r/iam_role_policy_attachment.html.markdown,r/iam_role_policy.html.markdown,r/iam_role_policies_exclusive.html.markdown,r/iam_role.html.markdown,r/iam_policy_attachment.html.markdown,r/iam_policy.html.markdown,r/iam_openid_connect_provider.html.markdown,r/iam_instance_profile.html.markdown,r/iam_group_policy_attachments_exclusive.html.markdown,r/iam_group_policy_attachment.html.markdown,r/iam_group_policy.html.markdown,r/iam_group_policies_exclusive.html.markdown,r/iam_group_membership.html.markdown,r/iam_group.html.markdown,r/iam_account_password_policy.html.markdown,r/iam_account_alias.html.markdown,r/iam_access_key.html.markdown,r/guardduty_threatintelset.html.markdown,r/guardduty_publishing_destination.html.markdown,r/guardduty_organization_configuration_feature.html.markdown,r/guardduty_organization_configuration.html.markdown,r/guardduty_organization_admin_account.html.markdown,r/guardduty_member.html.markdown,r/guardduty_malware_protection_plan.html.markdown,r/guardduty_ipset.html.markdown,r/guardduty_invite_accepter.html.markdown,r/guardduty_filter.html.markdown,r/guardduty_detector_feature.html.markdown,r/guardduty_detector.html.markdown,r/grafana_workspace_service_account_token.html.markdown,r/grafana_workspace_service_account.html.markdown,r/grafana_workspace_saml_configuration.html.markdown,r/grafana_workspace_api_key.html.markdown,r/grafana_workspace.html.markdown,r/grafana_role_association.html.markdown,r/grafana_license_association.html.markdown,r/glue_workflow.html.markdown,r/glue_user_defined_function.html.markdown,r/glue_trigger.html.markdown,r/glue_security_configuration.html.markdown,r/glue_schema.html.markdown,r/glue_resource_policy.html.markdown,r/glue_registry.html.markdown,r/glue_partition_index.html.markdown,r/glue_partition.html.markdown,r/glue_ml_transform.html.markdown,r/glue_job.html.markdown,r/glue_dev_endpoint.html.markdown,r/glue_data_quality_ruleset.html.markdown,r/glue_data_catalog_encryption_settings.html.markdown,r/glue_crawler.html.markdown,r/glue_connection.html.markdown,r/glue_classifier.html.markdown,r/glue_catalog_table_optimizer.html.markdown,r/glue_catalog_table.html.markdown,r/glue_catalog_database.html.markdown,r/globalaccelerator_listener.html.markdown,r/globalaccelerator_endpoint_group.html.markdown,r/globalaccelerator_custom_routing_listener.html.markdown,r/globalaccelerator_custom_routing_endpoint_group.html.markdown,r/globalaccelerator_custom_routing_accelerator.html.markdown,r/globalaccelerator_cross_account_attachment.html.markdown,r/globalaccelerator_accelerator.html.markdown,r/glacier_vault_lock.html.markdown,r/glacier_vault.html.markdown,r/gamelift_script.html.markdown,r/gamelift_game_session_queue.html.markdown,r/gamelift_game_server_group.html.markdown,r/gamelift_fleet.html.markdown,r/gamelift_build.html.markdown,r/gamelift_alias.html.markdown,r/fsx_windows_file_system.html.markdown,r/fsx_openzfs_volume.html.markdown,r/fsx_openzfs_snapshot.html.markdown,r/fsx_openzfs_file_system.html.markdown,r/fsx_ontap_volume.html.markdown,r/fsx_ontap_storage_virtual_machine.html.markdown,r/fsx_ontap_file_system.html.markdown,r/fsx_lustre_file_system.html.markdown,r/fsx_file_cache.html.markdown,r/fsx_data_repository_association.html.markdown,r/fsx_backup.html.markdown,r/fms_resource_set.html.markdown,r/fms_policy.html.markdown,r/fms_admin_account.html.markdown,r/flow_log.html.markdown,r/fis_experiment_template.html.markdown,r/finspace_kx_volume.html.markdown,r/finspace_kx_user.html.markdown,r/finspace_kx_scaling_group.html.markdown,r/finspace_kx_environment.html.markdown,r/finspace_kx_dataview.html.markdown,r/finspace_kx_database.html.markdown,r/finspace_kx_cluster.html.markdown,r/evidently_segment.html.markdown,r/evidently_project.html.markdown,r/evidently_launch.html.markdown,r/evidently_feature.html.markdown,r/emrserverless_application.html.markdown,r/emrcontainers_virtual_cluster.html.markdown,r/emrcontainers_job_template.html.markdown,r/emr_studio_session_mapping.html.markdown,r/emr_studio.html.markdown,r/emr_security_configuration.html.markdown,r/emr_managed_scaling_policy.html.markdown,r/emr_instance_group.html.markdown,r/emr_instance_fleet.html.markdown,r/emr_cluster.html.markdown,r/emr_block_public_access_configuration.html.markdown,r/elb_attachment.html.markdown,r/elb.html.markdown,r/elastictranscoder_preset.html.markdown,r/elastictranscoder_pipeline.html.markdown,r/elasticsearch_vpc_endpoint.html.markdown,r/elasticsearch_domain_saml_options.html.markdown,r/elasticsearch_domain_policy.html.markdown,r/elasticsearch_domain.html.markdown,r/elasticache_user_group_association.html.markdown,r/elasticache_user_group.html.markdown,r/elasticache_user.html.markdown,r/elasticache_subnet_group.html.markdown,r/elasticache_serverless_cache.html.markdown,r/elasticache_reserved_cache_node.html.markdown,r/elasticache_replication_group.html.markdown,r/elasticache_parameter_group.html.markdown,r/elasticache_global_replication_group.html.markdown,r/elasticache_cluster.html.markdown,r/elastic_beanstalk_environment.html.markdown,r/elastic_beanstalk_configuration_template.html.markdown,r/elastic_beanstalk_application_version.html.markdown,r/elastic_beanstalk_application.html.markdown,r/eks_pod_identity_association.html.markdown,r/eks_node_group.html.markdown,r/eks_identity_provider_config.html.markdown,r/eks_fargate_profile.html.markdown,r/eks_cluster.html.markdown,r/eks_addon.html.markdown,r/eks_access_policy_association.html.markdown,r/eks_access_entry.html.markdown,r/eip_domain_name.html.markdown,r/eip_association.html.markdown,r/eip.html.markdown,r/egress_only_internet_gateway.html.markdown,r/efs_replication_configuration.html.markdown,r/efs_mount_target.html.markdown,r/efs_file_system_policy.html.markdown,r/efs_file_system.html.markdown,r/efs_backup_policy.html.markdown,r/efs_access_point.html.markdown,r/ecs_task_set.html.markdown,r/ecs_task_definition.html.markdown,r/ecs_tag.html.markdown,r/ecs_service.html.markdown,r/ecs_cluster_capacity_providers.html.markdown,r/ecs_cluster.html.markdown,r/ecs_capacity_provider.html.markdown,r/ecs_account_setting_default.html.markdown,r/ecrpublic_repository_policy.html.markdown,r/ecrpublic_repository.html.markdown,r/ecr_repository_policy.html.markdown,r/ecr_repository_creation_template.html.markdown,r/ecr_repository.html.markdown,r/ecr_replication_configuration.html.markdown,r/ecr_registry_scanning_configuration.html.markdown,r/ecr_registry_policy.html.markdown,r/ecr_pull_through_cache_rule.html.markdown,r/ecr_lifecycle_policy.html.markdown,r/ec2_transit_gateway_vpc_attachment_accepter.html.markdown,r/ec2_transit_gateway_vpc_attachment.html.markdown,r/ec2_transit_gateway_route_table_propagation.html.markdown,r/ec2_transit_gateway_route_table_association.html.markdown,r/ec2_transit_gateway_route_table.html.markdown,r/ec2_transit_gateway_route.html.markdown,r/ec2_transit_gateway_prefix_list_reference.html.markdown,r/ec2_transit_gateway_policy_table_association.html.markdown,r/ec2_transit_gateway_policy_table.html.markdown,r/ec2_transit_gateway_peering_attachment_accepter.html.markdown,r/ec2_transit_gateway_peering_attachment.html.markdown,r/ec2_transit_gateway_multicast_group_source.html.markdown,r/ec2_transit_gateway_multicast_group_member.html.markdown,r/ec2_transit_gateway_multicast_domain_association.html.markdown,r/ec2_transit_gateway_multicast_domain.html.markdown,r/ec2_transit_gateway_default_route_table_propagation.html.markdown,r/ec2_transit_gateway_default_route_table_association.html.markdown,r/ec2_transit_gateway_connect_peer.html.markdown,r/ec2_transit_gateway_connect.html.markdown,r/ec2_transit_gateway.html.markdown,r/ec2_traffic_mirror_target.html.markdown,r/ec2_traffic_mirror_session.html.markdown,r/ec2_traffic_mirror_filter_rule.html.markdown,r/ec2_traffic_mirror_filter.html.markdown,r/ec2_tag.html.markdown,r/ec2_subnet_cidr_reservation.html.markdown,r/ec2_serial_console_access.html.markdown,r/ec2_network_insights_path.html.markdown,r/ec2_network_insights_analysis.html.markdown,r/ec2_managed_prefix_list_entry.html.markdown,r/ec2_managed_prefix_list.html.markdown,r/ec2_local_gateway_route_table_vpc_association.html.markdown,r/ec2_local_gateway_route.html.markdown,r/ec2_instance_state.html.markdown,r/ec2_instance_metadata_defaults.html.markdown,r/ec2_instance_connect_endpoint.html.markdown,r/ec2_image_block_public_access.markdown,r/ec2_host.html.markdown,r/ec2_fleet.html.markdown,r/ec2_client_vpn_route.html.markdown,r/ec2_client_vpn_network_association.html.markdown,r/ec2_client_vpn_endpoint.html.markdown,r/ec2_client_vpn_authorization_rule.html.markdown,r/ec2_carrier_gateway.html.markdown,r/ec2_capacity_reservation.html.markdown,r/ec2_capacity_block_reservation.html.markdown,r/ec2_availability_zone_group.html.markdown,r/ebs_volume.html.markdown,r/ebs_snapshot_import.html.markdown,r/ebs_snapshot_copy.html.markdown,r/ebs_snapshot_block_public_access.html.markdown,r/ebs_snapshot.html.markdown,r/ebs_fast_snapshot_restore.html.markdown,r/ebs_encryption_by_default.html.markdown,r/ebs_default_kms_key.html.markdown,r/dynamodb_tag.html.markdown,r/dynamodb_table_replica.html.markdown,r/dynamodb_table_item.html.markdown,r/dynamodb_table_export.html.markdown,r/dynamodb_table.html.markdown,r/dynamodb_resource_policy.html.markdown,r/dynamodb_kinesis_streaming_destination.html.markdown,r/dynamodb_global_table.html.markdown,r/dynamodb_contributor_insights.html.markdown,r/dx_transit_virtual_interface.html.markdown,r/dx_public_virtual_interface.html.markdown,r/dx_private_virtual_interface.html.markdown,r/dx_macsec_key_association.html.markdown,r/dx_lag.html.markdown,r/dx_hosted_transit_virtual_interface_accepter.html.markdown,r/dx_hosted_transit_virtual_interface.html.markdown,r/dx_hosted_public_virtual_interface_accepter.html.markdown,r/dx_hosted_public_virtual_interface.html.markdown,r/dx_hosted_private_virtual_interface_accepter.html.markdown,r/dx_hosted_private_virtual_interface.html.markdown,r/dx_hosted_connection.html.markdown,r/dx_gateway_association_proposal.html.markdown,r/dx_gateway_association.html.markdown,r/dx_gateway.html.markdown,r/dx_connection_confirmation.html.markdown,r/dx_connection_association.html.markdown,r/dx_connection.html.markdown,r/dx_bgp_peer.html.markdown,r/drs_replication_configuration_template.html.markdown,r/docdbelastic_cluster.html.markdown,r/docdb_subnet_group.html.markdown,r/docdb_global_cluster.html.markdown,r/docdb_event_subscription.html.markdown,r/docdb_cluster_snapshot.html.markdown,r/docdb_cluster_parameter_group.html.markdown,r/docdb_cluster_instance.html.markdown,r/docdb_cluster.html.markdown,r/dms_s3_endpoint.html.markdown,r/dms_replication_task.html.markdown,r/dms_replication_subnet_group.html.markdown,r/dms_replication_instance.html.markdown,r/dms_replication_config.html.markdown,r/dms_event_subscription.html.markdown,r/dms_endpoint.html.markdown,r/dms_certificate.html.markdown,r/dlm_lifecycle_policy.html.markdown,r/directory_service_trust.html.markdown,r/directory_service_shared_directory_accepter.html.markdown,r/directory_service_shared_directory.html.markdown,r/directory_service_region.html.markdown,r/directory_service_radius_settings.html.markdown,r/directory_service_log_subscription.html.markdown,r/directory_service_directory.html.markdown,r/directory_service_conditional_forwarder.html.markdown,r/devopsguru_service_integration.html.markdown,r/devopsguru_resource_collection.html.markdown,r/devopsguru_notification_channel.html.markdown,r/devopsguru_event_sources_config.html.markdown,r/devicefarm_upload.html.markdown,r/devicefarm_test_grid_project.html.markdown,r/devicefarm_project.html.markdown,r/devicefarm_network_profile.html.markdown,r/devicefarm_instance_profile.html.markdown,r/devicefarm_device_pool.html.markdown,r/detective_organization_configuration.html.markdown,r/detective_organization_admin_account.html.markdown,r/detective_member.html.markdown,r/detective_invitation_accepter.html.markdown,r/detective_graph.html.markdown,r/default_vpc_dhcp_options.html.markdown,r/default_vpc.html.markdown,r/default_subnet.html.markdown,r/default_security_group.html.markdown,r/default_route_table.html.markdown,r/default_network_acl.html.markdown,r/db_subnet_group.html.markdown,r/db_snapshot_copy.html.markdown,r/db_snapshot.html.markdown,r/db_proxy_target.html.markdown,r/db_proxy_endpoint.html.markdown,r/db_proxy_default_target_group.html.markdown,r/db_proxy.html.markdown,r/db_parameter_group.html.markdown,r/db_option_group.html.markdown,r/db_instance_role_association.html.markdown,r/db_instance_automated_backups_replication.html.markdown,r/db_instance.html.markdown,r/db_event_subscription.html.markdown,r/db_cluster_snapshot.html.markdown,r/dax_subnet_group.html.markdown,r/dax_parameter_group.html.markdown,r/dax_cluster.html.markdown,r/datazone_user_profile.html.markdown,r/datazone_project.html.markdown,r/datazone_glossary_term.html.markdown,r/datazone_glossary.html.markdown,r/datazone_form_type.html.markdown,r/datazone_environment_profile.html.markdown,r/datazone_environment_blueprint_configuration.html.markdown,r/datazone_environment.html.markdown,r/datazone_domain.html.markdown,r/datazone_asset_type.html.markdown,r/datasync_task.html.markdown,r/datasync_location_smb.html.markdown,r/datasync_location_s3.html.markdown,r/datasync_location_object_storage.html.markdown,r/datasync_location_nfs.html.markdown,r/datasync_location_hdfs.html.markdown,r/datasync_location_fsx_windows_file_system.html.markdown,r/datasync_location_fsx_openzfs_file_system.html.markdown,r/datasync_location_fsx_ontap_file_system.html.markdown,r/datasync_location_fsx_lustre_file_system.html.markdown,r/datasync_location_efs.html.markdown,r/datasync_location_azure_blob.html.markdown,r/datasync_agent.html.markdown,r/datapipeline_pipeline_definition.html.markdown,r/datapipeline_pipeline.html.markdown,r/dataexchange_revision.html.markdown,r/dataexchange_data_set.html.markdown,r/customerprofiles_profile.html.markdown,r/customerprofiles_domain.html.markdown,r/customer_gateway.html.markdown,r/cur_report_definition.html.markdown,r/costoptimizationhub_preferences.html.markdown,r/costoptimizationhub_enrollment_status.html.markdown,r/controltower_landing_zone.html.markdown,r/controltower_control.html.markdown,r/connect_vocabulary.html.markdown,r/connect_user_hierarchy_structure.html.markdown,r/connect_user_hierarchy_group.html.markdown,r/connect_user.html.markdown,r/connect_security_profile.html.markdown,r/connect_routing_profile.html.markdown,r/connect_quick_connect.html.markdown,r/connect_queue.html.markdown,r/connect_phone_number.html.markdown,r/connect_lambda_function_association.html.markdown,r/connect_instance_storage_config.html.markdown,r/connect_instance.html.markdown,r/connect_hours_of_operation.html.markdown,r/connect_contact_flow_module.html.markdown,r/connect_contact_flow.html.markdown,r/connect_bot_association.html.markdown,r/config_retention_configuration.html.markdown,r/config_remediation_configuration.html.markdown,r/config_organization_managed_rule.html.markdown,r/config_organization_custom_rule.html.markdown,r/config_organization_custom_policy_rule.html.markdown,r/config_organization_conformance_pack.html.markdown,r/config_delivery_channel.html.markdown,r/config_conformance_pack.html.markdown,r/config_configuration_recorder_status.html.markdown,r/config_configuration_recorder.html.markdown,r/config_configuration_aggregator.html.markdown,r/config_config_rule.html.markdown,r/config_aggregate_authorization.html.markdown,r/computeoptimizer_recommendation_preferences.html.markdown,r/computeoptimizer_enrollment_status.html.markdown,r/comprehend_entity_recognizer.html.markdown,r/comprehend_document_classifier.html.markdown,r/cognito_user_pool_ui_customization.html.markdown,r/cognito_user_pool_domain.html.markdown,r/cognito_user_pool_client.html.markdown,r/cognito_user_pool.html.markdown,r/cognito_user_in_group.html.markdown,r/cognito_user_group.html.markdown,r/cognito_user.html.markdown,r/cognito_risk_configuration.html.markdown,r/cognito_resource_server.html.markdown,r/cognito_managed_user_pool_client.html.markdown,r/cognito_identity_provider.html.markdown,r/cognito_identity_pool_roles_attachment.html.markdown,r/cognito_identity_pool_provider_principal_tag.html.markdown,r/cognito_identity_pool.html.markdown,r/codestarnotifications_notification_rule.html.markdown,r/codestarconnections_host.html.markdown,r/codestarconnections_connection.html.markdown,r/codepipeline_webhook.html.markdown,r/codepipeline_custom_action_type.html.markdown,r/codepipeline.html.markdown,r/codegurureviewer_repository_association.html.markdown,r/codeguruprofiler_profiling_group.html.markdown,r/codedeploy_deployment_group.html.markdown,r/codedeploy_deployment_config.html.markdown,r/codedeploy_app.html.markdown,r/codecommit_trigger.html.markdown,r/codecommit_repository.html.markdown,r/codecommit_approval_rule_template_association.html.markdown,r/codecommit_approval_rule_template.html.markdown,r/codecatalyst_source_repository.html.markdown,r/codecatalyst_project.html.markdown,r/codecatalyst_dev_environment.html.markdown,r/codebuild_webhook.html.markdown,r/codebuild_source_credential.html.markdown,r/codebuild_resource_policy.html.markdown,r/codebuild_report_group.html.markdown,r/codebuild_project.html.markdown,r/codebuild_fleet.html.markdown,r/codeartifact_repository_permissions_policy.html.markdown,r/codeartifact_repository.html.markdown,r/codeartifact_domain_permissions_policy.html.markdown,r/codeartifact_domain.html.markdown,r/cloudwatch_query_definition.html.markdown,r/cloudwatch_metric_stream.html.markdown,r/cloudwatch_metric_alarm.html.markdown,r/cloudwatch_log_subscription_filter.html.markdown,r/cloudwatch_log_stream.html.markdown,r/cloudwatch_log_resource_policy.html.markdown,r/cloudwatch_log_metric_filter.html.markdown,r/cloudwatch_log_group.html.markdown,r/cloudwatch_log_destination_policy.html.markdown,r/cloudwatch_log_destination.html.markdown,r/cloudwatch_log_data_protection_policy.html.markdown,r/cloudwatch_log_account_policy.html.markdown,r/cloudwatch_event_target.html.markdown,r/cloudwatch_event_rule.html.markdown,r/cloudwatch_event_permission.html.markdown,r/cloudwatch_event_endpoint.html.markdown,r/cloudwatch_event_connection.html.markdown,r/cloudwatch_event_bus_policy.html.markdown,r/cloudwatch_event_bus.html.markdown,r/cloudwatch_event_archive.html.markdown,r/cloudwatch_event_api_destination.html.markdown,r/cloudwatch_dashboard.html.markdown,r/cloudwatch_composite_alarm.html.markdown,r/cloudtrail_organization_delegated_admin_account.html.markdown,r/cloudtrail_event_data_store.html.markdown,r/cloudtrail.html.markdown,r/cloudsearch_domain_service_access_policy.html.markdown,r/cloudsearch_domain.html.markdown,r/cloudhsm_v2_hsm.html.markdown,r/cloudhsm_v2_cluster.html.markdown,r/cloudfrontkeyvaluestore_key.html.markdown,r/cloudfront_response_headers_policy.html.markdown,r/cloudfront_realtime_log_config.html.markdown,r/cloudfront_public_key.html.markdown,r/cloudfront_origin_request_policy.html.markdown,r/cloudfront_origin_access_identity.html.markdown,r/cloudfront_origin_access_control.html.markdown,r/cloudfront_monitoring_subscription.html.markdown,r/cloudfront_key_value_store.html.markdown,r/cloudfront_key_group.html.markdown,r/cloudfront_function.html.markdown,r/cloudfront_field_level_encryption_profile.html.markdown,r/cloudfront_field_level_encryption_config.html.markdown,r/cloudfront_distribution.html.markdown,r/cloudfront_continuous_deployment_policy.html.markdown,r/cloudfront_cache_policy.html.markdown,r/cloudformation_type.html.markdown,r/cloudformation_stack_set_instance.html.markdown,r/cloudformation_stack_set.html.markdown,r/cloudformation_stack_instances.html.markdown,r/cloudformation_stack.html.markdown,r/cloudcontrolapi_resource.html.markdown,r/cloud9_environment_membership.html.markdown,r/cloud9_environment_ec2.html.markdown,r/cleanrooms_configured_table.html.markdown,r/cleanrooms_collaboration.html.markdown,r/chimesdkvoice_voice_profile_domain.html.markdown,r/chimesdkvoice_sip_rule.html.markdown,r/chimesdkvoice_sip_media_application.html.markdown,r/chimesdkvoice_global_settings.html.markdown,r/chimesdkmediapipelines_media_insights_pipeline_configuration.html.markdown,r/chime_voice_connector_termination_credentials.html.markdown,r/chime_voice_connector_termination.html.markdown,r/chime_voice_connector_streaming.html.markdown,r/chime_voice_connector_origination.html.markdown,r/chime_voice_connector_logging.html.markdown,r/chime_voice_connector_group.html.markdown,r/chime_voice_connector.html.markdown,r/chatbot_teams_channel_configuration.html.markdown,r/chatbot_slack_channel_configuration.html.markdown,r/ce_cost_category.html.markdown,r/ce_cost_allocation_tag.html.markdown,r/ce_anomaly_subscription.html.markdown,r/ce_anomaly_monitor.html.markdown,r/budgets_budget_action.html.markdown,r/budgets_budget.html.markdown,r/bedrockagent_knowledge_base.html.markdown,r/bedrockagent_data_source.html.markdown,r/bedrockagent_agent_knowledge_base_association.html.markdown,r/bedrockagent_agent_alias.html.markdown,r/bedrockagent_agent_action_group.html.markdown,r/bedrockagent_agent.html.markdown,r/bedrock_provisioned_model_throughput.html.markdown,r/bedrock_model_invocation_logging_configuration.html.markdown,r/bedrock_guardrail_version.html.markdown,r/bedrock_guardrail.html.markdown,r/bedrock_custom_model.html.markdown,r/bcmdataexports_export.html.markdown,r/batch_scheduling_policy.html.markdown,r/batch_job_queue.html.markdown,r/batch_job_definition.html.markdown,r/batch_compute_environment.html.markdown,r/backup_vault_policy.html.markdown,r/backup_vault_notifications.html.markdown,r/backup_vault_lock_configuration.html.markdown,r/backup_vault.html.markdown,r/backup_selection.html.markdown,r/backup_restore_testing_selection.html.markdown,r/backup_restore_testing_plan.html.markdown,r/backup_report_plan.html.markdown,r/backup_region_settings.html.markdown,r/backup_plan.html.markdown,r/backup_logically_air_gapped_vault.html.markdown,r/backup_global_settings.html.markdown,r/backup_framework.html.markdown,r/autoscalingplans_scaling_plan.html.markdown,r/autoscaling_traffic_source_attachment.html.markdown,r/autoscaling_schedule.html.markdown,r/autoscaling_policy.html.markdown,r/autoscaling_notification.html.markdown,r/autoscaling_lifecycle_hook.html.markdown,r/autoscaling_group_tag.html.markdown,r/autoscaling_group.html.markdown,r/autoscaling_attachment.html.markdown,r/auditmanager_organization_admin_account_registration.html.markdown,r/auditmanager_framework_share.html.markdown,r/auditmanager_framework.html.markdown,r/auditmanager_control.html.markdown,r/auditmanager_assessment_report.html.markdown,r/auditmanager_assessment_delegation.html.markdown,r/auditmanager_assessment.html.markdown,r/auditmanager_account_registration.html.markdown,r/athena_workgroup.html.markdown,r/athena_prepared_statement.html.markdown,r/athena_named_query.html.markdown,r/athena_database.html.markdown,r/athena_data_catalog.html.markdown,r/appsync_type.html.markdown,r/appsync_source_api_association.html.markdown,r/appsync_resolver.html.markdown,r/appsync_graphql_api.html.markdown,r/appsync_function.html.markdown,r/appsync_domain_name_api_association.html.markdown,r/appsync_domain_name.html.markdown,r/appsync_datasource.html.markdown,r/appsync_api_key.html.markdown,r/appsync_api_cache.html.markdown,r/appstream_user_stack_association.html.markdown,r/appstream_user.html.markdown,r/appstream_stack.html.markdown,r/appstream_image_builder.html.markdown,r/appstream_fleet_stack_association.html.markdown,r/appstream_fleet.html.markdown,r/appstream_directory_config.html.markdown,r/apprunner_vpc_ingress_connection.html.markdown,r/apprunner_vpc_connector.html.markdown,r/apprunner_service.html.markdown,r/apprunner_observability_configuration.html.markdown,r/apprunner_deployment.html.markdown,r/apprunner_default_auto_scaling_configuration_version.html.markdown,r/apprunner_custom_domain_association.html.markdown,r/apprunner_connection.html.markdown,r/apprunner_auto_scaling_configuration_version.html.markdown,r/appmesh_virtual_service.html.markdown,r/appmesh_virtual_router.html.markdown,r/appmesh_virtual_node.html.markdown,r/appmesh_virtual_gateway.html.markdown,r/appmesh_route.html.markdown,r/appmesh_mesh.html.markdown,r/appmesh_gateway_route.html.markdown,r/applicationinsights_application.html.markdown,r/appintegrations_event_integration.html.markdown,r/appintegrations_data_integration.html.markdown,r/appflow_flow.html.markdown,r/appflow_connector_profile.html.markdown,r/appfabric_ingestion_destination.html.markdown,r/appfabric_ingestion.html.markdown,r/appfabric_app_bundle.html.markdown,r/appfabric_app_authorization_connection.html.markdown,r/appfabric_app_authorization.html.markdown,r/appconfig_hosted_configuration_version.html.markdown,r/appconfig_extension_association.html.markdown,r/appconfig_extension.html.markdown,r/appconfig_environment.html.markdown,r/appconfig_deployment_strategy.html.markdown,r/appconfig_deployment.html.markdown,r/appconfig_configuration_profile.html.markdown,r/appconfig_application.html.markdown,r/appautoscaling_target.html.markdown,r/appautoscaling_scheduled_action.html.markdown,r/appautoscaling_policy.html.markdown,r/app_cookie_stickiness_policy.html.markdown,r/apigatewayv2_vpc_link.html.markdown,r/apigatewayv2_stage.html.markdown,r/apigatewayv2_route_response.html.markdown,r/apigatewayv2_route.html.markdown,r/apigatewayv2_model.html.markdown,r/apigatewayv2_integration_response.html.markdown,r/apigatewayv2_integration.html.markdown,r/apigatewayv2_domain_name.html.markdown,r/apigatewayv2_deployment.html.markdown,r/apigatewayv2_authorizer.html.markdown,r/apigatewayv2_api_mapping.html.markdown,r/apigatewayv2_api.html.markdown,r/api_gateway_vpc_link.html.markdown,r/api_gateway_usage_plan_key.html.markdown,r/api_gateway_usage_plan.html.markdown,r/api_gateway_stage.html.markdown,r/api_gateway_rest_api_policy.html.markdown,r/api_gateway_rest_api.html.markdown,r/api_gateway_resource.html.markdown,r/api_gateway_request_validator.html.markdown,r/api_gateway_model.html.markdown,r/api_gateway_method_settings.html.markdown,r/api_gateway_method_response.html.markdown,r/api_gateway_method.html.markdown,r/api_gateway_integration_response.html.markdown,r/api_gateway_integration.html.markdown,r/api_gateway_gateway_response.html.markdown,r/api_gateway_domain_name.html.markdown,r/api_gateway_documentation_version.html.markdown,r/api_gateway_documentation_part.html.markdown,r/api_gateway_deployment.html.markdown,r/api_gateway_client_certificate.html.markdown,r/api_gateway_base_path_mapping.html.markdown,r/api_gateway_authorizer.html.markdown,r/api_gateway_api_key.html.markdown,r/api_gateway_account.html.markdown,r/amplify_webhook.html.markdown,r/amplify_domain_association.html.markdown,r/amplify_branch.html.markdown,r/amplify_backend_environment.html.markdown,r/amplify_app.html.markdown,r/ami_launch_permission.html.markdown,r/ami_from_instance.html.markdown,r/ami_copy.html.markdown,r/ami.html.markdown,r/acmpca_policy.html.markdown,r/acmpca_permission.html.markdown,r/acmpca_certificate_authority_certificate.html.markdown,r/acmpca_certificate_authority.html.markdown,r/acmpca_certificate.html.markdown,r/acm_certificate_validation.html.markdown,r/acm_certificate.html.markdown,r/account_region.markdown,r/account_primary_contact.html.markdown,r/account_alternate_contact.html.markdown,r/accessanalyzer_archive_rule.html.markdown,r/accessanalyzer_analyzer.html.markdown,guides/version-5-upgrade.html.markdown,guides/version-4-upgrade.html.markdown,guides/version-3-upgrade.html.markdown,guides/version-2-upgrade.html.markdown,guides/using-aws-with-awscc-provider.html.markdown,guides/resource-tagging.html.markdown,guides/custom-service-endpoints.html.markdown,guides/continuous-validation-examples.html.markdown,functions/trim_iam_role_path.html.markdown,functions/arn_parse.html.markdown,functions/arn_build.html.markdown,ephemeral-resources/secretsmanager_secret_version.html.markdown,ephemeral-resources/lambda_invocation.html.markdown,ephemeral-resources/kms_secrets.html.markdown,d/workspaces_workspace.html.markdown,d/workspaces_image.html.markdown,d/workspaces_directory.html.markdown,d/workspaces_bundle.html.markdown,d/wafv2_web_acl.html.markdown,d/wafv2_rule_group.html.markdown,d/wafv2_regex_pattern_set.html.markdown,d/wafv2_ip_set.html.markdown,d/wafregional_web_acl.html.markdown,d/wafregional_subscribed_rule_group.html.markdown,d/wafregional_rule.html.markdown,d/wafregional_rate_based_rule.html.markdown,d/wafregional_ipset.html.markdown,d/waf_web_acl.html.markdown,d/waf_subscribed_rule_group.html.markdown,d/waf_rule.html.markdown,d/waf_rate_based_rule.html.markdown,d/waf_ipset.html.markdown,d/vpn_gateway.html.markdown,d/vpcs.html.markdown,d/vpclattice_service_network.html.markdown,d/vpclattice_service.html.markdown,d/vpclattice_resource_policy.html.markdown,d/vpclattice_listener.html.markdown,d/vpclattice_auth_policy.html.markdown,d/vpc_security_group_rules.html.markdown,d/vpc_security_group_rule.html.markdown,d/vpc_peering_connections.html.markdown,d/vpc_peering_connection.html.markdown,d/vpc_ipam_preview_next_cidr.html.markdown,d/vpc_ipam_pools.html.markdown,d/vpc_ipam_pool_cidrs.html.markdown,d/vpc_ipam_pool.html.markdown,d/vpc_endpoint_service.html.markdown,d/vpc_endpoint.html.markdown,d/vpc_dhcp_options.html.markdown,d/vpc.html.markdown,d/verifiedpermissions_policy_store.html.markdown,d/transfer_server.html.markdown,d/transfer_connector.html.markdown,d/timestreamwrite_table.html.markdown,d/timestreamwrite_database.html.markdown,d/synthetics_runtime_versions.html.markdown,d/synthetics_runtime_version.html.markdown,d/subnets.html.markdown,d/subnet.html.markdown,d/storagegateway_local_disk.html.markdown,d/ssoadmin_principal_application_assignments.html.markdown,d/ssoadmin_permission_sets.html.markdown,d/ssoadmin_permission_set.html.markdown,d/ssoadmin_instances.html.markdown,d/ssoadmin_application_providers.html.markdown,d/ssoadmin_application_assignments.html.markdown,d/ssoadmin_application.html.markdown,d/ssmincidents_response_plan.html.markdown,d/ssmincidents_replication_set.html.markdown,d/ssmcontacts_rotation.html.markdown,d/ssmcontacts_plan.html.markdown,d/ssmcontacts_contact_channel.html.markdown,d/ssmcontacts_contact.html.markdown,d/ssm_patch_baselines.html.markdown,d/ssm_patch_baseline.html.markdown,d/ssm_parameters_by_path.html.markdown,d/ssm_parameter.html.markdown,d/ssm_maintenance_windows.html.markdown,d/ssm_instances.html.markdown,d/ssm_document.html.markdown,d/sqs_queues.html.markdown,d/sqs_queue.html.markdown,d/spot_datafeed_subscription.html.markdown,d/sns_topic.html.markdown,d/signer_signing_profile.html.markdown,d/signer_signing_job.html.markdown,d/shield_protection.html.markdown,d/sfn_state_machine_versions.html.markdown,d/sfn_state_machine.html.markdown,d/sfn_alias.html.markdown,d/sfn_activity.html.markdown,d/sesv2_email_identity_mail_from_attributes.html.markdown,d/sesv2_email_identity.html.markdown,d/sesv2_dedicated_ip_pool.html.markdown,d/sesv2_configuration_set.html.markdown,d/ses_email_identity.html.markdown,d/ses_domain_identity.html.markdown,d/ses_active_receipt_rule_set.html.markdown,d/servicequotas_templates.html.markdown,d/servicequotas_service_quota.html.markdown,d/servicequotas_service.html.markdown,d/servicecatalogappregistry_application.html.markdown,d/servicecatalog_provisioning_artifacts.html.markdown,d/servicecatalog_product.html.markdown,d/servicecatalog_portfolio_constraints.html.markdown,d/servicecatalog_portfolio.html.markdown,d/servicecatalog_launch_paths.html.markdown,d/servicecatalog_constraint.html.markdown,d/service_principal.html.markdown,d/service_discovery_service.html.markdown,d/service_discovery_http_namespace.html.markdown,d/service_discovery_dns_namespace.html.markdown,d/service.html.markdown,d/serverlessapplicationrepository_application.html.markdown,d/securityhub_standards_control_associations.html.markdown,d/security_groups.html.markdown,d/security_group.html.markdown,d/secretsmanager_secrets.html.markdown,d/secretsmanager_secret_versions.html.markdown,d/secretsmanager_secret_version.html.markdown,d/secretsmanager_secret_rotation.html.markdown,d/secretsmanager_secret.html.markdown,d/secretsmanager_random_password.html.markdown,d/sagemaker_prebuilt_ecr_image.html.markdown,d/s3control_multi_region_access_point.html.markdown,d/s3_objects.html.markdown,d/s3_object.html.markdown,d/s3_directory_buckets.html.markdown,d/s3_bucket_policy.html.markdown,d/s3_bucket_objects.html.markdown,d/s3_bucket_object.html.markdown,d/s3_bucket.html.markdown,d/s3_account_public_access_block.html.markdown,d/route_tables.html.markdown,d/route_table.html.markdown,d/route53profiles_profiles.html.markdown,d/route53_zones.html.markdown,d/route53_zone.html.markdown,d/route53_traffic_policy_document.html.markdown,d/route53_resolver_rules.html.markdown,d/route53_resolver_rule.html.markdown,d/route53_resolver_query_log_config.html.markdown,d/route53_resolver_firewall_rules.html.markdown,d/route53_resolver_firewall_rule_group_association.html.markdown,d/route53_resolver_firewall_rule_group.html.markdown,d/route53_resolver_firewall_domain_list.html.markdown,d/route53_resolver_firewall_config.html.markdown,d/route53_resolver_endpoint.html.markdown,d/route53_delegation_set.html.markdown,d/route.html.markdown,d/resourcegroupstaggingapi_resources.html.markdown,d/resourceexplorer2_search.html.markdown,d/regions.html.markdown,d/region.html.markdown,d/redshiftserverless_workgroup.html.markdown,d/redshiftserverless_namespace.html.markdown,d/redshiftserverless_credentials.html.markdown,d/redshift_subnet_group.html.markdown,d/redshift_service_account.html.markdown,d/redshift_producer_data_shares.html.markdown,d/redshift_orderable_cluster.html.markdown,d/redshift_data_shares.html.markdown,d/redshift_cluster_credentials.html.markdown,d/redshift_cluster.html.markdown,d/rds_reserved_instance_offering.html.markdown,d/rds_orderable_db_instance.html.markdown,d/rds_engine_version.html.markdown,d/rds_clusters.html.markdown,d/rds_cluster_parameter_group.html.markdown,d/rds_cluster.html.markdown,d/rds_certificate.html.markdown,d/ram_resource_share.html.markdown,d/quicksight_user.html.markdown,d/quicksight_theme.html.markdown,d/quicksight_group.html.markdown,d/quicksight_data_set.html.markdown,d/quicksight_analysis.html.markdown,d/qldb_ledger.html.markdown,d/prometheus_workspaces.html.markdown,d/prometheus_workspace.html.markdown,d/prometheus_default_scraper_configuration.html.markdown,d/pricing_product.html.markdown,d/prefix_list.html.markdown,d/polly_voices.html.markdown,d/partition.html.markdown,d/outposts_sites.html.markdown,d/outposts_site.html.markdown,d/outposts_outposts.html.markdown,d/outposts_outpost_instance_types.html.markdown,d/outposts_outpost_instance_type.html.markdown,d/outposts_outpost.html.markdown,d/outposts_assets.html.markdown,d/outposts_asset.html.markdown,d/organizations_resource_tags.html.markdown,d/organizations_policy.html.markdown,d/organizations_policies_for_target.html.markdown,d/organizations_policies.html.markdown,d/organizations_organizational_units.html.markdown,d/organizations_organizational_unit_descendant_organizational_units.html.markdown,d/organizations_organizational_unit_descendant_accounts.html.markdown,d/organizations_organizational_unit_child_accounts.html.markdown,d/organizations_organizational_unit.html.markdown,d/organizations_organization.html.markdown,d/organizations_delegated_services.html.markdown,d/organizations_delegated_administrators.html.markdown,d/opensearchserverless_vpc_endpoint.html.markdown,d/opensearchserverless_security_policy.html.markdown,d/opensearchserverless_security_config.html.markdown,d/opensearchserverless_lifecycle_policy.html.markdown,d/opensearchserverless_collection.html.markdown,d/opensearchserverless_access_policy.html.markdown,d/opensearch_domain.html.markdown,d/oam_sinks.html.markdown,d/oam_sink.html.markdown,d/oam_links.html.markdown,d/oam_link.html.markdown,d/networkmanager_sites.html.markdown,d/networkmanager_site.html.markdown,d/networkmanager_links.html.markdown,d/networkmanager_link.html.markdown,d/networkmanager_global_networks.html.markdown,d/networkmanager_global_network.html.markdown,d/networkmanager_devices.html.markdown,d/networkmanager_device.html.markdown,d/networkmanager_core_network_policy_document.html.markdown,d/networkmanager_connections.html.markdown,d/networkmanager_connection.html.markdown,d/networkfirewall_resource_policy.html.markdown,d/networkfirewall_firewall_policy.html.markdown,d/networkfirewall_firewall.html.markdown,d/network_interfaces.html.markdown,d/network_interface.html.markdown,d/network_acls.html.markdown,d/neptune_orderable_db_instance.html.markdown,d/neptune_engine_version.html.markdown,d/nat_gateways.html.markdown,d/nat_gateway.html.markdown,d/mskconnect_worker_configuration.html.markdown,d/mskconnect_custom_plugin.html.markdown,d/mskconnect_connector.html.markdown,d/msk_vpc_connection.html.markdown,d/msk_kafka_version.html.markdown,d/msk_configuration.html.markdown,d/msk_cluster.html.markdown,d/msk_broker_nodes.html.markdown,d/msk_bootstrap_brokers.html.markdown,d/mq_broker_instance_type_offerings.html.markdown,d/mq_broker_engine_types.html.markdown,d/mq_broker.html.markdown,d/memorydb_user.html.markdown,d/memorydb_subnet_group.html.markdown,d/memorydb_snapshot.html.markdown,d/memorydb_parameter_group.html.markdown,d/memorydb_cluster.html.markdown,d/memorydb_acl.html.markdown,d/medialive_input.html.markdown,d/media_convert_queue.html.markdown,d/location_tracker_associations.html.markdown,d/location_tracker_association.html.markdown,d/location_tracker.html.markdown,d/location_route_calculator.html.markdown,d/location_place_index.html.markdown,d/location_map.html.markdown,d/location_geofence_collection.html.markdown,d/licensemanager_received_licenses.html.markdown,d/licensemanager_received_license.html.markdown,d/licensemanager_grants.html.markdown,d/lex_slot_type.html.markdown,d/lex_intent.html.markdown,d/lex_bot_alias.html.markdown,d/lex_bot.html.markdown,d/lbs.html.markdown,d/lb_trust_store.html.markdown,d/lb_target_group.html.markdown,d/lb_listener_rule.html.markdown,d/lb_listener.html.markdown,d/lb_hosted_zone_id.html.markdown,d/lb.html.markdown,d/launch_template.html.markdown,d/launch_configuration.html.markdown,d/lambda_layer_version.html.markdown,d/lambda_invocation.html.markdown,d/lambda_functions.html.markdown,d/lambda_function_url.html.markdown,d/lambda_function.html.markdown,d/lambda_code_signing_config.html.markdown,d/lambda_alias.html.markdown,d/lakeformation_resource.html.markdown,d/lakeformation_permissions.html.markdown,d/lakeformation_data_lake_settings.html.markdown,d/kms_secrets.html.markdown,d/kms_secret.html.markdown,d/kms_public_key.html.markdown,d/kms_key.html.markdown,d/kms_custom_key_store.html.markdown,d/kms_ciphertext.html.markdown,d/kms_alias.html.markdown,d/kinesis_stream_consumer.html.markdown,d/kinesis_stream.html.markdown,d/kinesis_firehose_delivery_stream.html.markdown,d/key_pair.html.markdown,d/kendra_thesaurus.html.markdown,d/kendra_query_suggestions_block_list.html.markdown,d/kendra_index.html.markdown,d/kendra_faq.html.markdown,d/kendra_experience.html.markdown,d/ivs_stream_key.html.markdown,d/ip_ranges.html.markdown,d/iot_registration_code.html.markdown,d/iot_endpoint.html.markdown,d/internet_gateway.html.markdown,d/instances.html.markdown,d/instance.html.markdown,d/inspector_rules_packages.html.markdown,d/imagebuilder_infrastructure_configurations.html.markdown,d/imagebuilder_infrastructure_configuration.html.markdown,d/imagebuilder_image_recipes.html.markdown,d/imagebuilder_image_recipe.html.markdown,d/imagebuilder_image_pipelines.html.markdown,d/imagebuilder_image_pipeline.html.markdown,d/imagebuilder_image.html.markdown,d/imagebuilder_distribution_configurations.html.markdown,d/imagebuilder_distribution_configuration.html.markdown,d/imagebuilder_container_recipes.html.markdown,d/imagebuilder_container_recipe.html.markdown,d/imagebuilder_components.html.markdown,d/imagebuilder_component.html.markdown,d/identitystore_user.html.markdown,d/identitystore_groups.html.markdown,d/identitystore_group.html.markdown,d/iam_users.html.markdown,d/iam_user_ssh_key.html.markdown,d/iam_user.html.markdown,d/iam_session_context.html.markdown,d/iam_server_certificate.html.markdown,d/iam_saml_provider.html.markdown,d/iam_roles.html.markdown,d/iam_role.html.markdown,d/iam_principal_policy_simulation.html.markdown,d/iam_policy_document.html.markdown,d/iam_policy.html.markdown,d/iam_openid_connect_provider.html.markdown,d/iam_instance_profiles.html.markdown,d/iam_instance_profile.html.markdown,d/iam_group.html.markdown,d/iam_account_alias.html.markdown,d/iam_access_keys.html.markdown,d/guardduty_finding_ids.html.markdown,d/guardduty_detector.html.markdown,d/grafana_workspace.html.markdown,d/glue_script.html.markdown,d/glue_registry.html.markdown,d/glue_data_catalog_encryption_settings.html.markdown,d/glue_connection.html.markdown,d/glue_catalog_table.html.markdown,d/globalaccelerator_custom_routing_accelerator.html.markdown,d/globalaccelerator_accelerator.html.markdown,d/fsx_windows_file_system.html.markdown,d/fsx_openzfs_snapshot.html.markdown,d/fsx_ontap_storage_virtual_machines.html.markdown,d/fsx_ontap_storage_virtual_machine.html.markdown,d/fsx_ontap_file_system.html.markdown,d/emrcontainers_virtual_cluster.html.markdown,d/emr_supported_instance_types.html.markdown,d/emr_release_labels.html.markdown,d/elb_service_account.html.markdown,d/elb_hosted_zone_id.html.markdown,d/elb.html.markdown,d/elasticsearch_domain.html.markdown,d/elasticache_user.html.markdown,d/elasticache_subnet_group.html.markdown,d/elasticache_serverless_cache.html.markdown,d/elasticache_reserved_cache_node_offering.html.markdown,d/elasticache_replication_group.html.markdown,d/elasticache_cluster.html.markdown,d/elastic_beanstalk_solution_stack.html.markdown,d/elastic_beanstalk_hosted_zone.html.markdown,d/elastic_beanstalk_application.html.markdown,d/eks_node_groups.html.markdown,d/eks_node_group.html.markdown,d/eks_clusters.html.markdown,d/eks_cluster_auth.html.markdown,d/eks_cluster.html.markdown,d/eks_addon_version.html.markdown,d/eks_addon.html.markdown,d/eks_access_entry.html.markdown,d/eips.html.markdown,d/eip.html.markdown,d/efs_mount_target.html.markdown,d/efs_file_system.html.markdown,d/efs_access_points.html.markdown,d/efs_access_point.html.markdown,d/ecs_task_execution.html.markdown,d/ecs_task_definition.html.markdown,d/ecs_service.html.markdown,d/ecs_container_definition.html.markdown,d/ecs_cluster.html.markdown,d/ecrpublic_authorization_token.html.markdown,d/ecr_repository_creation_template.html.markdown,d/ecr_repository.html.markdown,d/ecr_repositories.html.markdown,d/ecr_pull_through_cache_rule.html.markdown,d/ecr_lifecycle_policy_document.html.markdown,d/ecr_image.html.markdown,d/ecr_authorization_token.html.markdown,d/ec2_transit_gateway_vpn_attachment.html.markdown,d/ec2_transit_gateway_vpc_attachments.html.markdown,d/ec2_transit_gateway_vpc_attachment.html.markdown,d/ec2_transit_gateway_route_tables.html.markdown,d/ec2_transit_gateway_route_table_routes.html.markdown,d/ec2_transit_gateway_route_table_propagations.html.markdown,d/ec2_transit_gateway_route_table_associations.html.markdown,d/ec2_transit_gateway_route_table.html.markdown,d/ec2_transit_gateway_peering_attachments.html.markdown,d/ec2_transit_gateway_peering_attachment.html.markdown,d/ec2_transit_gateway_multicast_domain.html.markdown,d/ec2_transit_gateway_dx_gateway_attachment.html.markdown,d/ec2_transit_gateway_connect_peer.html.markdown,d/ec2_transit_gateway_connect.html.markdown,d/ec2_transit_gateway_attachments.html.markdown,d/ec2_transit_gateway_attachment.html.markdown,d/ec2_transit_gateway.html.markdown,d/ec2_spot_price.html.markdown,d/ec2_serial_console_access.html.markdown,d/ec2_public_ipv4_pools.html.markdown,d/ec2_public_ipv4_pool.html.markdown,d/ec2_network_insights_path.html.markdown,d/ec2_network_insights_analysis.html.markdown,d/ec2_managed_prefix_lists.html.markdown,d/ec2_managed_prefix_list.html.markdown,d/ec2_local_gateways.html.markdown,d/ec2_local_gateway_virtual_interface_groups.html.markdown,d/ec2_local_gateway_virtual_interface_group.html.markdown,d/ec2_local_gateway_virtual_interface.html.markdown,d/ec2_local_gateway_route_tables.html.markdown,d/ec2_local_gateway_route_table.html.markdown,d/ec2_local_gateway.html.markdown,d/ec2_instance_types.html.markdown,d/ec2_instance_type_offerings.html.markdown,d/ec2_instance_type_offering.html.markdown,d/ec2_instance_type.html.markdown,d/ec2_host.html.markdown,d/ec2_coip_pools.html.markdown,d/ec2_coip_pool.html.markdown,d/ec2_client_vpn_endpoint.html.markdown,d/ec2_capacity_block_offering.html.markdown,d/ebs_volumes.html.markdown,d/ebs_volume.html.markdown,d/ebs_snapshot_ids.html.markdown,d/ebs_snapshot.html.markdown,d/ebs_encryption_by_default.html.markdown,d/ebs_default_kms_key.html.markdown,d/dynamodb_table_item.html.markdown,d/dynamodb_table.html.markdown,d/dx_router_configuration.html.markdown,d/dx_locations.html.markdown,d/dx_location.html.markdown,d/dx_gateway.html.markdown,d/dx_connection.html.markdown,d/docdb_orderable_db_instance.html.markdown,d/docdb_engine_version.html.markdown,d/dms_replication_task.html.markdown,d/dms_replication_subnet_group.html.markdown,d/dms_replication_instance.html.markdown,d/dms_endpoint.html.markdown,d/dms_certificate.html.markdown,d/directory_service_directory.html.markdown,d/devopsguru_resource_collection.html.markdown,d/devopsguru_notification_channel.html.markdown,d/default_tags.html.markdown,d/db_subnet_group.html.markdown,d/db_snapshot.html.markdown,d/db_proxy.html.markdown,d/db_parameter_group.markdown,d/db_instances.html.markdown,d/db_instance.html.markdown,d/db_event_categories.html.markdown,d/db_cluster_snapshot.html.markdown,d/datazone_environment_blueprint.html.markdown,d/datapipeline_pipeline_definition.html.markdown,d/datapipeline_pipeline.html.markdown,d/customer_gateway.html.markdown,d/cur_report_definition.html.markdown,d/controltower_controls.html.markdown,d/connect_vocabulary.html.markdown,d/connect_user_hierarchy_structure.html.markdown,d/connect_user_hierarchy_group.html.markdown,d/connect_user.html.markdown,d/connect_security_profile.html.markdown,d/connect_routing_profile.html.markdown,d/connect_quick_connect.html.markdown,d/connect_queue.html.markdown,d/connect_prompt.html.markdown,d/connect_lambda_function_association.html.markdown,d/connect_instance_storage_config.html.markdown,d/connect_instance.html.markdown,d/connect_hours_of_operation.html.markdown,d/connect_contact_flow_module.html.markdown,d/connect_contact_flow.html.markdown,d/connect_bot_association.html.markdown,d/cognito_user_pools.html.markdown,d/cognito_user_pool_signing_certificate.html.markdown,d/cognito_user_pool_clients.html.markdown,d/cognito_user_pool_client.html.markdown,d/cognito_user_pool.html.markdown,d/cognito_user_groups.html.markdown,d/cognito_user_group.html.markdown,d/cognito_identity_pool.html.markdown,d/codestarconnections_connection.html.markdown,d/codeguruprofiler_profiling_group.html.markdown,d/codecommit_repository.html.markdown,d/codecommit_approval_rule_template.html.markdown,d/codecatalyst_dev_environment.html.markdown,d/codebuild_fleet.html.markdown,d/codeartifact_repository_endpoint.html.markdown,d/codeartifact_authorization_token.html.markdown,d/cloudwatch_log_groups.html.markdown,d/cloudwatch_log_group.html.markdown,d/cloudwatch_log_data_protection_policy_document.html.markdown,d/cloudwatch_event_source.html.markdown,d/cloudwatch_event_connection.html.markdown,d/cloudwatch_event_bus.html.markdown,d/cloudtrail_service_account.html.markdown,d/cloudhsm_v2_cluster.html.markdown,d/cloudfront_response_headers_policy.html.markdown,d/cloudfront_realtime_log_config.html.markdown,d/cloudfront_origin_request_policy.html.markdown,d/cloudfront_origin_access_identity.html.markdown,d/cloudfront_origin_access_identities.html.markdown,d/cloudfront_origin_access_control.html.markdown,d/cloudfront_log_delivery_canonical_user_id.html.markdown,d/cloudfront_function.html.markdown,d/cloudfront_distribution.html.markdown,d/cloudfront_cache_policy.html.markdown,d/cloudformation_type.html.markdown,d/cloudformation_stack.html.markdown,d/cloudformation_export.html.markdown,d/cloudcontrolapi_resource.html.markdown,d/chatbot_slack_workspace.html.markdown,d/ce_tags.html.markdown,d/ce_cost_category.html.markdown,d/canonical_user_id.html.markdown,d/caller_identity.html.markdown,d/budgets_budget.html.markdown,d/billing_service_account.html.markdown,d/bedrockagent_agent_versions.html.markdown,d/bedrock_inference_profiles.html.markdown,d/bedrock_inference_profile.html.markdown,d/bedrock_foundation_models.html.markdown,d/bedrock_foundation_model.html.markdown,d/bedrock_custom_models.html.markdown,d/bedrock_custom_model.html.markdown,d/batch_scheduling_policy.html.markdown,d/batch_job_queue.html.markdown,d/batch_job_definition.html.markdown,d/batch_compute_environment.html.markdown,d/backup_vault.html.markdown,d/backup_selection.html.markdown,d/backup_report_plan.html.markdown,d/backup_plan.html.markdown,d/backup_framework.html.markdown,d/availability_zones.html.markdown,d/availability_zone.html.markdown,d/autoscaling_groups.html.markdown,d/autoscaling_group.html.markdown,d/auditmanager_framework.html.markdown,d/auditmanager_control.html.markdown,d/athena_named_query.html.markdown,d/arn.html.markdown,d/appstream_image.html.markdown,d/apprunner_hosted_zone_id.html.markdown,d/appmesh_virtual_service.html.markdown,d/appmesh_virtual_router.html.markdown,d/appmesh_virtual_node.html.markdown,d/appmesh_virtual_gateway.html.markdown,d/appmesh_route.html.markdown,d/appmesh_mesh.html.markdown,d/appmesh_gateway_route.html.markdown,d/appintegrations_event_integration.html.markdown,d/appconfig_environments.html.markdown,d/appconfig_environment.html.markdown,d/appconfig_configuration_profiles.html.markdown,d/appconfig_configuration_profile.html.markdown,d/apigatewayv2_vpc_link.html.markdown,d/apigatewayv2_export.html.markdown,d/apigatewayv2_apis.html.markdown,d/apigatewayv2_api.html.markdown,d/api_gateway_vpc_link.html.markdown,d/api_gateway_sdk.html.markdown,d/api_gateway_rest_api.html.markdown,d/api_gateway_resource.html.markdown,d/api_gateway_export.html.markdown,d/api_gateway_domain_name.html.markdown,d/api_gateway_authorizers.html.markdown,d/api_gateway_authorizer.html.markdown,d/api_gateway_api_key.html.markdown,d/ami_ids.html.markdown,d/ami.html.markdown,d/acmpca_certificate_authority.html.markdown,d/acmpca_certificate.html.markdown,d/acm_certificate.html.markdown --- .../d/organizations_policies.html.markdown | 4 +- ...izations_policies_for_target.html.markdown | 4 +- .../d/organizations_policy.html.markdown | 4 +- .../kms_secrets.html.markdown | 75 +++++++++++++++ .../lambda_invocation.html.markdown | 60 ++++++++++++ ...ecretsmanager_secret_version.html.markdown | 76 +++++++++++++++ website/docs/cdktf/python/index.html.markdown | 4 +- .../r/bedrockagent_data_source.html.markdown | 14 ++- .../cdktf/python/r/ecs_service.html.markdown | 12 ++- website/docs/cdktf/python/r/eip.html.markdown | 4 +- .../r/fsx_openzfs_file_system.html.markdown | 4 +- ...policy_attachments_exclusive.html.markdown | 23 ++--- ...policy_attachments_exclusive.html.markdown | 23 ++--- ...policy_attachments_exclusive.html.markdown | 23 ++--- .../imagebuilder_image_pipeline.html.markdown | 41 +++++++- .../python/r/lambda_function.html.markdown | 6 +- .../python/r/lb_target_group.html.markdown | 4 +- .../organizations_organization.html.markdown | 4 +- .../python/r/rds_instance_state.html.markdown | 84 +++++++++++++++++ .../python/r/s3_bucket_acl.html.markdown | 6 +- ...cket_lifecycle_configuration.html.markdown | 22 ++--- .../d/organizations_policies.html.markdown | 4 +- ...izations_policies_for_target.html.markdown | 4 +- .../d/organizations_policy.html.markdown | 4 +- .../kms_secrets.html.markdown | 85 +++++++++++++++++ .../lambda_invocation.html.markdown | 63 +++++++++++++ ...ecretsmanager_secret_version.html.markdown | 88 +++++++++++++++++ .../docs/cdktf/typescript/index.html.markdown | 4 +- .../r/bedrockagent_data_source.html.markdown | 14 ++- .../typescript/r/ecs_service.html.markdown | 12 ++- .../docs/cdktf/typescript/r/eip.html.markdown | 4 +- .../r/fsx_openzfs_file_system.html.markdown | 4 +- ...policy_attachments_exclusive.html.markdown | 23 ++--- ...policy_attachments_exclusive.html.markdown | 23 ++--- ...policy_attachments_exclusive.html.markdown | 23 ++--- .../imagebuilder_image_pipeline.html.markdown | 65 +++++++++++-- .../r/lambda_function.html.markdown | 6 +- .../r/lb_target_group.html.markdown | 4 +- .../organizations_organization.html.markdown | 4 +- .../r/rds_instance_state.html.markdown | 94 +++++++++++++++++++ .../typescript/r/s3_bucket_acl.html.markdown | 6 +- ...cket_lifecycle_configuration.html.markdown | 22 ++--- 42 files changed, 899 insertions(+), 154 deletions(-) create mode 100644 website/docs/cdktf/python/ephemeral-resources/kms_secrets.html.markdown create mode 100644 website/docs/cdktf/python/ephemeral-resources/lambda_invocation.html.markdown create mode 100644 website/docs/cdktf/python/ephemeral-resources/secretsmanager_secret_version.html.markdown create mode 100644 website/docs/cdktf/python/r/rds_instance_state.html.markdown create mode 100644 website/docs/cdktf/typescript/ephemeral-resources/kms_secrets.html.markdown create mode 100644 website/docs/cdktf/typescript/ephemeral-resources/lambda_invocation.html.markdown create mode 100644 website/docs/cdktf/typescript/ephemeral-resources/secretsmanager_secret_version.html.markdown create mode 100644 website/docs/cdktf/typescript/r/rds_instance_state.html.markdown diff --git a/website/docs/cdktf/python/d/organizations_policies.html.markdown b/website/docs/cdktf/python/d/organizations_policies.html.markdown index 86af4a62a2b..3123b283124 100644 --- a/website/docs/cdktf/python/d/organizations_policies.html.markdown +++ b/website/docs/cdktf/python/d/organizations_policies.html.markdown @@ -50,7 +50,7 @@ class MyConvertedCode(TerraformStack): The following arguments are required: -* `filter` - (Required) The type of policies to be returned in the response. Valid values are `SERVICE_CONTROL_POLICY | TAG_POLICY | BACKUP_POLICY | AISERVICES_OPT_OUT_POLICY` +* `filter` - (Required) The type of policies to be returned in the response. Valid values are `AISERVICES_OPT_OUT_POLICY | BACKUP_POLICY | RESOURCE_CONTROL_POLICY | SERVICE_CONTROL_POLICY | TAG_POLICY` ## Attribute Reference @@ -58,4 +58,4 @@ This data source exports the following attributes in addition to the arguments a * `ids` - List of all the policy ids found. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/organizations_policies_for_target.html.markdown b/website/docs/cdktf/python/d/organizations_policies_for_target.html.markdown index 20c5434a544..3f2743cf13a 100644 --- a/website/docs/cdktf/python/d/organizations_policies_for_target.html.markdown +++ b/website/docs/cdktf/python/d/organizations_policies_for_target.html.markdown @@ -57,7 +57,7 @@ class MyConvertedCode(TerraformStack): The following arguments are required: * `target_id` - (Required) The root (string that begins with "r-" followed by 4-32 lowercase letters or digits), account (12 digit string), or Organizational Unit (string starting with "ou-" followed by 4-32 lowercase letters or digits. This string is followed by a second "-" dash and from 8-32 additional lowercase letters or digits.) -* `filter` - (Required) Must supply one of the 4 different policy filters for a target (SERVICE_CONTROL_POLICY | TAG_POLICY | BACKUP_POLICY | AISERVICES_OPT_OUT_POLICY) +* `filter` - (Required) Must supply one of the 5 different policy filters for a target (AISERVICES_OPT_OUT_POLICY | BACKUP_POLICY | RESOURCE_CONTROL_POLICY | SERVICE_CONTROL_POLICY | TAG_POLICY) ## Attribute Reference @@ -65,4 +65,4 @@ This data source exports the following attributes in addition to the arguments a * `ids` - List of all the policy ids found. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/d/organizations_policy.html.markdown b/website/docs/cdktf/python/d/organizations_policy.html.markdown index dea30d05311..4bce0e6b1c5 100644 --- a/website/docs/cdktf/python/d/organizations_policy.html.markdown +++ b/website/docs/cdktf/python/d/organizations_policy.html.markdown @@ -60,6 +60,6 @@ This data source exports the following attributes in addition to the arguments a * `content` - The text content of the policy. * `description` - The description of the policy. * `name` - The friendly name of the policy. -* `type` - The type of policy values can be `SERVICE_CONTROL_POLICY | TAG_POLICY | BACKUP_POLICY | AISERVICES_OPT_OUT_POLICY` +* `type` - The type of policy values can be `AISERVICES_OPT_OUT_POLICY | BACKUP_POLICY | RESOURCE_CONTROL_POLICY | SERVICE_CONTROL_POLICY | TAG_POLICY` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/ephemeral-resources/kms_secrets.html.markdown b/website/docs/cdktf/python/ephemeral-resources/kms_secrets.html.markdown new file mode 100644 index 00000000000..10762623698 --- /dev/null +++ b/website/docs/cdktf/python/ephemeral-resources/kms_secrets.html.markdown @@ -0,0 +1,75 @@ +--- +subcategory: "KMS (Key Management)" +layout: "aws" +page_title: "AWS: aws_kms_secrets" +description: |- + Decrypt multiple secrets from data encrypted with the AWS KMS service +--- + + + +# Ephemeral: aws_kms_secrets + +Decrypt multiple secrets from data encrypted with the AWS KMS service. + +~> **NOTE:** Ephemeral resources are a new feature and may evolve as we continue to explore their most effective uses. [Learn more](https://developer.hashicorp.com/terraform/language/v1.10.x/resources/ephemeral). + +## Example Usage + +If you do not already have a `CiphertextBlob` from encrypting a KMS secret, you can use the below commands to obtain one using the [AWS CLI kms encrypt](https://docs.aws.amazon.com/cli/latest/reference/kms/encrypt.html) command. This requires you to have your AWS CLI setup correctly and replace the `--key-id` with your own. Alternatively you can use `--plaintext 'master-password'` (CLIv1) or `--plaintext fileb://<(echo -n 'master-password')` (CLIv2) instead of reading from a file. + +-> If you have a newline character at the end of your file, it will be decrypted with this newline character intact. For most use cases this is undesirable and leads to incorrect passwords or invalid values, as well as possible changes in the plan. Be sure to use `echo -n` if necessary. +-> If you are using asymmetric keys ensure you are using the right encryption algorithm when you encrypt and decrypt else you will get IncorrectKeyException during the decrypt phase. + +That encrypted output can now be inserted into Terraform configurations without exposing the plaintext secret directly. + +```python +# DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +from constructs import Construct +from cdktf import Fn, Token, TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws.rds_cluster import RdsCluster +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name, *, engine): + super().__init__(scope, name) + RdsCluster(self, "example", + master_password=Token.as_string( + Fn.lookup_nested(data_aws_kms_secrets_example.plaintext, ["\"master_password\"" + ])), + master_username=Token.as_string( + Fn.lookup_nested(data_aws_kms_secrets_example.plaintext, ["\"master_username\"" + ])), + engine=engine + ) +``` + +## Argument Reference + +This resource supports the following arguments: + +* `secret` - (Required) One or more encrypted payload definitions from the KMS service. See the Secret Definitions below. + +### Secret Definitions + +Each `secret` supports the following arguments: + +* `name` - (Required) Name to export this secret under in the attributes. +* `payload` - (Required) Base64 encoded payload, as returned from a KMS encrypt operation. +* `context` - (Optional) An optional mapping that makes up the Encryption Context for the secret. +* `grant_tokens` (Optional) An optional list of Grant Tokens for the secret. +* `encryption_algorithm` - (Optional) The encryption algorithm that will be used to decrypt the ciphertext. This parameter is required only when the ciphertext was encrypted under an asymmetric KMS key. Valid Values: SYMMETRIC_DEFAULT | RSAES_OAEP_SHA_1 | RSAES_OAEP_SHA_256 | SM2PKE +* `key_id` (Optional) Specifies the KMS key that AWS KMS uses to decrypt the ciphertext. This parameter is required only when the ciphertext was encrypted under an asymmetric KMS key. + +For more information on `context` and `grant_tokens` see the [KMS +Concepts](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html) + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `plaintext` - Map containing each `secret` `name` as the key with its decrypted plaintext value + + \ No newline at end of file diff --git a/website/docs/cdktf/python/ephemeral-resources/lambda_invocation.html.markdown b/website/docs/cdktf/python/ephemeral-resources/lambda_invocation.html.markdown new file mode 100644 index 00000000000..85ea3d8b3ba --- /dev/null +++ b/website/docs/cdktf/python/ephemeral-resources/lambda_invocation.html.markdown @@ -0,0 +1,60 @@ +--- +subcategory: "Lambda" +layout: "aws" +page_title: "AWS: aws_lambda_invocation" +description: |- + Invoke AWS Lambda Function +--- + + + +# Ephemeral: aws_lambda_invocation + +Use this ephemeral resource to invoke a Lambda function. The lambda function is invoked with the [RequestResponse](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html#API_Invoke_RequestSyntax) invocation type. + +~> **NOTE:** Ephemeral resources are a new feature and may evolve as we continue to explore their most effective uses. [Learn more](https://developer.hashicorp.com/terraform/language/v1.10.x/resources/ephemeral). + +~> **NOTE:** The `aws_lambda_invocation` ephemeral resource invokes the function during every `plan` and `apply` when the function is known. A common use case for this functionality is when invoking a lightweight function—where repeated invocations are acceptable—that produces sensitive information you do not want to store in the state. + +~> **NOTE:** If you get a `KMSAccessDeniedException: Lambda was unable to decrypt the environment variables because KMS access was denied` error when invoking an [`aws_lambda_function`](/docs/providers/aws/r/lambda_function.html) with environment variables, the IAM role associated with the function may have been deleted and recreated _after_ the function was created. You can fix the problem two ways: 1) updating the function's role to another role and then updating it back again to the recreated role, or 2) by using Terraform to `taint` the function and `apply` your configuration again to recreate the function. (When you create a function, Lambda grants permissions on the KMS key to the function's IAM role. If the IAM role is recreated, the grant is no longer valid. Changing the function's role or recreating the function causes Lambda to update the grant.) + +## Example Usage + +### Basic Example + +```python +# DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +from constructs import Construct +from cdktf import TerraformOutput, Fn, TerraformStack +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + TerraformOutput(self, "result_entry", + value=Fn.lookup_nested(Fn.jsondecode(example.result), ["\"key1\""]) + ) +``` + +## Argument Reference + +The following arguments are required: + +* `function_name` - (Required) Name or ARN of the Lambda function, version, or alias. You can append a version number or alias. If you specify only the function name, it is limited to 64 characters in length. +* `payload` - (Required) JSON that you want to provide to your Lambda function as input. + +The following arguments are optional: + +* `client_context` - (Optional) Up to 3583 bytes of base64-encoded data about the invoking client to pass to the function in the context object. +* `log_type` - (Optional) Set to `Tail` to include the execution log in the response. Valid values are `None` and `Tail`. +* `qualifier` - (Optional) Version or alias to invoke a published version of the function. Defaults to `$LATEST`. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `executed_version` - Version of the function that executed. When you invoke a function with an alias, the version the alias resolved to. +* `function_error` - If present, indicates that an error occurred during function execution. Details about the error are included in `result`. +* `log_result` - Last 4 KB of the execution log, which is base64-encoded. +* `result` - String result of the lambda function invocation. +* `status_code` - HTTP status code is in the 200 range for a successful request. + + \ No newline at end of file diff --git a/website/docs/cdktf/python/ephemeral-resources/secretsmanager_secret_version.html.markdown b/website/docs/cdktf/python/ephemeral-resources/secretsmanager_secret_version.html.markdown new file mode 100644 index 00000000000..31f131206b7 --- /dev/null +++ b/website/docs/cdktf/python/ephemeral-resources/secretsmanager_secret_version.html.markdown @@ -0,0 +1,76 @@ +--- +subcategory: "Secrets Manager" +layout: "aws" +page_title: "AWS: aws_secretsmanager_secret_version" +description: |- + Retrieve information about a Secrets Manager secret version including its secret value +--- + + + +# Ephemeral: aws_secretsmanager_secret_version + +Retrieve information about a Secrets Manager secret version, including its secret value. To retrieve secret metadata, see the [`aws_secretsmanager_secret` data source](/docs/providers/aws/d/secretsmanager_secret.html). + +~> **NOTE:** Ephemeral resources are a new feature and may evolve as we continue to explore their most effective uses. [Learn more](https://developer.hashicorp.com/terraform/language/v1.10.x/resources/ephemeral). + +## Example Usage + +### Retrieve Current Secret Version + +By default, this ephemeral resource retrieves information based on the `AWSCURRENT` staging label. + +```python +# DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +from constructs import Construct +from cdktf import TerraformStack +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) +``` + +### Retrieve Specific Secret Version + +```python +# DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +from constructs import Construct +from cdktf import TerraformStack +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) +``` + +### Handling Key-Value Secret Strings in JSON + +Reading key-value pairs from JSON back into a native Terraform map can be accomplished in Terraform 0.12 and later with the [`jsondecode()` function](https://www.terraform.io/docs/configuration/functions/jsondecode.html): + +```python +# DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +from constructs import Construct +from cdktf import TerraformOutput, Fn, TerraformStack +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + TerraformOutput(self, "example", + value=Fn.lookup_nested(aws_secretsmanager_secret_version.example.secret_string, ["\"key1\""]) + ) +``` + +## Argument Reference + +* `secret_id` - (Required) Specifies the secret containing the version that you want to retrieve. You can specify either the ARN or the friendly name of the secret. +* `version_id` - (Optional) Specifies the unique identifier of the version of the secret that you want to retrieve. Overrides `version_stage`. +* `version_stage` - (Optional) Specifies the secret version that you want to retrieve by the staging label attached to the version. Defaults to `AWSCURRENT`. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `arn` - ARN of the secret. +* `created_date` - Created date of the secret in UTC. +* `id` - Unique identifier of this version of the secret. +* `secret_string` - Decrypted part of the protected secret information that was originally provided as a string. +* `secret_binary` - Decrypted part of the protected secret information that was originally provided as a binary. +* `version_id` - Unique identifier of this version of the secret. + + \ No newline at end of file diff --git a/website/docs/cdktf/python/index.html.markdown b/website/docs/cdktf/python/index.html.markdown index 6468c7cde49..52217566e23 100644 --- a/website/docs/cdktf/python/index.html.markdown +++ b/website/docs/cdktf/python/index.html.markdown @@ -13,7 +13,7 @@ Use the Amazon Web Services (AWS) provider to interact with the many resources supported by AWS. You must configure the provider with the proper credentials before you can use it. -Use the navigation to the left to read about the available resources. There are currently 1447 resources and 591 data sources available in the provider. +Use the navigation to the left to read about the available resources. There are currently 1448 resources and 591 data sources available in the provider. To learn the basics of Terraform using this provider, follow the hands-on [get started tutorials](https://learn.hashicorp.com/tutorials/terraform/infrastructure-as-code?in=terraform/aws-get-started&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS). Interact with AWS services, @@ -898,4 +898,4 @@ Approaches differ per authentication providers: There used to be no better way to get account ID out of the API when using the federated account until `sts:GetCallerIdentity` was introduced. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/bedrockagent_data_source.html.markdown b/website/docs/cdktf/python/r/bedrockagent_data_source.html.markdown index 1dbcd46afa1..79e750a99fb 100644 --- a/website/docs/cdktf/python/r/bedrockagent_data_source.html.markdown +++ b/website/docs/cdktf/python/r/bedrockagent_data_source.html.markdown @@ -128,7 +128,7 @@ The `semantic_chunking_configuration` block supports the following arguments: The `custom_transformation_configuration` block supports the following arguments: * `intermediate_storage` - (Required, Forces new resource) The intermediate storage for custom transformation. -* `transformation_function` - (Required) The configuration of transformation function. +* `transformation` - (Required) A custom processing step for documents moving through the data source ingestion pipeline. ### `intermediate_storage` block @@ -142,12 +142,18 @@ The `s3_location` block supports the following arguments: * `uri` - (Required, Forces new resource) S3 URI for intermediate storage. +### `transformation` block + +The `transformation` block supports the following arguments: + +* `step_to_apply` - (Required, Forces new resource) When the service applies the transformation. Currently only `POST_CHUNKING` is supported. +* `transformation_function` - (Required) The lambda function that processes documents. + ### `transformation_function` block The `transformation_function` block supports the following arguments: -* `step_to_apply` - (Required, Forces new resource) Currently only `POST_CHUNKING` is supported. -* `transformation_lambda_configuration` - (Required, Forces new resource) The lambda configuration for custom transformation. +* `transformation_lambda_configuration` - (Required, Forces new resource) The configuration of the lambda function. ### `transformation_lambda_configuration` block @@ -214,4 +220,4 @@ Using `terraform import`, import Agents for Amazon Bedrock Data Source using the % terraform import aws_bedrockagent_data_source.example GWCMFMQF6T,EMDPPAYPZI ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/ecs_service.html.markdown b/website/docs/cdktf/python/r/ecs_service.html.markdown index 8740252c5c1..580eda97742 100644 --- a/website/docs/cdktf/python/r/ecs_service.html.markdown +++ b/website/docs/cdktf/python/r/ecs_service.html.markdown @@ -186,6 +186,7 @@ The following arguments are required: The following arguments are optional: * `alarms` - (Optional) Information about the CloudWatch alarms. [See below](#alarms). +* `availability_zone_rebalancing` - (Optional) ECS automatically redistributes tasks within a service across Availability Zones (AZs) to mitigate the risk of impaired application availability due to underlying infrastructure failures and task lifecycle activities. The valid values are `ENABLED` and `DISABLED`. Defaults to `DISABLED`. * `capacity_provider_strategy` - (Optional) Capacity provider strategies to use for the service. Can be one or more. These can be updated without destroying and recreating the service only if `force_new_deployment = true` and not changing from 0 `capacity_provider_strategy` blocks to greater than 0, or vice versa. See below. Conflicts with `launch_type`. * `cluster` - (Optional) ARN of an ECS cluster. * `deployment_circuit_breaker` - (Optional) Configuration block for deployment circuit breaker. See below. @@ -213,6 +214,7 @@ The following arguments are optional: * `task_definition` - (Optional) Family and revision (`family:revision`) or full ARN of the task definition that you want to run in your service. Required unless using the `EXTERNAL` deployment controller. If a revision is not specified, the latest `ACTIVE` revision is used. * `triggers` - (Optional) Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. * `volume_configuration` - (Optional) Configuration for a volume specified in the task definition as a volume that is configured at launch time. Currently, the only supported volume type is an Amazon EBS volume. [See below](#volume_configuration). +* `vpc_lattice_configurations` - (Optional) The VPC Lattice configuration for your service that allows Lattice to connect, secure, and monitor your service across multiple accounts and VPCs. [See below](#vpc_lattice_configurations). * `wait_for_steady_state` - (Optional) If `true`, Terraform will wait for the service to reach a steady state (like [`aws ecs wait services-stable`](https://docs.aws.amazon.com/cli/latest/reference/ecs/wait/services-stable.html)) before continuing. Default `false`. ### alarms @@ -230,6 +232,14 @@ The `volume_configuration` configuration block supports the following: * `name` - (Required) Name of the volume. * `managed_ebs_volume` - (Required) Configuration for the Amazon EBS volume that Amazon ECS creates and manages on your behalf. [See below](#managed_ebs_volume). +### vpc_lattice_configurations + +`vpc_lattice_configurations` supports the following: + +* `role_arn` - (Required) The ARN of the IAM role to associate with this volume. This is the Amazon ECS infrastructure IAM role that is used to manage your AWS infrastructure. +* `target_group_arn` - (Required) The full ARN of the target group or groups associated with the VPC Lattice configuration. +* `port_name` - (Required) The name of the port for a target group associated with the VPC Lattice configuration. + ### managed_ebs_volume The `managed_ebs_volume` configuration block supports the following: @@ -426,4 +436,4 @@ Using `terraform import`, import ECS services using the `name` together with ecs % terraform import aws_ecs_service.imported cluster-name/service-name ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/eip.html.markdown b/website/docs/cdktf/python/r/eip.html.markdown index 07dd8f28e53..9c346ded412 100644 --- a/website/docs/cdktf/python/r/eip.html.markdown +++ b/website/docs/cdktf/python/r/eip.html.markdown @@ -161,7 +161,7 @@ This resource supports the following arguments: * `address` - (Optional) IP address from an EC2 BYOIP pool. This option is only available for VPC EIPs. * `associate_with_private_ip` - (Optional) User-specified primary or secondary private IP address to associate with the Elastic IP address. If no private IP address is specified, the Elastic IP address is associated with the primary private IP address. * `customer_owned_ipv4_pool` - (Optional) ID of a customer-owned address pool. For more on customer owned IP addressed check out [Customer-owned IP addresses guide](https://docs.aws.amazon.com/outposts/latest/userguide/outposts-networking-components.html#ip-addressing). -* `domain` - Indicates if this EIP is for use in VPC (`vpc`). +* `domain` - (Optional) Indicates if this EIP is for use in VPC (`vpc`). * `instance` - (Optional) EC2 instance ID. * `ipam_pool_id`- (Optional) The ID of an IPAM pool which has an Amazon-provided or BYOIP public IPv4 CIDR provisioned to it. * `network_border_group` - (Optional) Location from which the IP address is advertised. Use this parameter to limit the address to this location. @@ -230,4 +230,4 @@ Using `terraform import`, import EIPs in a VPC using their Allocation ID. For ex [1]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AssociateAddress.html - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/fsx_openzfs_file_system.html.markdown b/website/docs/cdktf/python/r/fsx_openzfs_file_system.html.markdown index aaad49ee40b..3c15e2b10d4 100644 --- a/website/docs/cdktf/python/r/fsx_openzfs_file_system.html.markdown +++ b/website/docs/cdktf/python/r/fsx_openzfs_file_system.html.markdown @@ -39,7 +39,7 @@ class MyConvertedCode(TerraformStack): The following arguments are required: -* `deployment_type` - (Required) The filesystem deployment type. Valid values: `SINGLE_AZ_1`, `SINGLE_AZ_2` and `MULTI_AZ_1`. +* `deployment_type` - (Required) Filesystem deployment type. See the [AWS API documentation](https://docs.aws.amazon.com/fsx/latest/APIReference/API_CreateFileSystemOpenZFSConfiguration.html#FSx-Type-CreateFileSystemOpenZFSConfiguration-DeploymentType) for a list of valid values. * `storage_capacity` - (Required) The storage capacity (GiB) of the file system. Valid values between `64` and `524288`. * `subnet_ids` - (Required) A list of IDs for the subnets that the file system will be accessible from. * `throughput_capacity` - (Required) Throughput (MB/s) of the file system. Valid values depend on `deployment_type`. Must be one of `64`, `128`, `256`, `512`, `1024`, `2048`, `3072`, `4096` for `SINGLE_AZ_1`. Must be one of `160`, `320`, `640`, `1280`, `2560`, `3840`, `5120`, `7680`, `10240` for `SINGLE_AZ_2`. @@ -177,4 +177,4 @@ class MyConvertedCode(TerraformStack): ) ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/iam_group_policy_attachments_exclusive.html.markdown b/website/docs/cdktf/python/r/iam_group_policy_attachments_exclusive.html.markdown index 9011155831b..6bb7dac36a6 100644 --- a/website/docs/cdktf/python/r/iam_group_policy_attachments_exclusive.html.markdown +++ b/website/docs/cdktf/python/r/iam_group_policy_attachments_exclusive.html.markdown @@ -3,17 +3,18 @@ subcategory: "IAM (Identity & Access Management)" layout: "aws" page_title: "AWS: aws_iam_group_policy_attachments_exclusive" description: |- - Terraform resource for maintaining exclusive management of customer managed policies assigned to an AWS IAM (Identity & Access Management) group. + Terraform resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) group. --- + # Resource: aws_iam_group_policy_attachments_exclusive -Terraform resource for maintaining exclusive management of customer managed policies assigned to an AWS IAM (Identity & Access Management) group. +Terraform resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) group. -!> This resource takes exclusive ownership over customer managed policies attached to a group. This includes removal of customer managed policies which are not explicitly configured. To prevent persistent drift, ensure any `aws_iam_group_policy_attachment` resources managed alongside this resource are included in the `policy_arns` argument. +!> This resource takes exclusive ownership over managed IAM policies attached to a group. This includes removal of managed IAM policies which are not explicitly configured. To prevent persistent drift, ensure any `aws_iam_group_policy_attachment` resources managed alongside this resource are included in the `policy_arns` argument. -~> Destruction of this resource means Terraform will no longer manage reconciliation of the configured policy attachments. It __will not__ detach the configured policies from the group. +~> Destruction of this resource means Terraform will no longer manage reconciliation of the configured policy attachments. It **will not** detach the configured policies from the group. ## Example Usage @@ -37,11 +38,11 @@ class MyConvertedCode(TerraformStack): ) ``` -### Disallow Customer Managed Policies +### Disallow Managed IAM Policies -To automatically remove any configured customer managed policies, set the `policy_arns` argument to an empty list. +To automatically remove any configured managed IAM policies, set the `policy_arns` argument to an empty list. -~> This will not __prevent__ customer managed policies from being assigned to a group via Terraform (or any other interface). This resource enables bringing customer managed policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. +~> This will not **prevent** managed IAM policies from being assigned to a group via Terraform (or any other interface). This resource enables bringing managed IAM policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. ```python # DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug @@ -66,7 +67,7 @@ class MyConvertedCode(TerraformStack): The following arguments are required: * `group_name` - (Required) IAM group name. -* `policy_arns` - (Required) A list of customer managed policy ARNs to be attached to the group. Policies attached to this group but not configured in this argument will be removed. +* `policy_arns` - (Required) A list of managed IAM policy ARNs to be attached to the group. Policies attached to this group but not configured in this argument will be removed. ## Attribute Reference @@ -74,7 +75,7 @@ This resource exports no additional attributes. ## Import -In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to exclusively manage customer managed policy assignments using the `group_name`. For example: +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to exclusively manage managed IAM policy assignments using the `group_name`. For example: ```python # DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug @@ -91,10 +92,10 @@ class MyConvertedCode(TerraformStack): IamGroupPolicyAttachmentsExclusive.generate_config_for_import(self, "example", "MyGroup") ``` -Using `terraform import`, import exclusive management of customer managed policy assignments using the `group_name`. For example: +Using `terraform import`, import exclusive management of managed IAM policy assignments using the `group_name`. For example: ```console % terraform import aws_iam_group_policy_attachments_exclusive.example MyGroup ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/iam_role_policy_attachments_exclusive.html.markdown b/website/docs/cdktf/python/r/iam_role_policy_attachments_exclusive.html.markdown index 62cd4f89bf3..ffb31125a09 100644 --- a/website/docs/cdktf/python/r/iam_role_policy_attachments_exclusive.html.markdown +++ b/website/docs/cdktf/python/r/iam_role_policy_attachments_exclusive.html.markdown @@ -3,17 +3,18 @@ subcategory: "IAM (Identity & Access Management)" layout: "aws" page_title: "AWS: aws_iam_role_policy_attachments_exclusive" description: |- - Terraform resource for maintaining exclusive management of customer managed policies assigned to an AWS IAM (Identity & Access Management) role. + Terraform resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) role. --- + # Resource: aws_iam_role_policy_attachments_exclusive -Terraform resource for maintaining exclusive management of customer managed policies assigned to an AWS IAM (Identity & Access Management) role. +Terraform resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) role. -!> This resource takes exclusive ownership over customer managed policies attached to a role. This includes removal of customer managed policies which are not explicitly configured. To prevent persistent drift, ensure any `aws_iam_role_policy_attachment` resources managed alongside this resource are included in the `policy_arns` argument. +!> This resource takes exclusive ownership over managed IAM policies attached to a role. This includes removal of managed IAM policies which are not explicitly configured. To prevent persistent drift, ensure any `aws_iam_role_policy_attachment` resources managed alongside this resource are included in the `policy_arns` argument. -~> Destruction of this resource means Terraform will no longer manage reconciliation of the configured policy attachments. It __will not__ detach the configured policies from the role. +~> Destruction of this resource means Terraform will no longer manage reconciliation of the configured policy attachments. It **will not** detach the configured policies from the role. ## Example Usage @@ -37,11 +38,11 @@ class MyConvertedCode(TerraformStack): ) ``` -### Disallow Customer Managed Policies +### Disallow Managed IAM Policies -To automatically remove any configured customer managed policies, set the `policy_arns` argument to an empty list. +To automatically remove any configured managed IAM policies, set the `policy_arns` argument to an empty list. -~> This will not __prevent__ customer managed policies from being assigned to a role via Terraform (or any other interface). This resource enables bringing customer managed policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. +~> This will not **prevent** managed IAM policies from being assigned to a role via Terraform (or any other interface). This resource enables bringing managed IAM policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. ```python # DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug @@ -66,7 +67,7 @@ class MyConvertedCode(TerraformStack): The following arguments are required: * `role_name` - (Required) IAM role name. -* `policy_arns` - (Required) A list of customer managed policy ARNs to be attached to the role. Policies attached to this role but not configured in this argument will be removed. +* `policy_arns` - (Required) A list of managed IAM policy ARNs to be attached to the role. Policies attached to this role but not configured in this argument will be removed. ## Attribute Reference @@ -74,7 +75,7 @@ This resource exports no additional attributes. ## Import -In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to exclusively manage customer managed policy assignments using the `role_name`. For example: +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to exclusively manage managed IAM policy assignments using the `role_name`. For example: ```python # DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug @@ -91,10 +92,10 @@ class MyConvertedCode(TerraformStack): IamRolePolicyAttachmentsExclusive.generate_config_for_import(self, "example", "MyRole") ``` -Using `terraform import`, import exclusive management of customer managed policy assignments using the `role_name`. For example: +Using `terraform import`, import exclusive management of managed IAM policy assignments using the `role_name`. For example: ```console % terraform import aws_iam_role_policy_attachments_exclusive.example MyRole ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/iam_user_policy_attachments_exclusive.html.markdown b/website/docs/cdktf/python/r/iam_user_policy_attachments_exclusive.html.markdown index 2d12bcabb03..8b6f448cfd3 100644 --- a/website/docs/cdktf/python/r/iam_user_policy_attachments_exclusive.html.markdown +++ b/website/docs/cdktf/python/r/iam_user_policy_attachments_exclusive.html.markdown @@ -3,17 +3,18 @@ subcategory: "IAM (Identity & Access Management)" layout: "aws" page_title: "AWS: aws_iam_user_policy_attachments_exclusive" description: |- - Terraform resource for maintaining exclusive management of customer managed policies assigned to an AWS IAM (Identity & Access Management) user. + Terraform resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) user. --- + # Resource: aws_iam_user_policy_attachments_exclusive -Terraform resource for maintaining exclusive management of customer managed policies assigned to an AWS IAM (Identity & Access Management) user. +Terraform resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) user. -!> This resource takes exclusive ownership over customer managed policies attached to a user. This includes removal of customer managed policies which are not explicitly configured. To prevent persistent drift, ensure any `aws_iam_user_policy_attachment` resources managed alongside this resource are included in the `policy_arns` argument. +!> This resource takes exclusive ownership over managed IAM policies attached to a user. This includes removal of managed IAM policies which are not explicitly configured. To prevent persistent drift, ensure any `aws_iam_user_policy_attachment` resources managed alongside this resource are included in the `policy_arns` argument. -~> Destruction of this resource means Terraform will no longer manage reconciliation of the configured policy attachments. It __will not__ detach the configured policies from the user. +~> Destruction of this resource means Terraform will no longer manage reconciliation of the configured policy attachments. It **will not** detach the configured policies from the user. ## Example Usage @@ -37,11 +38,11 @@ class MyConvertedCode(TerraformStack): ) ``` -### Disallow Customer Managed Policies +### Disallow Managed IAM Policies -To automatically remove any configured customer managed policies, set the `policy_arns` argument to an empty list. +To automatically remove any configured managed IAM policies, set the `policy_arns` argument to an empty list. -~> This will not __prevent__ customer managed policies from being assigned to a user via Terraform (or any other interface). This resource enables bringing customer managed policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. +~> This will not **prevent** managed IAM policies from being assigned to a user via Terraform (or any other interface). This resource enables bringing managed IAM policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. ```python # DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug @@ -66,7 +67,7 @@ class MyConvertedCode(TerraformStack): The following arguments are required: * `user_name` - (Required) IAM user name. -* `policy_arns` - (Required) A list of customer managed policy ARNs to be attached to the user. Policies attached to this user but not configured in this argument will be removed. +* `policy_arns` - (Required) A list of managed IAM policy ARNs to be attached to the user. Policies attached to this user but not configured in this argument will be removed. ## Attribute Reference @@ -74,7 +75,7 @@ This resource exports no additional attributes. ## Import -In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to exclusively manage customer managed policy assignments using the `user_name`. For example: +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to exclusively manage managed IAM policy assignments using the `user_name`. For example: ```python # DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug @@ -91,10 +92,10 @@ class MyConvertedCode(TerraformStack): IamUserPolicyAttachmentsExclusive.generate_config_for_import(self, "example", "MyUser") ``` -Using `terraform import`, import exclusive management of customer managed policy assignments using the `user_name`. For example: +Using `terraform import`, import exclusive management of managed IAM policy assignments using the `user_name`. For example: ```console % terraform import aws_iam_user_policy_attachments_exclusive.example MyUser ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/imagebuilder_image_pipeline.html.markdown b/website/docs/cdktf/python/r/imagebuilder_image_pipeline.html.markdown index 3c1b7408414..67e5f392005 100644 --- a/website/docs/cdktf/python/r/imagebuilder_image_pipeline.html.markdown +++ b/website/docs/cdktf/python/r/imagebuilder_image_pipeline.html.markdown @@ -12,10 +12,13 @@ description: |- Manages an Image Builder Image Pipeline. +~> **NOTE:** Starting with version `5.74.0`, lifecycle meta-argument [`replace_triggered_by`](https://developer.hashicorp.com/terraform/language/meta-arguments/lifecycle#replace_triggered_by) must be used in order to prevent a dependency error on destroy. + ## Example Usage ```python # DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +from cdktf import TerraformResourceLifecycle from constructs import Construct from cdktf import Token, TerraformStack # @@ -23,17 +26,49 @@ from cdktf import Token, TerraformStack # See https://cdk.tf/provider-generation for more details. # from imports.aws.imagebuilder_image_pipeline import ImagebuilderImagePipeline +from imports.aws.imagebuilder_image_recipe import ImagebuilderImageRecipe class MyConvertedCode(TerraformStack): def __init__(self, scope, name): super().__init__(scope, name) - ImagebuilderImagePipeline(self, "example", - image_recipe_arn=Token.as_string(aws_imagebuilder_image_recipe_example.arn), + example = ImagebuilderImageRecipe(self, "example", + block_device_mapping=[ImagebuilderImageRecipeBlockDeviceMapping( + device_name="/dev/xvdb", + ebs=ImagebuilderImageRecipeBlockDeviceMappingEbs( + delete_on_termination=Token.as_string(True), + volume_size=100, + volume_type="gp2" + ) + ) + ], + component=[ImagebuilderImageRecipeComponent( + component_arn=Token.as_string(aws_imagebuilder_component_example.arn), + parameter=[ImagebuilderImageRecipeComponentParameter( + name="Parameter1", + value="Value1" + ), ImagebuilderImageRecipeComponentParameter( + name="Parameter2", + value="Value2" + ) + ] + ) + ], + name="example", + parent_image="arn:${" + current.partition + "}:imagebuilder:${" + data_aws_region_current.name + "}:aws:image/amazon-linux-2-x86/x.x.x", + version="1.0.0" + ) + aws_imagebuilder_image_pipeline_example = ImagebuilderImagePipeline(self, "example_1", + image_recipe_arn=example.arn, infrastructure_configuration_arn=Token.as_string(aws_imagebuilder_infrastructure_configuration_example.arn), + lifecycle=TerraformResourceLifecycle( + replace_triggered_by=[example] + ), name="example", schedule=ImagebuilderImagePipelineSchedule( schedule_expression="cron(0 0 * * ? *)" ) ) + # This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match. + aws_imagebuilder_image_pipeline_example.override_logical_id("example") ``` ## Argument Reference @@ -147,4 +182,4 @@ Using `terraform import`, import `aws_imagebuilder_image_pipeline` resources usi % terraform import aws_imagebuilder_image_pipeline.example arn:aws:imagebuilder:us-east-1:123456789012:image-pipeline/example ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/lambda_function.html.markdown b/website/docs/cdktf/python/r/lambda_function.html.markdown index 038b87da46d..2dcc120b043 100644 --- a/website/docs/cdktf/python/r/lambda_function.html.markdown +++ b/website/docs/cdktf/python/r/lambda_function.html.markdown @@ -370,7 +370,8 @@ Advanced logging settings. See [Configuring advanced logging controls for your L ### snap_start -Snap start settings for low-latency startups. This feature is currently only supported for `java11`, `java17` and `java21` runtimes. Remove this block to delete the associated settings (rather than setting `apply_on = "None"`). +Snap start settings for low-latency startups. This feature is currently only supported for specific runtimes, see [Supported features and limitations][14]. +Remove this block to delete the associated settings (rather than setting `apply_on = "None"`). * `apply_on` - (Required) Conditions where snap start is enabled. Valid values are `PublishedVersions`. @@ -418,6 +419,7 @@ This resource exports the following attributes in addition to the arguments abov [11]: https://learn.hashicorp.com/terraform/aws/lambda-api-gateway [12]: https://docs.aws.amazon.com/lambda/latest/dg/services-efs.html [13]: https://docs.aws.amazon.com/lambda/latest/dg/monitoring-cloudwatchlogs.html#monitoring-cloudwatchlogs-advanced +[14]: https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html#snapstart-runtimes ## Timeouts @@ -452,4 +454,4 @@ Using `terraform import`, import Lambda Functions using the `function_name`. For % terraform import aws_lambda_function.test_lambda my_test_lambda_function ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/lb_target_group.html.markdown b/website/docs/cdktf/python/r/lb_target_group.html.markdown index c98c603d14e..573aa0e3492 100644 --- a/website/docs/cdktf/python/r/lb_target_group.html.markdown +++ b/website/docs/cdktf/python/r/lb_target_group.html.markdown @@ -227,7 +227,7 @@ This resource supports the following arguments: * When the `target_type` is `lambda`, values can be between `200` and `499`. The default is `200`. * `path` - (May be required) Destination for the health check request. Required for HTTP/HTTPS ALB and HTTP NLB. Only applies to HTTP/HTTPS. * For HTTP and HTTPS health checks, the default is `/`. - * For gRPC health checks, the default is `/Amazon Web Services.ALB/healthcheck`. + * For gRPC health checks, the default is `/AWS.ALB/healthcheck`. * `port` - (Optional) The port the load balancer uses when performing health checks on targets. Valid values are either `traffic-port`, to use the same port as the target group, or a valid port number between `1` and `65536`. Default is `traffic-port`. @@ -321,4 +321,4 @@ Using `terraform import`, import Target Groups using their ARN. For example: % terraform import aws_lb_target_group.app_front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:targetgroup/app-front-end/20cfe21448b66314 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/organizations_organization.html.markdown b/website/docs/cdktf/python/r/organizations_organization.html.markdown index 4d3eeabbce5..6aa2a149bb9 100644 --- a/website/docs/cdktf/python/r/organizations_organization.html.markdown +++ b/website/docs/cdktf/python/r/organizations_organization.html.markdown @@ -42,7 +42,7 @@ class MyConvertedCode(TerraformStack): This resource supports the following arguments: * `aws_service_access_principals` - (Optional) List of AWS service principal names for which you want to enable integration with your organization. This is typically in the form of a URL, such as service-abbreviation.amazonaws.com. Organization must have `feature_set` set to `ALL`. Some services do not support enablement via this endpoint, see [warning in aws docs](https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnableAWSServiceAccess.html). -* `enabled_policy_types` - (Optional) List of Organizations policy types to enable in the Organization Root. Organization must have `feature_set` set to `ALL`. For additional information about valid policy types (e.g., `AISERVICES_OPT_OUT_POLICY`, `BACKUP_POLICY`, `SERVICE_CONTROL_POLICY`, and `TAG_POLICY`), see the [AWS Organizations API Reference](https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnablePolicyType.html). +* `enabled_policy_types` - (Optional) List of Organizations policy types to enable in the Organization Root. Organization must have `feature_set` set to `ALL`. For additional information about valid policy types (e.g., `AISERVICES_OPT_OUT_POLICY`, `BACKUP_POLICY`, `RESOURCE_CONTROL_POLICY`, `SERVICE_CONTROL_POLICY`, and `TAG_POLICY`), see the [AWS Organizations API Reference](https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnablePolicyType.html). * `feature_set` - (Optional) Specify "ALL" (default) or "CONSOLIDATED_BILLING". ## Attribute Reference @@ -100,4 +100,4 @@ Using `terraform import`, import the AWS organization using the `id`. For exampl % terraform import aws_organizations_organization.my_org o-1234567 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/rds_instance_state.html.markdown b/website/docs/cdktf/python/r/rds_instance_state.html.markdown new file mode 100644 index 00000000000..1cb55266e45 --- /dev/null +++ b/website/docs/cdktf/python/r/rds_instance_state.html.markdown @@ -0,0 +1,84 @@ +--- +subcategory: "RDS (Relational Database)" +layout: "aws" +page_title: "AWS: aws_rds_instance_state" +description: |- + Terraform resource for managing an AWS RDS (Relational Database) RDS Instance State. +--- + + + +# Resource: aws_rds_instance_state + +Terraform resource for managing an AWS RDS (Relational Database) RDS Instance State. + +~> Destruction of this resource is a no-op and **will not** modify the instance state + +## Example Usage + +### Basic Usage + +```python +# DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +from constructs import Construct +from cdktf import Token, TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws.rds_instance_state import RdsInstanceState +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + RdsInstanceState(self, "test", + identifier=Token.as_string(aws_db_instance_test.identifier), + state="available" + ) +``` + +## Argument Reference + +The following arguments are required: + +* `identifier` - (Required) DB Instance Identifier +* `state` - (Required) Configured state of the DB Instance. Valid values are `available` and `stopped`. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `identifier` - DB Instance Identifier + +## Timeouts + +[Configuration options](https://developer.hashicorp.com/terraform/language/resources/syntax#operation-timeouts): + +* `create` - (Default `30m`) +* `update` - (Default `30m`) + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import RDS (Relational Database) RDS Instance State using the `example_id_arg`. For example: + +```python +# DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +from constructs import Construct +from cdktf import TerraformStack +# +# Provider bindings are generated by running `cdktf get`. +# See https://cdk.tf/provider-generation for more details. +# +from imports.aws.rds_instance_state import RdsInstanceState +class MyConvertedCode(TerraformStack): + def __init__(self, scope, name): + super().__init__(scope, name) + RdsInstanceState.generate_config_for_import(self, "example", "db-L72FUFBZX2RRXT3HOJSIUQVOKE") +``` + +Using `terraform import`, import RDS (Relational Database) RDS Instance State using the `example_id_arg`. For example: + +```console +% terraform import aws_rds_instance_state.example rds_instance_state-id-12345678 +``` + + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/s3_bucket_acl.html.markdown b/website/docs/cdktf/python/r/s3_bucket_acl.html.markdown index 4e0a56d6da9..f121968f4f6 100644 --- a/website/docs/cdktf/python/r/s3_bucket_acl.html.markdown +++ b/website/docs/cdktf/python/r/s3_bucket_acl.html.markdown @@ -164,8 +164,8 @@ class MyConvertedCode(TerraformStack): This resource supports the following arguments: -* `acl` - (Optional, One of `acl` or `access_control_policy` is required) Canned ACL to apply to the bucket. -* `access_control_policy` - (Optional, One of `access_control_policy` or `acl` is required) Configuration block that sets the ACL permissions for an object per grantee. [See below](#access_control_policy). +* `acl` - (Optional, either `access_control_policy` or `acl` is required) Specifies the Canned ACL to apply to the bucket. Valid values: `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `bucket-owner-read`, `bucket-owner-full-control`, `log-delivery-write`. Full details are available on the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl). +* `access_control_policy` - (Optional, either `access_control_policy` or `acl` is required) Configuration block that sets the ACL permissions for an object per grantee. [See below](#access_control_policy). * `bucket` - (Required, Forces new resource) Bucket to which to apply the ACL. * `expected_bucket_owner` - (Optional, Forces new resource) Account ID of the expected bucket owner. @@ -309,4 +309,4 @@ If the owner (account ID) of the source bucket _differs_ from the account used t [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/python/r/s3_bucket_lifecycle_configuration.html.markdown b/website/docs/cdktf/python/r/s3_bucket_lifecycle_configuration.html.markdown index d94ee9c055f..9b1586a5196 100644 --- a/website/docs/cdktf/python/r/s3_bucket_lifecycle_configuration.html.markdown +++ b/website/docs/cdktf/python/r/s3_bucket_lifecycle_configuration.html.markdown @@ -20,14 +20,12 @@ An S3 Lifecycle configuration consists of one or more Lifecycle rules. Each rule For more information see the Amazon S3 User Guide on [`Lifecycle Configuration Elements`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html). -~> **NOTE:** S3 Buckets only support a single lifecycle configuration. Declaring multiple `aws_s3_bucket_lifecycle_configuration` resources to the same S3 Bucket will cause a perpetual difference in configuration. +~> S3 Buckets only support a single lifecycle configuration. Declaring multiple `aws_s3_bucket_lifecycle_configuration` resources to the same S3 Bucket will cause a perpetual difference in configuration. -~> **NOTE:** Lifecycle configurations may take some time to fully propagate to all AWS S3 systems. +~> Lifecycle configurations may take some time to fully propagate to all AWS S3 systems. Running Terraform operations shortly after creating a lifecycle configuration may result in changes that affect configuration idempotence. See the Amazon S3 User Guide on [setting lifecycle configuration on a bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html). --> This resource cannot be used with S3 directory buckets. - ## Example Usage ### With neither a filter nor prefix specified @@ -426,12 +424,12 @@ This resource supports the following arguments: ### rule -~> **NOTE:** The `filter` argument, while Optional, is required if the `rule` configuration block does not contain a `prefix` **and** you intend to override the default behavior of setting the rule to filter objects with the empty string prefix (`""`). +~> The `filter` argument, while Optional, is required if the `rule` configuration block does not contain a `prefix` **and** you intend to override the default behavior of setting the rule to filter objects with the empty string prefix (`""`). Since `prefix` is deprecated by Amazon S3 and will be removed in the next major version of the Terraform AWS Provider, we recommend users either specify `filter` or leave both `filter` and `prefix` unspecified. -~> **NOTE:** A rule cannot be updated from having a filter (via either the `rule.filter` parameter or when neither `rule.filter` and `rule.prefix` are specified) to only having a prefix via the `rule.prefix` parameter. +~> A rule cannot be updated from having a filter (via either the `rule.filter` parameter or when neither `rule.filter` and `rule.prefix` are specified) to only having a prefix via the `rule.prefix` parameter. -~> **NOTE** Terraform cannot distinguish a difference between configurations that use `rule.filter {}` and configurations that neither use `rule.filter` nor `rule.prefix`, so a rule cannot be updated from applying to all objects in the bucket via `rule.filter {}` to applying to a subset of objects based on the key prefix `""` and vice versa. +~> Terraform cannot distinguish a difference between configurations that use `rule.filter {}` and configurations that neither use `rule.filter` nor `rule.prefix`, so a rule cannot be updated from applying to all objects in the bucket via `rule.filter {}` to applying to a subset of objects based on the key prefix `""` and vice versa. The `rule` configuration block supports the following arguments: @@ -461,7 +459,7 @@ The `expiration` configuration block supports the following arguments: ### filter -~> **NOTE:** The `filter` configuration block must either be specified as the empty configuration block (`filter {}`) or with exactly one of `prefix`, `tag`, `and`, `object_size_greater_than` or `object_size_less_than` specified. +~> The `filter` configuration block must either be specified as the empty configuration block (`filter {}`) or with exactly one of `prefix`, `tag`, `and`, `object_size_greater_than` or `object_size_less_than` specified. The `filter` configuration block supports the following arguments: @@ -490,7 +488,7 @@ The `noncurrent_version_transition` configuration block supports the following a The `transition` configuration block supports the following arguments: -~> **Note:** Only one of `date` or `days` should be specified. If neither are specified, the `transition` will default to 0 `days`. +~> Only one of `date` or `days` should be specified. If neither are specified, the `transition` will default to 0 `days`. * `date` - (Optional, Conflicts with `days`) Date objects are transitioned to the specified storage class. The date value must be in [RFC3339 full-date format](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) e.g. `2023-08-22`. * `days` - (Optional, Conflicts with `date`) Number of days after creation when objects are transitioned to the specified storage class. The value must be a positive integer. If both `days` and `date` are not specified, defaults to `0`. Valid values depend on `storage_class`, see [Transition objects using Amazon S3 Lifecycle](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html) for more details. @@ -520,7 +518,7 @@ This resource exports the following attributes in addition to the arguments abov ## Import -In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 bucket lifecycle configuration using the `bucket` or using the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import an S3 bucket lifecycle configuration using the `bucket` or the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: If the owner (account ID) of the source bucket is the same account used to configure the Terraform AWS Provider, import using the `bucket`: @@ -556,7 +554,7 @@ class MyConvertedCode(TerraformStack): S3BucketLifecycleConfiguration.generate_config_for_import(self, "example", "bucket-name,123456789012") ``` -**Using `terraform import` to import** S3 bucket lifecycle configuration using the `bucket` or using the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: +Using `terraform import`, import an S3 bucket lifecycle configuration using the `bucket` or the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: If the owner (account ID) of the source bucket is the same account used to configure the Terraform AWS Provider, import using the `bucket`: @@ -570,4 +568,4 @@ If the owner (account ID) of the source bucket differs from the account used to % terraform import aws_s3_bucket_lifecycle_configuration.example bucket-name,123456789012 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/organizations_policies.html.markdown b/website/docs/cdktf/typescript/d/organizations_policies.html.markdown index 99cfcdcca3a..f2a1c03e45b 100644 --- a/website/docs/cdktf/typescript/d/organizations_policies.html.markdown +++ b/website/docs/cdktf/typescript/d/organizations_policies.html.markdown @@ -58,7 +58,7 @@ class MyConvertedCode extends TerraformStack { The following arguments are required: -* `filter` - (Required) The type of policies to be returned in the response. Valid values are `SERVICE_CONTROL_POLICY | TAG_POLICY | BACKUP_POLICY | AISERVICES_OPT_OUT_POLICY` +* `filter` - (Required) The type of policies to be returned in the response. Valid values are `AISERVICES_OPT_OUT_POLICY | BACKUP_POLICY | RESOURCE_CONTROL_POLICY | SERVICE_CONTROL_POLICY | TAG_POLICY` ## Attribute Reference @@ -66,4 +66,4 @@ This data source exports the following attributes in addition to the arguments a * `ids` - List of all the policy ids found. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/organizations_policies_for_target.html.markdown b/website/docs/cdktf/typescript/d/organizations_policies_for_target.html.markdown index e234e4b314d..de5f8111086 100644 --- a/website/docs/cdktf/typescript/d/organizations_policies_for_target.html.markdown +++ b/website/docs/cdktf/typescript/d/organizations_policies_for_target.html.markdown @@ -65,7 +65,7 @@ class MyConvertedCode extends TerraformStack { The following arguments are required: * `targetId` - (Required) The root (string that begins with "r-" followed by 4-32 lowercase letters or digits), account (12 digit string), or Organizational Unit (string starting with "ou-" followed by 4-32 lowercase letters or digits. This string is followed by a second "-" dash and from 8-32 additional lowercase letters or digits.) -* `filter` - (Required) Must supply one of the 4 different policy filters for a target (SERVICE_CONTROL_POLICY | TAG_POLICY | BACKUP_POLICY | AISERVICES_OPT_OUT_POLICY) +* `filter` - (Required) Must supply one of the 5 different policy filters for a target (AISERVICES_OPT_OUT_POLICY | BACKUP_POLICY | RESOURCE_CONTROL_POLICY | SERVICE_CONTROL_POLICY | TAG_POLICY) ## Attribute Reference @@ -73,4 +73,4 @@ This data source exports the following attributes in addition to the arguments a * `ids` - List of all the policy ids found. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/d/organizations_policy.html.markdown b/website/docs/cdktf/typescript/d/organizations_policy.html.markdown index 09875fe5caf..097f9970650 100644 --- a/website/docs/cdktf/typescript/d/organizations_policy.html.markdown +++ b/website/docs/cdktf/typescript/d/organizations_policy.html.markdown @@ -66,6 +66,6 @@ This data source exports the following attributes in addition to the arguments a * `content` - The text content of the policy. * `description` - The description of the policy. * `name` - The friendly name of the policy. -* `type` - The type of policy values can be `SERVICE_CONTROL_POLICY | TAG_POLICY | BACKUP_POLICY | AISERVICES_OPT_OUT_POLICY` +* `type` - The type of policy values can be `AISERVICES_OPT_OUT_POLICY | BACKUP_POLICY | RESOURCE_CONTROL_POLICY | SERVICE_CONTROL_POLICY | TAG_POLICY` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/ephemeral-resources/kms_secrets.html.markdown b/website/docs/cdktf/typescript/ephemeral-resources/kms_secrets.html.markdown new file mode 100644 index 00000000000..a306c211896 --- /dev/null +++ b/website/docs/cdktf/typescript/ephemeral-resources/kms_secrets.html.markdown @@ -0,0 +1,85 @@ +--- +subcategory: "KMS (Key Management)" +layout: "aws" +page_title: "AWS: aws_kms_secrets" +description: |- + Decrypt multiple secrets from data encrypted with the AWS KMS service +--- + + + +# Ephemeral: aws_kms_secrets + +Decrypt multiple secrets from data encrypted with the AWS KMS service. + +~> **NOTE:** Ephemeral resources are a new feature and may evolve as we continue to explore their most effective uses. [Learn more](https://developer.hashicorp.com/terraform/language/v1.10.x/resources/ephemeral). + +## Example Usage + +If you do not already have a `CiphertextBlob` from encrypting a KMS secret, you can use the below commands to obtain one using the [AWS CLI kms encrypt](https://docs.aws.amazon.com/cli/latest/reference/kms/encrypt.html) command. This requires you to have your AWS CLI setup correctly and replace the `--key-id` with your own. Alternatively you can use `--plaintext 'master-password'` (CLIv1) or `--plaintext fileb://<(echo -n 'master-password')` (CLIv2) instead of reading from a file. + +-> If you have a newline character at the end of your file, it will be decrypted with this newline character intact. For most use cases this is undesirable and leads to incorrect passwords or invalid values, as well as possible changes in the plan. Be sure to use `echo -n` if necessary. +-> If you are using asymmetric keys ensure you are using the right encryption algorithm when you encrypt and decrypt else you will get IncorrectKeyException during the decrypt phase. + +That encrypted output can now be inserted into Terraform configurations without exposing the plaintext secret directly. + +```typescript +// DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +import { Construct } from "constructs"; +import { Fn, Token, TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { RdsCluster } from "./.gen/providers/aws/rds-cluster"; +interface MyConfig { + engine: any; +} +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string, config: MyConfig) { + super(scope, name); + new RdsCluster(this, "example", { + masterPassword: Token.asString( + Fn.lookupNested(dataAwsKmsSecretsExample.plaintext, [ + '"master_password"', + ]) + ), + masterUsername: Token.asString( + Fn.lookupNested(dataAwsKmsSecretsExample.plaintext, [ + '"master_username"', + ]) + ), + engine: config.engine, + }); + } +} + +``` + +## Argument Reference + +This resource supports the following arguments: + +* `secret` - (Required) One or more encrypted payload definitions from the KMS service. See the Secret Definitions below. + +### Secret Definitions + +Each `secret` supports the following arguments: + +* `name` - (Required) Name to export this secret under in the attributes. +* `payload` - (Required) Base64 encoded payload, as returned from a KMS encrypt operation. +* `context` - (Optional) An optional mapping that makes up the Encryption Context for the secret. +* `grantTokens` (Optional) An optional list of Grant Tokens for the secret. +* `encryptionAlgorithm` - (Optional) The encryption algorithm that will be used to decrypt the ciphertext. This parameter is required only when the ciphertext was encrypted under an asymmetric KMS key. Valid Values: SYMMETRIC_DEFAULT | RSAES_OAEP_SHA_1 | RSAES_OAEP_SHA_256 | SM2PKE +* `keyId` (Optional) Specifies the KMS key that AWS KMS uses to decrypt the ciphertext. This parameter is required only when the ciphertext was encrypted under an asymmetric KMS key. + +For more information on `context` and `grantTokens` see the [KMS +Concepts](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html) + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `plaintext` - Map containing each `secret` `name` as the key with its decrypted plaintext value + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/ephemeral-resources/lambda_invocation.html.markdown b/website/docs/cdktf/typescript/ephemeral-resources/lambda_invocation.html.markdown new file mode 100644 index 00000000000..a0a5b46801d --- /dev/null +++ b/website/docs/cdktf/typescript/ephemeral-resources/lambda_invocation.html.markdown @@ -0,0 +1,63 @@ +--- +subcategory: "Lambda" +layout: "aws" +page_title: "AWS: aws_lambda_invocation" +description: |- + Invoke AWS Lambda Function +--- + + + +# Ephemeral: aws_lambda_invocation + +Use this ephemeral resource to invoke a Lambda function. The lambda function is invoked with the [RequestResponse](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html#API_Invoke_RequestSyntax) invocation type. + +~> **NOTE:** Ephemeral resources are a new feature and may evolve as we continue to explore their most effective uses. [Learn more](https://developer.hashicorp.com/terraform/language/v1.10.x/resources/ephemeral). + +~> **NOTE:** The `aws_lambda_invocation` ephemeral resource invokes the function during every `plan` and `apply` when the function is known. A common use case for this functionality is when invoking a lightweight function—where repeated invocations are acceptable—that produces sensitive information you do not want to store in the state. + +~> **NOTE:** If you get a `KMSAccessDeniedException: Lambda was unable to decrypt the environment variables because KMS access was denied` error when invoking an [`aws_lambda_function`](/docs/providers/aws/r/lambda_function.html) with environment variables, the IAM role associated with the function may have been deleted and recreated _after_ the function was created. You can fix the problem two ways: 1) updating the function's role to another role and then updating it back again to the recreated role, or 2) by using Terraform to `taint` the function and `apply` your configuration again to recreate the function. (When you create a function, Lambda grants permissions on the KMS key to the function's IAM role. If the IAM role is recreated, the grant is no longer valid. Changing the function's role or recreating the function causes Lambda to update the grant.) + +## Example Usage + +### Basic Example + +```typescript +// DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +import { Construct } from "constructs"; +import { TerraformOutput, Fn, TerraformStack } from "cdktf"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new TerraformOutput(this, "result_entry", { + value: Fn.lookupNested(Fn.jsondecode(example.result), ['"key1"']), + }); + } +} + +``` + +## Argument Reference + +The following arguments are required: + +* `functionName` - (Required) Name or ARN of the Lambda function, version, or alias. You can append a version number or alias. If you specify only the function name, it is limited to 64 characters in length. +* `payload` - (Required) JSON that you want to provide to your Lambda function as input. + +The following arguments are optional: + +* `clientContext` - (Optional) Up to 3583 bytes of base64-encoded data about the invoking client to pass to the function in the context object. +* `logType` - (Optional) Set to `Tail` to include the execution log in the response. Valid values are `None` and `Tail`. +* `qualifier` - (Optional) Version or alias to invoke a published version of the function. Defaults to `$LATEST`. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `executed_version` - Version of the function that executed. When you invoke a function with an alias, the version the alias resolved to. +* `function_error` - If present, indicates that an error occurred during function execution. Details about the error are included in `result`. +* `log_result` - Last 4 KB of the execution log, which is base64-encoded. +* `result` - String result of the lambda function invocation. +* `statusCode` - HTTP status code is in the 200 range for a successful request. + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/ephemeral-resources/secretsmanager_secret_version.html.markdown b/website/docs/cdktf/typescript/ephemeral-resources/secretsmanager_secret_version.html.markdown new file mode 100644 index 00000000000..a06ae8a867a --- /dev/null +++ b/website/docs/cdktf/typescript/ephemeral-resources/secretsmanager_secret_version.html.markdown @@ -0,0 +1,88 @@ +--- +subcategory: "Secrets Manager" +layout: "aws" +page_title: "AWS: aws_secretsmanager_secret_version" +description: |- + Retrieve information about a Secrets Manager secret version including its secret value +--- + + + +# Ephemeral: aws_secretsmanager_secret_version + +Retrieve information about a Secrets Manager secret version, including its secret value. To retrieve secret metadata, see the [`aws_secretsmanager_secret` data source](/docs/providers/aws/d/secretsmanager_secret.html). + +~> **NOTE:** Ephemeral resources are a new feature and may evolve as we continue to explore their most effective uses. [Learn more](https://developer.hashicorp.com/terraform/language/v1.10.x/resources/ephemeral). + +## Example Usage + +### Retrieve Current Secret Version + +By default, this ephemeral resource retrieves information based on the `AWSCURRENT` staging label. + +```typescript +// DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +import { Construct } from "constructs"; +import { TerraformStack } from "cdktf"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + } +} + +``` + +### Retrieve Specific Secret Version + +```typescript +// DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +import { Construct } from "constructs"; +import { TerraformStack } from "cdktf"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + } +} + +``` + +### Handling Key-Value Secret Strings in JSON + +Reading key-value pairs from JSON back into a native Terraform map can be accomplished in Terraform 0.12 and later with the [`jsondecode()` function](https://www.terraform.io/docs/configuration/functions/jsondecode.html): + +```typescript +// DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +import { Construct } from "constructs"; +import { TerraformOutput, Fn, TerraformStack } from "cdktf"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new TerraformOutput(this, "example", { + value: Fn.lookupNested( + awsSecretsmanagerSecretVersion.example.secretString, + ['"key1"'] + ), + }); + } +} + +``` + +## Argument Reference + +* `secretId` - (Required) Specifies the secret containing the version that you want to retrieve. You can specify either the ARN or the friendly name of the secret. +* `versionId` - (Optional) Specifies the unique identifier of the version of the secret that you want to retrieve. Overrides `versionStage`. +* `versionStage` - (Optional) Specifies the secret version that you want to retrieve by the staging label attached to the version. Defaults to `AWSCURRENT`. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `arn` - ARN of the secret. +* `createdDate` - Created date of the secret in UTC. +* `id` - Unique identifier of this version of the secret. +* `secretString` - Decrypted part of the protected secret information that was originally provided as a string. +* `secretBinary` - Decrypted part of the protected secret information that was originally provided as a binary. +* `versionId` - Unique identifier of this version of the secret. + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/index.html.markdown b/website/docs/cdktf/typescript/index.html.markdown index 19ae8a5d5c0..ea84319b8ef 100644 --- a/website/docs/cdktf/typescript/index.html.markdown +++ b/website/docs/cdktf/typescript/index.html.markdown @@ -13,7 +13,7 @@ Use the Amazon Web Services (AWS) provider to interact with the many resources supported by AWS. You must configure the provider with the proper credentials before you can use it. -Use the navigation to the left to read about the available resources. There are currently 1447 resources and 591 data sources available in the provider. +Use the navigation to the left to read about the available resources. There are currently 1448 resources and 591 data sources available in the provider. To learn the basics of Terraform using this provider, follow the hands-on [get started tutorials](https://learn.hashicorp.com/tutorials/terraform/infrastructure-as-code?in=terraform/aws-get-started&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS). Interact with AWS services, @@ -949,4 +949,4 @@ Approaches differ per authentication providers: There used to be no better way to get account ID out of the API when using the federated account until `sts:GetCallerIdentity` was introduced. - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/bedrockagent_data_source.html.markdown b/website/docs/cdktf/typescript/r/bedrockagent_data_source.html.markdown index ee6438d27c7..71681b80016 100644 --- a/website/docs/cdktf/typescript/r/bedrockagent_data_source.html.markdown +++ b/website/docs/cdktf/typescript/r/bedrockagent_data_source.html.markdown @@ -133,7 +133,7 @@ The `semanticChunkingConfiguration` block supports the following arguments: The `customTransformationConfiguration` block supports the following arguments: * `intermediateStorage` - (Required, Forces new resource) The intermediate storage for custom transformation. -* `transformationFunction` - (Required) The configuration of transformation function. +* `transformation` - (Required) A custom processing step for documents moving through the data source ingestion pipeline. ### `intermediateStorage` block @@ -147,12 +147,18 @@ The `s3Location` block supports the following arguments: * `uri` - (Required, Forces new resource) S3 URI for intermediate storage. +### `transformation` block + +The `transformation` block supports the following arguments: + +* `stepToApply` - (Required, Forces new resource) When the service applies the transformation. Currently only `POST_CHUNKING` is supported. +* `transformationFunction` - (Required) The lambda function that processes documents. + ### `transformationFunction` block The `transformationFunction` block supports the following arguments: -* `stepToApply` - (Required, Forces new resource) Currently only `POST_CHUNKING` is supported. -* `transformationLambdaConfiguration` - (Required, Forces new resource) The lambda configuration for custom transformation. +* `transformationLambdaConfiguration` - (Required, Forces new resource) The configuration of the lambda function. ### `transformationLambdaConfiguration` block @@ -226,4 +232,4 @@ Using `terraform import`, import Agents for Amazon Bedrock Data Source using the % terraform import aws_bedrockagent_data_source.example GWCMFMQF6T,EMDPPAYPZI ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/ecs_service.html.markdown b/website/docs/cdktf/typescript/r/ecs_service.html.markdown index 6e40f9291d4..403d13746ff 100644 --- a/website/docs/cdktf/typescript/r/ecs_service.html.markdown +++ b/website/docs/cdktf/typescript/r/ecs_service.html.markdown @@ -213,6 +213,7 @@ The following arguments are required: The following arguments are optional: * `alarms` - (Optional) Information about the CloudWatch alarms. [See below](#alarms). +* `availabilityZoneRebalancing` - (Optional) ECS automatically redistributes tasks within a service across Availability Zones (AZs) to mitigate the risk of impaired application availability due to underlying infrastructure failures and task lifecycle activities. The valid values are `ENABLED` and `DISABLED`. Defaults to `DISABLED`. * `capacityProviderStrategy` - (Optional) Capacity provider strategies to use for the service. Can be one or more. These can be updated without destroying and recreating the service only if `force_new_deployment = true` and not changing from 0 `capacityProviderStrategy` blocks to greater than 0, or vice versa. See below. Conflicts with `launchType`. * `cluster` - (Optional) ARN of an ECS cluster. * `deploymentCircuitBreaker` - (Optional) Configuration block for deployment circuit breaker. See below. @@ -240,6 +241,7 @@ The following arguments are optional: * `taskDefinition` - (Optional) Family and revision (`family:revision`) or full ARN of the task definition that you want to run in your service. Required unless using the `EXTERNAL` deployment controller. If a revision is not specified, the latest `ACTIVE` revision is used. * `triggers` - (Optional) Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `plantimestamp()`. See example above. * `volumeConfiguration` - (Optional) Configuration for a volume specified in the task definition as a volume that is configured at launch time. Currently, the only supported volume type is an Amazon EBS volume. [See below](#volume_configuration). +* `vpcLatticeConfigurations` - (Optional) The VPC Lattice configuration for your service that allows Lattice to connect, secure, and monitor your service across multiple accounts and VPCs. [See below](#vpc_lattice_configurations). * `waitForSteadyState` - (Optional) If `true`, Terraform will wait for the service to reach a steady state (like [`aws ecs wait services-stable`](https://docs.aws.amazon.com/cli/latest/reference/ecs/wait/services-stable.html)) before continuing. Default `false`. ### alarms @@ -257,6 +259,14 @@ The `volumeConfiguration` configuration block supports the following: * `name` - (Required) Name of the volume. * `managedEbsVolume` - (Required) Configuration for the Amazon EBS volume that Amazon ECS creates and manages on your behalf. [See below](#managed_ebs_volume). +### vpc_lattice_configurations + +`vpcLatticeConfigurations` supports the following: + +* `roleArn` - (Required) The ARN of the IAM role to associate with this volume. This is the Amazon ECS infrastructure IAM role that is used to manage your AWS infrastructure. +* `targetGroupArn` - (Required) The full ARN of the target group or groups associated with the VPC Lattice configuration. +* `portName` - (Required) The name of the port for a target group associated with the VPC Lattice configuration. + ### managed_ebs_volume The `managedEbsVolume` configuration block supports the following: @@ -460,4 +470,4 @@ Using `terraform import`, import ECS services using the `name` together with ecs % terraform import aws_ecs_service.imported cluster-name/service-name ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/eip.html.markdown b/website/docs/cdktf/typescript/r/eip.html.markdown index 1cc962856dc..0fc5ca3b242 100644 --- a/website/docs/cdktf/typescript/r/eip.html.markdown +++ b/website/docs/cdktf/typescript/r/eip.html.markdown @@ -176,7 +176,7 @@ This resource supports the following arguments: * `address` - (Optional) IP address from an EC2 BYOIP pool. This option is only available for VPC EIPs. * `associateWithPrivateIp` - (Optional) User-specified primary or secondary private IP address to associate with the Elastic IP address. If no private IP address is specified, the Elastic IP address is associated with the primary private IP address. * `customerOwnedIpv4Pool` - (Optional) ID of a customer-owned address pool. For more on customer owned IP addressed check out [Customer-owned IP addresses guide](https://docs.aws.amazon.com/outposts/latest/userguide/outposts-networking-components.html#ip-addressing). -* `domain` - Indicates if this EIP is for use in VPC (`vpc`). +* `domain` - (Optional) Indicates if this EIP is for use in VPC (`vpc`). * `instance` - (Optional) EC2 instance ID. * `ipamPoolId`- (Optional) The ID of an IPAM pool which has an Amazon-provided or BYOIP public IPv4 CIDR provisioned to it. * `networkBorderGroup` - (Optional) Location from which the IP address is advertised. Use this parameter to limit the address to this location. @@ -248,4 +248,4 @@ Using `terraform import`, import EIPs in a VPC using their Allocation ID. For ex [1]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AssociateAddress.html - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/fsx_openzfs_file_system.html.markdown b/website/docs/cdktf/typescript/r/fsx_openzfs_file_system.html.markdown index e7159fdfc96..340e24f520d 100644 --- a/website/docs/cdktf/typescript/r/fsx_openzfs_file_system.html.markdown +++ b/website/docs/cdktf/typescript/r/fsx_openzfs_file_system.html.markdown @@ -42,7 +42,7 @@ class MyConvertedCode extends TerraformStack { The following arguments are required: -* `deploymentType` - (Required) The filesystem deployment type. Valid values: `SINGLE_AZ_1`, `SINGLE_AZ_2` and `MULTI_AZ_1`. +* `deploymentType` - (Required) Filesystem deployment type. See the [AWS API documentation](https://docs.aws.amazon.com/fsx/latest/APIReference/API_CreateFileSystemOpenZFSConfiguration.html#FSx-Type-CreateFileSystemOpenZFSConfiguration-DeploymentType) for a list of valid values. * `storageCapacity` - (Required) The storage capacity (GiB) of the file system. Valid values between `64` and `524288`. * `subnetIds` - (Required) A list of IDs for the subnets that the file system will be accessible from. * `throughputCapacity` - (Required) Throughput (MB/s) of the file system. Valid values depend on `deploymentType`. Must be one of `64`, `128`, `256`, `512`, `1024`, `2048`, `3072`, `4096` for `SINGLE_AZ_1`. Must be one of `160`, `320`, `640`, `1280`, `2560`, `3840`, `5120`, `7680`, `10240` for `SINGLE_AZ_2`. @@ -194,4 +194,4 @@ class MyConvertedCode extends TerraformStack { ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/iam_group_policy_attachments_exclusive.html.markdown b/website/docs/cdktf/typescript/r/iam_group_policy_attachments_exclusive.html.markdown index 874b7027383..0d5b1b1d700 100644 --- a/website/docs/cdktf/typescript/r/iam_group_policy_attachments_exclusive.html.markdown +++ b/website/docs/cdktf/typescript/r/iam_group_policy_attachments_exclusive.html.markdown @@ -3,17 +3,18 @@ subcategory: "IAM (Identity & Access Management)" layout: "aws" page_title: "AWS: aws_iam_group_policy_attachments_exclusive" description: |- - Terraform resource for maintaining exclusive management of customer managed policies assigned to an AWS IAM (Identity & Access Management) group. + Terraform resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) group. --- + # Resource: aws_iam_group_policy_attachments_exclusive -Terraform resource for maintaining exclusive management of customer managed policies assigned to an AWS IAM (Identity & Access Management) group. +Terraform resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) group. -!> This resource takes exclusive ownership over customer managed policies attached to a group. This includes removal of customer managed policies which are not explicitly configured. To prevent persistent drift, ensure any `aws_iam_group_policy_attachment` resources managed alongside this resource are included in the `policyArns` argument. +!> This resource takes exclusive ownership over managed IAM policies attached to a group. This includes removal of managed IAM policies which are not explicitly configured. To prevent persistent drift, ensure any `aws_iam_group_policy_attachment` resources managed alongside this resource are included in the `policyArns` argument. -~> Destruction of this resource means Terraform will no longer manage reconciliation of the configured policy attachments. It __will not__ detach the configured policies from the group. +~> Destruction of this resource means Terraform will no longer manage reconciliation of the configured policy attachments. It **will not** detach the configured policies from the group. ## Example Usage @@ -40,11 +41,11 @@ class MyConvertedCode extends TerraformStack { ``` -### Disallow Customer Managed Policies +### Disallow Managed IAM Policies -To automatically remove any configured customer managed policies, set the `policyArns` argument to an empty list. +To automatically remove any configured managed IAM policies, set the `policyArns` argument to an empty list. -~> This will not __prevent__ customer managed policies from being assigned to a group via Terraform (or any other interface). This resource enables bringing customer managed policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. +~> This will not **prevent** managed IAM policies from being assigned to a group via Terraform (or any other interface). This resource enables bringing managed IAM policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. ```typescript // DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug @@ -75,7 +76,7 @@ class MyConvertedCode extends TerraformStack { The following arguments are required: * `groupName` - (Required) IAM group name. -* `policyArns` - (Required) A list of customer managed policy ARNs to be attached to the group. Policies attached to this group but not configured in this argument will be removed. +* `policyArns` - (Required) A list of managed IAM policy ARNs to be attached to the group. Policies attached to this group but not configured in this argument will be removed. ## Attribute Reference @@ -83,7 +84,7 @@ This resource exports no additional attributes. ## Import -In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to exclusively manage customer managed policy assignments using the `groupName`. For example: +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to exclusively manage managed IAM policy assignments using the `groupName`. For example: ```typescript // DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug @@ -107,10 +108,10 @@ class MyConvertedCode extends TerraformStack { ``` -Using `terraform import`, import exclusive management of customer managed policy assignments using the `groupName`. For example: +Using `terraform import`, import exclusive management of managed IAM policy assignments using the `groupName`. For example: ```console % terraform import aws_iam_group_policy_attachments_exclusive.example MyGroup ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/iam_role_policy_attachments_exclusive.html.markdown b/website/docs/cdktf/typescript/r/iam_role_policy_attachments_exclusive.html.markdown index b0583730fa7..d07a1b9b39d 100644 --- a/website/docs/cdktf/typescript/r/iam_role_policy_attachments_exclusive.html.markdown +++ b/website/docs/cdktf/typescript/r/iam_role_policy_attachments_exclusive.html.markdown @@ -3,17 +3,18 @@ subcategory: "IAM (Identity & Access Management)" layout: "aws" page_title: "AWS: aws_iam_role_policy_attachments_exclusive" description: |- - Terraform resource for maintaining exclusive management of customer managed policies assigned to an AWS IAM (Identity & Access Management) role. + Terraform resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) role. --- + # Resource: aws_iam_role_policy_attachments_exclusive -Terraform resource for maintaining exclusive management of customer managed policies assigned to an AWS IAM (Identity & Access Management) role. +Terraform resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) role. -!> This resource takes exclusive ownership over customer managed policies attached to a role. This includes removal of customer managed policies which are not explicitly configured. To prevent persistent drift, ensure any `aws_iam_role_policy_attachment` resources managed alongside this resource are included in the `policyArns` argument. +!> This resource takes exclusive ownership over managed IAM policies attached to a role. This includes removal of managed IAM policies which are not explicitly configured. To prevent persistent drift, ensure any `aws_iam_role_policy_attachment` resources managed alongside this resource are included in the `policyArns` argument. -~> Destruction of this resource means Terraform will no longer manage reconciliation of the configured policy attachments. It __will not__ detach the configured policies from the role. +~> Destruction of this resource means Terraform will no longer manage reconciliation of the configured policy attachments. It **will not** detach the configured policies from the role. ## Example Usage @@ -40,11 +41,11 @@ class MyConvertedCode extends TerraformStack { ``` -### Disallow Customer Managed Policies +### Disallow Managed IAM Policies -To automatically remove any configured customer managed policies, set the `policyArns` argument to an empty list. +To automatically remove any configured managed IAM policies, set the `policyArns` argument to an empty list. -~> This will not __prevent__ customer managed policies from being assigned to a role via Terraform (or any other interface). This resource enables bringing customer managed policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. +~> This will not **prevent** managed IAM policies from being assigned to a role via Terraform (or any other interface). This resource enables bringing managed IAM policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. ```typescript // DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug @@ -75,7 +76,7 @@ class MyConvertedCode extends TerraformStack { The following arguments are required: * `roleName` - (Required) IAM role name. -* `policyArns` - (Required) A list of customer managed policy ARNs to be attached to the role. Policies attached to this role but not configured in this argument will be removed. +* `policyArns` - (Required) A list of managed IAM policy ARNs to be attached to the role. Policies attached to this role but not configured in this argument will be removed. ## Attribute Reference @@ -83,7 +84,7 @@ This resource exports no additional attributes. ## Import -In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to exclusively manage customer managed policy assignments using the `roleName`. For example: +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to exclusively manage managed IAM policy assignments using the `roleName`. For example: ```typescript // DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug @@ -107,10 +108,10 @@ class MyConvertedCode extends TerraformStack { ``` -Using `terraform import`, import exclusive management of customer managed policy assignments using the `roleName`. For example: +Using `terraform import`, import exclusive management of managed IAM policy assignments using the `roleName`. For example: ```console % terraform import aws_iam_role_policy_attachments_exclusive.example MyRole ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/iam_user_policy_attachments_exclusive.html.markdown b/website/docs/cdktf/typescript/r/iam_user_policy_attachments_exclusive.html.markdown index 1b843050fba..952bdb5c834 100644 --- a/website/docs/cdktf/typescript/r/iam_user_policy_attachments_exclusive.html.markdown +++ b/website/docs/cdktf/typescript/r/iam_user_policy_attachments_exclusive.html.markdown @@ -3,17 +3,18 @@ subcategory: "IAM (Identity & Access Management)" layout: "aws" page_title: "AWS: aws_iam_user_policy_attachments_exclusive" description: |- - Terraform resource for maintaining exclusive management of customer managed policies assigned to an AWS IAM (Identity & Access Management) user. + Terraform resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) user. --- + # Resource: aws_iam_user_policy_attachments_exclusive -Terraform resource for maintaining exclusive management of customer managed policies assigned to an AWS IAM (Identity & Access Management) user. +Terraform resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) user. -!> This resource takes exclusive ownership over customer managed policies attached to a user. This includes removal of customer managed policies which are not explicitly configured. To prevent persistent drift, ensure any `aws_iam_user_policy_attachment` resources managed alongside this resource are included in the `policyArns` argument. +!> This resource takes exclusive ownership over managed IAM policies attached to a user. This includes removal of managed IAM policies which are not explicitly configured. To prevent persistent drift, ensure any `aws_iam_user_policy_attachment` resources managed alongside this resource are included in the `policyArns` argument. -~> Destruction of this resource means Terraform will no longer manage reconciliation of the configured policy attachments. It __will not__ detach the configured policies from the user. +~> Destruction of this resource means Terraform will no longer manage reconciliation of the configured policy attachments. It **will not** detach the configured policies from the user. ## Example Usage @@ -40,11 +41,11 @@ class MyConvertedCode extends TerraformStack { ``` -### Disallow Customer Managed Policies +### Disallow Managed IAM Policies -To automatically remove any configured customer managed policies, set the `policyArns` argument to an empty list. +To automatically remove any configured managed IAM policies, set the `policyArns` argument to an empty list. -~> This will not __prevent__ customer managed policies from being assigned to a user via Terraform (or any other interface). This resource enables bringing customer managed policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. +~> This will not **prevent** managed IAM policies from being assigned to a user via Terraform (or any other interface). This resource enables bringing managed IAM policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. ```typescript // DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug @@ -75,7 +76,7 @@ class MyConvertedCode extends TerraformStack { The following arguments are required: * `userName` - (Required) IAM user name. -* `policyArns` - (Required) A list of customer managed policy ARNs to be attached to the user. Policies attached to this user but not configured in this argument will be removed. +* `policyArns` - (Required) A list of managed IAM policy ARNs to be attached to the user. Policies attached to this user but not configured in this argument will be removed. ## Attribute Reference @@ -83,7 +84,7 @@ This resource exports no additional attributes. ## Import -In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to exclusively manage customer managed policy assignments using the `userName`. For example: +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to exclusively manage managed IAM policy assignments using the `userName`. For example: ```typescript // DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug @@ -107,10 +108,10 @@ class MyConvertedCode extends TerraformStack { ``` -Using `terraform import`, import exclusive management of customer managed policy assignments using the `userName`. For example: +Using `terraform import`, import exclusive management of managed IAM policy assignments using the `userName`. For example: ```console % terraform import aws_iam_user_policy_attachments_exclusive.example MyUser ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/imagebuilder_image_pipeline.html.markdown b/website/docs/cdktf/typescript/r/imagebuilder_image_pipeline.html.markdown index fd210b0ff69..262c51cbf3d 100644 --- a/website/docs/cdktf/typescript/r/imagebuilder_image_pipeline.html.markdown +++ b/website/docs/cdktf/typescript/r/imagebuilder_image_pipeline.html.markdown @@ -12,6 +12,8 @@ description: |- Manages an Image Builder Image Pipeline. +~> **NOTE:** Starting with version `5.74.0`, lifecycle meta-argument [`replace_triggered_by`](https://developer.hashicorp.com/terraform/language/meta-arguments/lifecycle#replace_triggered_by) must be used in order to prevent a dependency error on destroy. + ## Example Usage ```typescript @@ -23,19 +25,64 @@ import { Token, TerraformStack } from "cdktf"; * See https://cdk.tf/provider-generation for more details. */ import { ImagebuilderImagePipeline } from "./.gen/providers/aws/imagebuilder-image-pipeline"; +import { ImagebuilderImageRecipe } from "./.gen/providers/aws/imagebuilder-image-recipe"; class MyConvertedCode extends TerraformStack { constructor(scope: Construct, name: string) { super(scope, name); - new ImagebuilderImagePipeline(this, "example", { - imageRecipeArn: Token.asString(awsImagebuilderImageRecipeExample.arn), - infrastructureConfigurationArn: Token.asString( - awsImagebuilderInfrastructureConfigurationExample.arn - ), + const example = new ImagebuilderImageRecipe(this, "example", { + blockDeviceMapping: [ + { + deviceName: "/dev/xvdb", + ebs: { + deleteOnTermination: Token.asString(true), + volumeSize: 100, + volumeType: "gp2", + }, + }, + ], + component: [ + { + componentArn: Token.asString(awsImagebuilderComponentExample.arn), + parameter: [ + { + name: "Parameter1", + value: "Value1", + }, + { + name: "Parameter2", + value: "Value2", + }, + ], + }, + ], name: "example", - schedule: { - scheduleExpression: "cron(0 0 * * ? *)", - }, + parentImage: + "arn:${" + + current.partition + + "}:imagebuilder:${" + + dataAwsRegionCurrent.name + + "}:aws:image/amazon-linux-2-x86/x.x.x", + version: "1.0.0", }); + const awsImagebuilderImagePipelineExample = new ImagebuilderImagePipeline( + this, + "example_1", + { + imageRecipeArn: example.arn, + infrastructureConfigurationArn: Token.asString( + awsImagebuilderInfrastructureConfigurationExample.arn + ), + lifecycle: { + replaceTriggeredBy: [example], + }, + name: "example", + schedule: { + scheduleExpression: "cron(0 0 * * ? *)", + }, + } + ); + /*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/ + awsImagebuilderImagePipelineExample.overrideLogicalId("example"); } } @@ -159,4 +206,4 @@ Using `terraform import`, import `aws_imagebuilder_image_pipeline` resources usi % terraform import aws_imagebuilder_image_pipeline.example arn:aws:imagebuilder:us-east-1:123456789012:image-pipeline/example ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/lambda_function.html.markdown b/website/docs/cdktf/typescript/r/lambda_function.html.markdown index 76da2bf12b2..4047b890c49 100644 --- a/website/docs/cdktf/typescript/r/lambda_function.html.markdown +++ b/website/docs/cdktf/typescript/r/lambda_function.html.markdown @@ -413,7 +413,8 @@ Advanced logging settings. See [Configuring advanced logging controls for your L ### snap_start -Snap start settings for low-latency startups. This feature is currently only supported for `java11`, `java17` and `java21` runtimes. Remove this block to delete the associated settings (rather than setting `apply_on = "None"`). +Snap start settings for low-latency startups. This feature is currently only supported for specific runtimes, see [Supported features and limitations][14]. +Remove this block to delete the associated settings (rather than setting `apply_on = "None"`). * `applyOn` - (Required) Conditions where snap start is enabled. Valid values are `PublishedVersions`. @@ -461,6 +462,7 @@ This resource exports the following attributes in addition to the arguments abov [11]: https://learn.hashicorp.com/terraform/aws/lambda-api-gateway [12]: https://docs.aws.amazon.com/lambda/latest/dg/services-efs.html [13]: https://docs.aws.amazon.com/lambda/latest/dg/monitoring-cloudwatchlogs.html#monitoring-cloudwatchlogs-advanced +[14]: https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html#snapstart-runtimes ## Timeouts @@ -502,4 +504,4 @@ Using `terraform import`, import Lambda Functions using the `functionName`. For % terraform import aws_lambda_function.test_lambda my_test_lambda_function ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/lb_target_group.html.markdown b/website/docs/cdktf/typescript/r/lb_target_group.html.markdown index 13caaa69afd..bb6c226b8c7 100644 --- a/website/docs/cdktf/typescript/r/lb_target_group.html.markdown +++ b/website/docs/cdktf/typescript/r/lb_target_group.html.markdown @@ -246,7 +246,7 @@ This resource supports the following arguments: * When the `targetType` is `lambda`, values can be between `200` and `499`. The default is `200`. * `path` - (May be required) Destination for the health check request. Required for HTTP/HTTPS ALB and HTTP NLB. Only applies to HTTP/HTTPS. * For HTTP and HTTPS health checks, the default is `/`. - * For gRPC health checks, the default is `/Amazon Web Services.ALB/healthcheck`. + * For gRPC health checks, the default is `/AWS.ALB/healthcheck`. * `port` - (Optional) The port the load balancer uses when performing health checks on targets. Valid values are either `traffic-port`, to use the same port as the target group, or a valid port number between `1` and `65536`. Default is `traffic-port`. @@ -347,4 +347,4 @@ Using `terraform import`, import Target Groups using their ARN. For example: % terraform import aws_lb_target_group.app_front_end arn:aws:elasticloadbalancing:us-west-2:187416307283:targetgroup/app-front-end/20cfe21448b66314 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/organizations_organization.html.markdown b/website/docs/cdktf/typescript/r/organizations_organization.html.markdown index 2fde6e886bb..1edf8eca598 100644 --- a/website/docs/cdktf/typescript/r/organizations_organization.html.markdown +++ b/website/docs/cdktf/typescript/r/organizations_organization.html.markdown @@ -47,7 +47,7 @@ class MyConvertedCode extends TerraformStack { This resource supports the following arguments: * `awsServiceAccessPrincipals` - (Optional) List of AWS service principal names for which you want to enable integration with your organization. This is typically in the form of a URL, such as service-abbreviation.amazonaws.com. Organization must have `featureSet` set to `ALL`. Some services do not support enablement via this endpoint, see [warning in aws docs](https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnableAWSServiceAccess.html). -* `enabledPolicyTypes` - (Optional) List of Organizations policy types to enable in the Organization Root. Organization must have `featureSet` set to `ALL`. For additional information about valid policy types (e.g., `AISERVICES_OPT_OUT_POLICY`, `BACKUP_POLICY`, `SERVICE_CONTROL_POLICY`, and `TAG_POLICY`), see the [AWS Organizations API Reference](https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnablePolicyType.html). +* `enabledPolicyTypes` - (Optional) List of Organizations policy types to enable in the Organization Root. Organization must have `featureSet` set to `ALL`. For additional information about valid policy types (e.g., `AISERVICES_OPT_OUT_POLICY`, `BACKUP_POLICY`, `RESOURCE_CONTROL_POLICY`, `SERVICE_CONTROL_POLICY`, and `TAG_POLICY`), see the [AWS Organizations API Reference](https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnablePolicyType.html). * `featureSet` - (Optional) Specify "ALL" (default) or "CONSOLIDATED_BILLING". ## Attribute Reference @@ -112,4 +112,4 @@ Using `terraform import`, import the AWS organization using the `id`. For exampl % terraform import aws_organizations_organization.my_org o-1234567 ``` - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/rds_instance_state.html.markdown b/website/docs/cdktf/typescript/r/rds_instance_state.html.markdown new file mode 100644 index 00000000000..cc68f4f2b47 --- /dev/null +++ b/website/docs/cdktf/typescript/r/rds_instance_state.html.markdown @@ -0,0 +1,94 @@ +--- +subcategory: "RDS (Relational Database)" +layout: "aws" +page_title: "AWS: aws_rds_instance_state" +description: |- + Terraform resource for managing an AWS RDS (Relational Database) RDS Instance State. +--- + + + +# Resource: aws_rds_instance_state + +Terraform resource for managing an AWS RDS (Relational Database) RDS Instance State. + +~> Destruction of this resource is a no-op and **will not** modify the instance state + +## Example Usage + +### Basic Usage + +```typescript +// DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +import { Construct } from "constructs"; +import { Token, TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { RdsInstanceState } from "./.gen/providers/aws/rds-instance-state"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + new RdsInstanceState(this, "test", { + identifier: Token.asString(awsDbInstanceTest.identifier), + state: "available", + }); + } +} + +``` + +## Argument Reference + +The following arguments are required: + +* `identifier` - (Required) DB Instance Identifier +* `state` - (Required) Configured state of the DB Instance. Valid values are `available` and `stopped`. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `identifier` - DB Instance Identifier + +## Timeouts + +[Configuration options](https://developer.hashicorp.com/terraform/language/resources/syntax#operation-timeouts): + +* `create` - (Default `30m`) +* `update` - (Default `30m`) + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import RDS (Relational Database) RDS Instance State using the `example_id_arg`. For example: + +```typescript +// DO NOT EDIT. Code generated by 'cdktf convert' - Please report bugs at https://cdk.tf/bug +import { Construct } from "constructs"; +import { TerraformStack } from "cdktf"; +/* + * Provider bindings are generated by running `cdktf get`. + * See https://cdk.tf/provider-generation for more details. + */ +import { RdsInstanceState } from "./.gen/providers/aws/rds-instance-state"; +class MyConvertedCode extends TerraformStack { + constructor(scope: Construct, name: string) { + super(scope, name); + RdsInstanceState.generateConfigForImport( + this, + "example", + "db-L72FUFBZX2RRXT3HOJSIUQVOKE" + ); + } +} + +``` + +Using `terraform import`, import RDS (Relational Database) RDS Instance State using the `example_id_arg`. For example: + +```console +% terraform import aws_rds_instance_state.example rds_instance_state-id-12345678 +``` + + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/s3_bucket_acl.html.markdown b/website/docs/cdktf/typescript/r/s3_bucket_acl.html.markdown index 6d4ef967714..97966f4bc7c 100644 --- a/website/docs/cdktf/typescript/r/s3_bucket_acl.html.markdown +++ b/website/docs/cdktf/typescript/r/s3_bucket_acl.html.markdown @@ -193,8 +193,8 @@ class MyConvertedCode extends TerraformStack { This resource supports the following arguments: -* `acl` - (Optional, One of `acl` or `accessControlPolicy` is required) Canned ACL to apply to the bucket. -* `accessControlPolicy` - (Optional, One of `accessControlPolicy` or `acl` is required) Configuration block that sets the ACL permissions for an object per grantee. [See below](#access_control_policy). +* `acl` - (Optional, either `accessControlPolicy` or `acl` is required) Specifies the Canned ACL to apply to the bucket. Valid values: `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `bucket-owner-read`, `bucket-owner-full-control`, `log-delivery-write`. Full details are available on the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl). +* `accessControlPolicy` - (Optional, either `accessControlPolicy` or `acl` is required) Configuration block that sets the ACL permissions for an object per grantee. [See below](#access_control_policy). * `bucket` - (Required, Forces new resource) Bucket to which to apply the ACL. * `expectedBucketOwner` - (Optional, Forces new resource) Account ID of the expected bucket owner. @@ -358,4 +358,4 @@ If the owner (account ID) of the source bucket _differs_ from the account used t [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl - \ No newline at end of file + \ No newline at end of file diff --git a/website/docs/cdktf/typescript/r/s3_bucket_lifecycle_configuration.html.markdown b/website/docs/cdktf/typescript/r/s3_bucket_lifecycle_configuration.html.markdown index 26c63006913..db24d309e08 100644 --- a/website/docs/cdktf/typescript/r/s3_bucket_lifecycle_configuration.html.markdown +++ b/website/docs/cdktf/typescript/r/s3_bucket_lifecycle_configuration.html.markdown @@ -20,14 +20,12 @@ An S3 Lifecycle configuration consists of one or more Lifecycle rules. Each rule For more information see the Amazon S3 User Guide on [`Lifecycle Configuration Elements`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html). -~> **NOTE:** S3 Buckets only support a single lifecycle configuration. Declaring multiple `aws_s3_bucket_lifecycle_configuration` resources to the same S3 Bucket will cause a perpetual difference in configuration. +~> S3 Buckets only support a single lifecycle configuration. Declaring multiple `aws_s3_bucket_lifecycle_configuration` resources to the same S3 Bucket will cause a perpetual difference in configuration. -~> **NOTE:** Lifecycle configurations may take some time to fully propagate to all AWS S3 systems. +~> Lifecycle configurations may take some time to fully propagate to all AWS S3 systems. Running Terraform operations shortly after creating a lifecycle configuration may result in changes that affect configuration idempotence. See the Amazon S3 User Guide on [setting lifecycle configuration on a bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html). --> This resource cannot be used with S3 directory buckets. - ## Example Usage ### With neither a filter nor prefix specified @@ -474,12 +472,12 @@ This resource supports the following arguments: ### rule -~> **NOTE:** The `filter` argument, while Optional, is required if the `rule` configuration block does not contain a `prefix` **and** you intend to override the default behavior of setting the rule to filter objects with the empty string prefix (`""`). +~> The `filter` argument, while Optional, is required if the `rule` configuration block does not contain a `prefix` **and** you intend to override the default behavior of setting the rule to filter objects with the empty string prefix (`""`). Since `prefix` is deprecated by Amazon S3 and will be removed in the next major version of the Terraform AWS Provider, we recommend users either specify `filter` or leave both `filter` and `prefix` unspecified. -~> **NOTE:** A rule cannot be updated from having a filter (via either the `rule.filter` parameter or when neither `rule.filter` and `rule.prefix` are specified) to only having a prefix via the `rule.prefix` parameter. +~> A rule cannot be updated from having a filter (via either the `rule.filter` parameter or when neither `rule.filter` and `rule.prefix` are specified) to only having a prefix via the `rule.prefix` parameter. -~> **NOTE** Terraform cannot distinguish a difference between configurations that use `rule.filter {}` and configurations that neither use `rule.filter` nor `rule.prefix`, so a rule cannot be updated from applying to all objects in the bucket via `rule.filter {}` to applying to a subset of objects based on the key prefix `""` and vice versa. +~> Terraform cannot distinguish a difference between configurations that use `rule.filter {}` and configurations that neither use `rule.filter` nor `rule.prefix`, so a rule cannot be updated from applying to all objects in the bucket via `rule.filter {}` to applying to a subset of objects based on the key prefix `""` and vice versa. The `rule` configuration block supports the following arguments: @@ -509,7 +507,7 @@ The `expiration` configuration block supports the following arguments: ### filter -~> **NOTE:** The `filter` configuration block must either be specified as the empty configuration block (`filter {}`) or with exactly one of `prefix`, `tag`, `and`, `objectSizeGreaterThan` or `objectSizeLessThan` specified. +~> The `filter` configuration block must either be specified as the empty configuration block (`filter {}`) or with exactly one of `prefix`, `tag`, `and`, `objectSizeGreaterThan` or `objectSizeLessThan` specified. The `filter` configuration block supports the following arguments: @@ -538,7 +536,7 @@ The `noncurrentVersionTransition` configuration block supports the following arg The `transition` configuration block supports the following arguments: -~> **Note:** Only one of `date` or `days` should be specified. If neither are specified, the `transition` will default to 0 `days`. +~> Only one of `date` or `days` should be specified. If neither are specified, the `transition` will default to 0 `days`. * `date` - (Optional, Conflicts with `days`) Date objects are transitioned to the specified storage class. The date value must be in [RFC3339 full-date format](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) e.g. `2023-08-22`. * `days` - (Optional, Conflicts with `date`) Number of days after creation when objects are transitioned to the specified storage class. The value must be a positive integer. If both `days` and `date` are not specified, defaults to `0`. Valid values depend on `storageClass`, see [Transition objects using Amazon S3 Lifecycle](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html) for more details. @@ -568,7 +566,7 @@ This resource exports the following attributes in addition to the arguments abov ## Import -In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import S3 bucket lifecycle configuration using the `bucket` or using the `bucket` and `expectedBucketOwner` separated by a comma (`,`). For example: +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import an S3 bucket lifecycle configuration using the `bucket` or the `bucket` and `expectedBucketOwner` separated by a comma (`,`). For example: If the owner (account ID) of the source bucket is the same account used to configure the Terraform AWS Provider, import using the `bucket`: @@ -618,7 +616,7 @@ class MyConvertedCode extends TerraformStack { ``` -**Using `terraform import` to import** S3 bucket lifecycle configuration using the `bucket` or using the `bucket` and `expectedBucketOwner` separated by a comma (`,`). For example: +Using `terraform import`, import an S3 bucket lifecycle configuration using the `bucket` or the `bucket` and `expectedBucketOwner` separated by a comma (`,`). For example: If the owner (account ID) of the source bucket is the same account used to configure the Terraform AWS Provider, import using the `bucket`: @@ -632,4 +630,4 @@ If the owner (account ID) of the source bucket differs from the account used to % terraform import aws_s3_bucket_lifecycle_configuration.example bucket-name,123456789012 ``` - \ No newline at end of file + \ No newline at end of file From fd1e4774e150349f40e267acffbb18b2607eb714 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 25 Nov 2024 08:52:50 -0500 Subject: [PATCH 089/118] r/aws_memorydb_subnet_group: Standardize. --- internal/service/memorydb/exports_test.go | 1 + internal/service/memorydb/find.go | 21 ---- internal/service/memorydb/subnet_group.go | 103 ++++++++++++------ .../memorydb/subnet_group_data_source.go | 2 +- 4 files changed, 71 insertions(+), 56 deletions(-) diff --git a/internal/service/memorydb/exports_test.go b/internal/service/memorydb/exports_test.go index 2f067e40774..8d69689fdfd 100644 --- a/internal/service/memorydb/exports_test.go +++ b/internal/service/memorydb/exports_test.go @@ -16,6 +16,7 @@ var ( FindClusterByName = findClusterByName FindParameterGroupByName = findParameterGroupByName FindSnapshotByName = findSnapshotByName + FindSubnetGroupByName = findSubnetGroupByName ParameterChanges = parameterChanges ParameterHash = parameterHash ) diff --git a/internal/service/memorydb/find.go b/internal/service/memorydb/find.go index 68a13466614..386299e5fa9 100644 --- a/internal/service/memorydb/find.go +++ b/internal/service/memorydb/find.go @@ -14,27 +14,6 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/tfresource" ) -func FindSubnetGroupByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.SubnetGroup, error) { - input := memorydb.DescribeSubnetGroupsInput{ - SubnetGroupName: aws.String(name), - } - - output, err := conn.DescribeSubnetGroups(ctx, &input) - - if errs.IsA[*awstypes.SubnetGroupNotFoundFault](err) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: input, - } - } - - if err != nil { - return nil, err - } - - return tfresource.AssertSingleValueResult(output.SubnetGroups) -} - func FindUserByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.User, error) { input := memorydb.DescribeUsersInput{ UserName: aws.String(name), diff --git a/internal/service/memorydb/subnet_group.go b/internal/service/memorydb/subnet_group.go index c4c6f7c64b1..b01015569fa 100644 --- a/internal/service/memorydb/subnet_group.go +++ b/internal/service/memorydb/subnet_group.go @@ -12,12 +12,14 @@ import ( awstypes "github.com/aws/aws-sdk-go-v2/service/memorydb/types" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/id" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/create" "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" "github.com/hashicorp/terraform-provider-aws/internal/flex" + tfslices "github.com/hashicorp/terraform-provider-aws/internal/slices" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/internal/verify" @@ -83,7 +85,6 @@ func resourceSubnetGroup() *schema.Resource { func resourceSubnetGroupCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) name := create.Name(d.Get(names.AttrName).(string), d.Get(names.AttrNamePrefix).(string)) @@ -94,7 +95,6 @@ func resourceSubnetGroupCreate(ctx context.Context, d *schema.ResourceData, meta Tags: getTagsIn(ctx), } - log.Printf("[DEBUG] Creating MemoryDB Subnet Group: %+v", input) _, err := conn.CreateSubnetGroup(ctx, input) if err != nil { @@ -106,35 +106,11 @@ func resourceSubnetGroupCreate(ctx context.Context, d *schema.ResourceData, meta return append(diags, resourceSubnetGroupRead(ctx, d, meta)...) } -func resourceSubnetGroupUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - var diags diag.Diagnostics - - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - - if d.HasChangesExcept(names.AttrTags, names.AttrTagsAll) { - input := &memorydb.UpdateSubnetGroupInput{ - Description: aws.String(d.Get(names.AttrDescription).(string)), - SubnetGroupName: aws.String(d.Id()), - SubnetIds: flex.ExpandStringValueSet(d.Get(names.AttrSubnetIDs).(*schema.Set)), - } - - log.Printf("[DEBUG] Updating MemoryDB Subnet Group: %+v", input) - _, err := conn.UpdateSubnetGroup(ctx, input) - - if err != nil { - return sdkdiag.AppendErrorf(diags, "updating MemoryDB Subnet Group (%s): %s", d.Id(), err) - } - } - - return append(diags, resourceSubnetGroupRead(ctx, d, meta)...) -} - func resourceSubnetGroupRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - group, err := FindSubnetGroupByName(ctx, conn, d.Id()) + group, err := findSubnetGroupByName(ctx, conn, d.Id()) if !d.IsNewResource() && tfresource.NotFound(err) { log.Printf("[WARN] MemoryDB Subnet Group (%s) not found, removing from state", d.Id()) @@ -146,24 +122,41 @@ func resourceSubnetGroupRead(ctx context.Context, d *schema.ResourceData, meta i return sdkdiag.AppendErrorf(diags, "reading MemoryDB Subnet Group (%s): %s", d.Id(), err) } - var subnetIds []*string - for _, subnet := range group.Subnets { - subnetIds = append(subnetIds, subnet.Identifier) - } - d.Set(names.AttrARN, group.ARN) d.Set(names.AttrDescription, group.Description) - d.Set(names.AttrSubnetIDs, flex.FlattenStringSet(subnetIds)) d.Set(names.AttrName, group.Name) d.Set(names.AttrNamePrefix, create.NamePrefixFromName(aws.ToString(group.Name))) + d.Set(names.AttrSubnetIDs, tfslices.ApplyToAll(group.Subnets, func(v awstypes.Subnet) string { + return aws.ToString(v.Identifier) + })) d.Set(names.AttrVPCID, group.VpcId) return diags } -func resourceSubnetGroupDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { +func resourceSubnetGroupUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics + conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) + + if d.HasChangesExcept(names.AttrTags, names.AttrTagsAll) { + input := &memorydb.UpdateSubnetGroupInput{ + Description: aws.String(d.Get(names.AttrDescription).(string)), + SubnetGroupName: aws.String(d.Id()), + SubnetIds: flex.ExpandStringValueSet(d.Get(names.AttrSubnetIDs).(*schema.Set)), + } + + _, err := conn.UpdateSubnetGroup(ctx, input) + + if err != nil { + return sdkdiag.AppendErrorf(diags, "updating MemoryDB Subnet Group (%s): %s", d.Id(), err) + } + } + + return append(diags, resourceSubnetGroupRead(ctx, d, meta)...) +} +func resourceSubnetGroupDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + var diags diag.Diagnostics conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) log.Printf("[DEBUG] Deleting MemoryDB Subnet Group: (%s)", d.Id()) @@ -181,3 +174,45 @@ func resourceSubnetGroupDelete(ctx context.Context, d *schema.ResourceData, meta return diags } + +func findSubnetGroupByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.SubnetGroup, error) { + input := &memorydb.DescribeSubnetGroupsInput{ + SubnetGroupName: aws.String(name), + } + + return findSubnetGroup(ctx, conn, input) +} + +func findSubnetGroup(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeSubnetGroupsInput) (*awstypes.SubnetGroup, error) { + output, err := findSubnetGroups(ctx, conn, input) + + if err != nil { + return nil, err + } + + return tfresource.AssertSingleValueResult(output) +} + +func findSubnetGroups(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeSubnetGroupsInput) ([]awstypes.SubnetGroup, error) { + var output []awstypes.SubnetGroup + + pages := memorydb.NewDescribeSubnetGroupsPaginator(conn, input) + for pages.HasMorePages() { + page, err := pages.NextPage(ctx) + + if errs.IsA[*awstypes.SubnetGroupNotFoundFault](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: input, + } + } + + if err != nil { + return nil, err + } + + output = append(output, page.SubnetGroups...) + } + + return output, nil +} diff --git a/internal/service/memorydb/subnet_group_data_source.go b/internal/service/memorydb/subnet_group_data_source.go index 52bc8d3183d..862ede413bc 100644 --- a/internal/service/memorydb/subnet_group_data_source.go +++ b/internal/service/memorydb/subnet_group_data_source.go @@ -57,7 +57,7 @@ func dataSourceSubnetGroupRead(ctx context.Context, d *schema.ResourceData, meta name := d.Get(names.AttrName).(string) - group, err := FindSubnetGroupByName(ctx, conn, name) + group, err := findSubnetGroupByName(ctx, conn, name) if err != nil { return sdkdiag.AppendFromErr(diags, tfresource.SingularDataSourceFindError("MemoryDB Subnet Group", err)) From eead82a66b58b92476bff672a5f561492695728f Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 25 Nov 2024 08:55:04 -0500 Subject: [PATCH 090/118] d/aws_memorydb_subnet_group: Transparent tagging. --- .../service/memorydb/service_package_gen.go | 3 +++ .../memorydb/subnet_group_data_source.go | 21 ++++++------------- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/internal/service/memorydb/service_package_gen.go b/internal/service/memorydb/service_package_gen.go index b2125e33747..a0366916e32 100644 --- a/internal/service/memorydb/service_package_gen.go +++ b/internal/service/memorydb/service_package_gen.go @@ -60,6 +60,9 @@ func (p *servicePackage) SDKDataSources(ctx context.Context) []*types.ServicePac Factory: dataSourceSubnetGroup, TypeName: "aws_memorydb_subnet_group", Name: "Subnet Group", + Tags: &types.ServicePackageResourceTags{ + IdentifierAttribute: names.AttrARN, + }, }, { Factory: dataSourceUser, diff --git a/internal/service/memorydb/subnet_group_data_source.go b/internal/service/memorydb/subnet_group_data_source.go index 862ede413bc..abaa7740724 100644 --- a/internal/service/memorydb/subnet_group_data_source.go +++ b/internal/service/memorydb/subnet_group_data_source.go @@ -7,17 +7,19 @@ import ( "context" "github.com/aws/aws-sdk-go-v2/aws" + awstypes "github.com/aws/aws-sdk-go-v2/service/memorydb/types" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" - "github.com/hashicorp/terraform-provider-aws/internal/flex" + tfslices "github.com/hashicorp/terraform-provider-aws/internal/slices" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/names" ) // @SDKDataSource("aws_memorydb_subnet_group", name="Subnet Group") +// @Tags(identifierAttribute="arn") func dataSourceSubnetGroup() *schema.Resource { return &schema.Resource{ ReadWithoutTimeout: dataSourceSubnetGroupRead, @@ -51,12 +53,9 @@ func dataSourceSubnetGroup() *schema.Resource { func dataSourceSubnetGroupRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig(ctx) name := d.Get(names.AttrName).(string) - group, err := findSubnetGroupByName(ctx, conn, name) if err != nil { @@ -72,19 +71,11 @@ func dataSourceSubnetGroupRead(ctx context.Context, d *schema.ResourceData, meta d.Set(names.AttrARN, group.ARN) d.Set(names.AttrDescription, group.Description) - d.Set(names.AttrSubnetIDs, flex.FlattenStringSet(subnetIds)) d.Set(names.AttrName, group.Name) + d.Set(names.AttrSubnetIDs, tfslices.ApplyToAll(group.Subnets, func(v awstypes.Subnet) string { + return aws.ToString(v.Identifier) + })) d.Set(names.AttrVPCID, group.VpcId) - tags, err := listTags(ctx, conn, d.Get(names.AttrARN).(string)) - - if err != nil { - return sdkdiag.AppendErrorf(diags, "listing tags for MemoryDB Subnet Group (%s): %s", d.Id(), err) - } - - if err := d.Set(names.AttrTags, tags.IgnoreAWS().IgnoreConfig(ignoreTagsConfig).Map()); err != nil { - return sdkdiag.AppendErrorf(diags, "setting tags: %s", err) - } - return diags } From 70676c7e193789a8f5ea02d6c3a291ffc54ae1ac Mon Sep 17 00:00:00 2001 From: Adrian Johnson Date: Mon, 25 Nov 2024 08:33:23 -0600 Subject: [PATCH 091/118] aws_chatbot_teams_channel_configuration: use autoflex HasChanges --- .../chatbot/teams_channel_configuration.go | 23 ++++++------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/internal/service/chatbot/teams_channel_configuration.go b/internal/service/chatbot/teams_channel_configuration.go index ddfb41cfc64..32862c970e2 100644 --- a/internal/service/chatbot/teams_channel_configuration.go +++ b/internal/service/chatbot/teams_channel_configuration.go @@ -221,7 +221,13 @@ func (r *teamsChannelConfigurationResource) Update(ctx context.Context, request conn := r.Meta().ChatbotClient(ctx) - if teamsChannelConfigurationHasChanges(ctx, new, old) { + diff, d := fwflex.Calculate(ctx, new, old) + response.Diagnostics.Append(d...) + if response.Diagnostics.HasError() { + return + } + + if diff.HasChanges() { input := &chatbot.UpdateMicrosoftTeamsChannelConfigurationInput{} response.Diagnostics.Append(fwflex.Expand(ctx, new, input)...) if response.Diagnostics.HasError() { @@ -418,18 +424,3 @@ type teamsChannelConfigurationResourceModel struct { Timeouts timeouts.Value `tfsdk:"timeouts"` UserAuthorizationRequired types.Bool `tfsdk:"user_authorization_required"` } - -func teamsChannelConfigurationHasChanges(_ context.Context, plan, state teamsChannelConfigurationResourceModel) bool { - return !plan.ChannelID.Equal(state.ChannelID) || - !plan.ChannelName.Equal(state.ChannelName) || - !plan.ChatConfigurationARN.Equal(state.ChatConfigurationARN) || - !plan.ConfigurationName.Equal(state.ConfigurationName) || - !plan.GuardrailPolicyARNs.Equal(state.GuardrailPolicyARNs) || - !plan.IAMRoleARN.Equal(state.IAMRoleARN) || - !plan.LoggingLevel.Equal(state.LoggingLevel) || - !plan.SNSTopicARNs.Equal(state.SNSTopicARNs) || - !plan.TeamID.Equal(state.TeamID) || - !plan.TeamName.Equal(state.TeamName) || - !plan.TenantID.Equal(state.TenantID) || - !plan.UserAuthorizationRequired.Equal(state.UserAuthorizationRequired) -} From bf8b07b21424bf6af918a68d30ee5e6c42f65fb8 Mon Sep 17 00:00:00 2001 From: Adrian Johnson Date: Mon, 25 Nov 2024 08:35:37 -0600 Subject: [PATCH 092/118] aws_chatbot_teams_channel_configuration: use autoflex custom types --- .../chatbot/teams_channel_configuration.go | 49 ++++++++++--------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/internal/service/chatbot/teams_channel_configuration.go b/internal/service/chatbot/teams_channel_configuration.go index 32862c970e2..fc941419b6e 100644 --- a/internal/service/chatbot/teams_channel_configuration.go +++ b/internal/service/chatbot/teams_channel_configuration.go @@ -18,6 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringdefault" "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" "github.com/hashicorp/terraform-plugin-framework/types" @@ -73,9 +74,9 @@ func (r *teamsChannelConfigurationResource) Schema(ctx context.Context, request Required: true, }, "guardrail_policy_arns": schema.ListAttribute{ - Optional: true, - Computed: true, - ElementType: types.StringType, + CustomType: fwtypes.ListOfStringType, + Optional: true, + Computed: true, PlanModifiers: []planmodifier.List{ listplanmodifier.UseStateForUnknown(), }, @@ -92,12 +93,12 @@ func (r *teamsChannelConfigurationResource) Schema(ctx context.Context, request stringplanmodifier.UseStateForUnknown(), }, }, - "sns_topic_arns": schema.ListAttribute{ - Optional: true, - Computed: true, - ElementType: types.StringType, - PlanModifiers: []planmodifier.List{ - listplanmodifier.UseStateForUnknown(), + "sns_topic_arns": schema.SetAttribute{ + CustomType: fwtypes.SetOfStringType, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), }, }, names.AttrTags: tftags.TagsAttribute(), @@ -408,19 +409,19 @@ func waitTeamsChannelConfigurationDeleted(ctx context.Context, conn *chatbot.Cli } type teamsChannelConfigurationResourceModel struct { - ChannelID types.String `tfsdk:"channel_id"` - ChannelName types.String `tfsdk:"channel_name"` - ChatConfigurationARN types.String `tfsdk:"chat_configuration_arn"` - ConfigurationName types.String `tfsdk:"configuration_name"` - GuardrailPolicyARNs types.List `tfsdk:"guardrail_policy_arns"` - IAMRoleARN types.String `tfsdk:"iam_role_arn"` - LoggingLevel fwtypes.StringEnum[loggingLevel] `tfsdk:"logging_level"` - SNSTopicARNs types.List `tfsdk:"sns_topic_arns"` - Tags tftags.Map `tfsdk:"tags"` - TagsAll tftags.Map `tfsdk:"tags_all"` - TeamID types.String `tfsdk:"team_id"` - TeamName types.String `tfsdk:"team_name"` - TenantID types.String `tfsdk:"tenant_id"` - Timeouts timeouts.Value `tfsdk:"timeouts"` - UserAuthorizationRequired types.Bool `tfsdk:"user_authorization_required"` + ChannelID types.String `tfsdk:"channel_id"` + ChannelName types.String `tfsdk:"channel_name"` + ChatConfigurationARN types.String `tfsdk:"chat_configuration_arn"` + ConfigurationName types.String `tfsdk:"configuration_name"` + GuardrailPolicyARNs fwtypes.ListValueOf[types.String] `tfsdk:"guardrail_policy_arns"` + IAMRoleARN types.String `tfsdk:"iam_role_arn"` + LoggingLevel fwtypes.StringEnum[loggingLevel] `tfsdk:"logging_level"` + SNSTopicARNs fwtypes.SetValueOf[types.String] `tfsdk:"sns_topic_arns"` + Tags tftags.Map `tfsdk:"tags"` + TagsAll tftags.Map `tfsdk:"tags_all"` + TeamID types.String `tfsdk:"team_id"` + TeamName types.String `tfsdk:"team_name"` + TenantID types.String `tfsdk:"tenant_id"` + Timeouts timeouts.Value `tfsdk:"timeouts"` + UserAuthorizationRequired types.Bool `tfsdk:"user_authorization_required"` } From e68690dc37749d0041f6a1f9965a633feddadbce Mon Sep 17 00:00:00 2001 From: Adrian Johnson Date: Mon, 25 Nov 2024 08:39:30 -0600 Subject: [PATCH 093/118] aws_chatbot_teams_channel_configuration: use setTagsOut --- internal/service/chatbot/teams_channel_configuration.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/internal/service/chatbot/teams_channel_configuration.go b/internal/service/chatbot/teams_channel_configuration.go index fc941419b6e..c472864a124 100644 --- a/internal/service/chatbot/teams_channel_configuration.go +++ b/internal/service/chatbot/teams_channel_configuration.go @@ -205,6 +205,8 @@ func (r *teamsChannelConfigurationResource) Read(ctx context.Context, request re return } + setTagsOut(ctx, output.Tags) + response.Diagnostics.Append(response.State.Set(ctx, &data)...) } From c0c11a02e8c2d2272e4169a89ce6720e1f0046b8 Mon Sep 17 00:00:00 2001 From: Adrian Johnson Date: Mon, 25 Nov 2024 08:50:43 -0600 Subject: [PATCH 094/118] aws_chatbot_slack_channel_configuration: use setTagsOut --- internal/service/chatbot/slack_channel_configuration.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/internal/service/chatbot/slack_channel_configuration.go b/internal/service/chatbot/slack_channel_configuration.go index 472ea430539..ad11a653247 100644 --- a/internal/service/chatbot/slack_channel_configuration.go +++ b/internal/service/chatbot/slack_channel_configuration.go @@ -202,6 +202,8 @@ func (r *slackChannelConfigurationResource) Read(ctx context.Context, request re return } + setTagsOut(ctx, output.Tags) + response.Diagnostics.Append(response.State.Set(ctx, &data)...) } From b0c36245f3cd9746ed1d667204145947b2266db9 Mon Sep 17 00:00:00 2001 From: Adrian Johnson Date: Mon, 25 Nov 2024 08:57:00 -0600 Subject: [PATCH 095/118] add CHANGELOG entry --- .changelog/40291.txt | 3 +++ internal/service/chatbot/slack_channel_configuration.go | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 .changelog/40291.txt diff --git a/.changelog/40291.txt b/.changelog/40291.txt new file mode 100644 index 00000000000..97e2b1ae6b5 --- /dev/null +++ b/.changelog/40291.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_chatbot_teams_channel_configuration: Fix inconsistent provider result when order of `sns_topic_arns`changes +``` \ No newline at end of file diff --git a/internal/service/chatbot/slack_channel_configuration.go b/internal/service/chatbot/slack_channel_configuration.go index ad11a653247..a878965774f 100644 --- a/internal/service/chatbot/slack_channel_configuration.go +++ b/internal/service/chatbot/slack_channel_configuration.go @@ -203,7 +203,7 @@ func (r *slackChannelConfigurationResource) Read(ctx context.Context, request re } setTagsOut(ctx, output.Tags) - + response.Diagnostics.Append(response.State.Set(ctx, &data)...) } From 81f1e205ba952bda0260bc4799edcb12e00100ce Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 25 Nov 2024 10:21:51 -0500 Subject: [PATCH 096/118] r/aws_memorydb_user: Standardize. --- internal/service/memorydb/exports_test.go | 1 + internal/service/memorydb/find.go | 36 ------ internal/service/memorydb/status.go | 30 ----- internal/service/memorydb/user.go | 114 ++++++++++++++++-- internal/service/memorydb/user_data_source.go | 2 +- internal/service/memorydb/wait.go | 45 ------- 6 files changed, 106 insertions(+), 122 deletions(-) delete mode 100644 internal/service/memorydb/find.go delete mode 100644 internal/service/memorydb/status.go delete mode 100644 internal/service/memorydb/wait.go diff --git a/internal/service/memorydb/exports_test.go b/internal/service/memorydb/exports_test.go index 8d69689fdfd..dd13a4b546d 100644 --- a/internal/service/memorydb/exports_test.go +++ b/internal/service/memorydb/exports_test.go @@ -17,6 +17,7 @@ var ( FindParameterGroupByName = findParameterGroupByName FindSnapshotByName = findSnapshotByName FindSubnetGroupByName = findSubnetGroupByName + FindUserByName = findUserByName ParameterChanges = parameterChanges ParameterHash = parameterHash ) diff --git a/internal/service/memorydb/find.go b/internal/service/memorydb/find.go deleted file mode 100644 index 386299e5fa9..00000000000 --- a/internal/service/memorydb/find.go +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 - -package memorydb - -import ( - "context" - - "github.com/aws/aws-sdk-go-v2/aws" - "github.com/aws/aws-sdk-go-v2/service/memorydb" - awstypes "github.com/aws/aws-sdk-go-v2/service/memorydb/types" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" - "github.com/hashicorp/terraform-provider-aws/internal/errs" - "github.com/hashicorp/terraform-provider-aws/internal/tfresource" -) - -func FindUserByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.User, error) { - input := memorydb.DescribeUsersInput{ - UserName: aws.String(name), - } - - output, err := conn.DescribeUsers(ctx, &input) - - if errs.IsA[*awstypes.UserNotFoundFault](err) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: input, - } - } - - if err != nil { - return nil, err - } - - return tfresource.AssertSingleValueResult(output.Users) -} diff --git a/internal/service/memorydb/status.go b/internal/service/memorydb/status.go deleted file mode 100644 index d9f009f04da..00000000000 --- a/internal/service/memorydb/status.go +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 - -package memorydb - -import ( - "context" - - "github.com/aws/aws-sdk-go-v2/aws" - "github.com/aws/aws-sdk-go-v2/service/memorydb" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" - "github.com/hashicorp/terraform-provider-aws/internal/tfresource" -) - -// statusUser fetches the MemoryDB user and its status. -func statusUser(ctx context.Context, conn *memorydb.Client, userName string) retry.StateRefreshFunc { - return func() (interface{}, string, error) { - user, err := FindUserByName(ctx, conn, userName) - - if tfresource.NotFound(err) { - return nil, "", nil - } - - if err != nil { - return nil, "", err - } - - return user, aws.ToString(user.Status), nil - } -} diff --git a/internal/service/memorydb/user.go b/internal/service/memorydb/user.go index 7a6ac9d4e39..4f18067b232 100644 --- a/internal/service/memorydb/user.go +++ b/internal/service/memorydb/user.go @@ -6,11 +6,13 @@ package memorydb import ( "context" "log" + "time" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/memorydb" awstypes "github.com/aws/aws-sdk-go-v2/service/memorydb/types" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" "github.com/hashicorp/terraform-provider-aws/internal/conns" @@ -96,7 +98,6 @@ func resourceUser() *schema.Resource { func resourceUserCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) userName := d.Get(names.AttrUserName).(string) @@ -123,10 +124,9 @@ func resourceUserCreate(ctx context.Context, d *schema.ResourceData, meta interf func resourceUserRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - user, err := FindUserByName(ctx, conn, d.Id()) + user, err := findUserByName(ctx, conn, d.Id()) if !d.IsNewResource() && tfresource.NotFound(err) { log.Printf("[WARN] MemoryDB User (%s) not found, removing from state", d.Id()) @@ -140,19 +140,17 @@ func resourceUserRead(ctx context.Context, d *schema.ResourceData, meta interfac d.Set("access_string", user.AccessString) d.Set(names.AttrARN, user.ARN) - if v := user.Authentication; v != nil { authenticationMode := map[string]interface{}{ "passwords": d.Get("authentication_mode.0.passwords"), "password_count": aws.ToInt32(v.PasswordCount), - names.AttrType: string(v.Type), + names.AttrType: v.Type, } if err := d.Set("authentication_mode", []interface{}{authenticationMode}); err != nil { return sdkdiag.AppendErrorf(diags, "setting authentication_mode: %s", err) } } - d.Set("minimum_engine_version", user.MinimumEngineVersion) d.Set(names.AttrUserName, user.Name) @@ -161,7 +159,6 @@ func resourceUserRead(ctx context.Context, d *schema.ResourceData, meta interfac func resourceUserUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) if d.HasChangesExcept(names.AttrTags, names.AttrTagsAll) { @@ -183,7 +180,7 @@ func resourceUserUpdate(ctx context.Context, d *schema.ResourceData, meta interf return sdkdiag.AppendErrorf(diags, "updating MemoryDB User (%s): %s", d.Id(), err) } - if err := waitUserActive(ctx, conn, d.Id()); err != nil { + if _, err := waitUserActive(ctx, conn, d.Id()); err != nil { return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB User (%s) update: %s", d.Id(), err) } } @@ -193,7 +190,6 @@ func resourceUserUpdate(ctx context.Context, d *schema.ResourceData, meta interf func resourceUserDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) log.Printf("[DEBUG] Deleting MemoryDB User: (%s)", d.Id()) @@ -209,13 +205,111 @@ func resourceUserDelete(ctx context.Context, d *schema.ResourceData, meta interf return sdkdiag.AppendErrorf(diags, "deleting MemoryDB User (%s): %s", d.Id(), err) } - if err := waitUserDeleted(ctx, conn, d.Id()); err != nil { + if _, err := waitUserDeleted(ctx, conn, d.Id()); err != nil { return sdkdiag.AppendErrorf(diags, "waiting for MemoryDB User (%s) delete: %s", d.Id(), err) } return diags } +func findUserByName(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.User, error) { + input := &memorydb.DescribeUsersInput{ + UserName: aws.String(name), + } + + return findUser(ctx, conn, input) +} + +func findUser(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeUsersInput) (*awstypes.User, error) { + output, err := findUsers(ctx, conn, input) + + if err != nil { + return nil, err + } + + return tfresource.AssertSingleValueResult(output) +} + +func findUsers(ctx context.Context, conn *memorydb.Client, input *memorydb.DescribeUsersInput) ([]awstypes.User, error) { + var output []awstypes.User + + pages := memorydb.NewDescribeUsersPaginator(conn, input) + for pages.HasMorePages() { + page, err := pages.NextPage(ctx) + + if errs.IsA[*awstypes.UserNotFoundFault](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: input, + } + } + + if err != nil { + return nil, err + } + + output = append(output, page.Users...) + } + + return output, nil +} + +func statusUser(ctx context.Context, conn *memorydb.Client, userName string) retry.StateRefreshFunc { + return func() (interface{}, string, error) { + user, err := findUserByName(ctx, conn, userName) + + if tfresource.NotFound(err) { + return nil, "", nil + } + + if err != nil { + return nil, "", err + } + + return user, aws.ToString(user.Status), nil + } +} + +func waitUserActive(ctx context.Context, conn *memorydb.Client, userName string) (*awstypes.User, error) { + const ( + timeout = 5 * time.Minute + ) + stateConf := &retry.StateChangeConf{ + Pending: []string{userStatusModifying}, + Target: []string{userStatusActive}, + Refresh: statusUser(ctx, conn, userName), + Timeout: timeout, + } + + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*awstypes.User); ok { + return output, err + } + + return nil, err +} + +func waitUserDeleted(ctx context.Context, conn *memorydb.Client, userName string) (*awstypes.User, error) { + const ( + timeout = 5 * time.Minute + ) + stateConf := &retry.StateChangeConf{ + Pending: []string{userStatusDeleting}, + Target: []string{}, + Refresh: statusUser(ctx, conn, userName), + Timeout: timeout, + } + + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*awstypes.User); ok { + return output, err + } + + return nil, err +} + func expandAuthenticationMode(tfMap map[string]interface{}) *awstypes.AuthenticationMode { if tfMap == nil { return nil diff --git a/internal/service/memorydb/user_data_source.go b/internal/service/memorydb/user_data_source.go index 4a04f3e1cea..2ff0ac23ae6 100644 --- a/internal/service/memorydb/user_data_source.go +++ b/internal/service/memorydb/user_data_source.go @@ -67,7 +67,7 @@ func dataSourceUserRead(ctx context.Context, d *schema.ResourceData, meta interf userName := d.Get(names.AttrUserName).(string) - user, err := FindUserByName(ctx, conn, userName) + user, err := findUserByName(ctx, conn, userName) if err != nil { return sdkdiag.AppendFromErr(diags, tfresource.SingularDataSourceFindError("MemoryDB User", err)) diff --git a/internal/service/memorydb/wait.go b/internal/service/memorydb/wait.go deleted file mode 100644 index 14e6fdcfd5d..00000000000 --- a/internal/service/memorydb/wait.go +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 - -package memorydb - -import ( - "context" - "time" - - "github.com/aws/aws-sdk-go-v2/service/memorydb" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" -) - -const ( - userActiveTimeout = 5 * time.Minute - userDeletedTimeout = 5 * time.Minute -) - -// waitUserActive waits for MemoryDB user to reach an active state after modifications. -func waitUserActive(ctx context.Context, conn *memorydb.Client, userId string) error { - stateConf := &retry.StateChangeConf{ - Pending: []string{userStatusModifying}, - Target: []string{userStatusActive}, - Refresh: statusUser(ctx, conn, userId), - Timeout: userActiveTimeout, - } - - _, err := stateConf.WaitForStateContext(ctx) - - return err -} - -// waitUserDeleted waits for MemoryDB user to be deleted. -func waitUserDeleted(ctx context.Context, conn *memorydb.Client, userId string) error { - stateConf := &retry.StateChangeConf{ - Pending: []string{userStatusDeleting}, - Target: []string{}, - Refresh: statusUser(ctx, conn, userId), - Timeout: userDeletedTimeout, - } - - _, err := stateConf.WaitForStateContext(ctx) - - return err -} From 41e948a145bf0a3d9e90d6983596890f4fc238ba Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 25 Nov 2024 10:23:37 -0500 Subject: [PATCH 097/118] d/aws_memorydb_user: Transparent tagging. --- .../service/memorydb/service_package_gen.go | 3 +++ internal/service/memorydb/user.go | 4 +-- internal/service/memorydb/user_data_source.go | 25 ++++--------------- 3 files changed, 10 insertions(+), 22 deletions(-) diff --git a/internal/service/memorydb/service_package_gen.go b/internal/service/memorydb/service_package_gen.go index a0366916e32..eb718223ac5 100644 --- a/internal/service/memorydb/service_package_gen.go +++ b/internal/service/memorydb/service_package_gen.go @@ -68,6 +68,9 @@ func (p *servicePackage) SDKDataSources(ctx context.Context) []*types.ServicePac Factory: dataSourceUser, TypeName: "aws_memorydb_user", Name: "User", + Tags: &types.ServicePackageResourceTags{ + IdentifierAttribute: names.AttrARN, + }, }, } } diff --git a/internal/service/memorydb/user.go b/internal/service/memorydb/user.go index 4f18067b232..ac29c1ead65 100644 --- a/internal/service/memorydb/user.go +++ b/internal/service/memorydb/user.go @@ -141,13 +141,13 @@ func resourceUserRead(ctx context.Context, d *schema.ResourceData, meta interfac d.Set("access_string", user.AccessString) d.Set(names.AttrARN, user.ARN) if v := user.Authentication; v != nil { - authenticationMode := map[string]interface{}{ + tfMap := map[string]interface{}{ "passwords": d.Get("authentication_mode.0.passwords"), "password_count": aws.ToInt32(v.PasswordCount), names.AttrType: v.Type, } - if err := d.Set("authentication_mode", []interface{}{authenticationMode}); err != nil { + if err := d.Set("authentication_mode", []interface{}{tfMap}); err != nil { return sdkdiag.AppendErrorf(diags, "setting authentication_mode: %s", err) } } diff --git a/internal/service/memorydb/user_data_source.go b/internal/service/memorydb/user_data_source.go index 2ff0ac23ae6..b33174d1d2c 100644 --- a/internal/service/memorydb/user_data_source.go +++ b/internal/service/memorydb/user_data_source.go @@ -17,6 +17,7 @@ import ( ) // @SDKDataSource("aws_memorydb_user", name="User") +// @Tags(identifierAttribute="arn") func dataSourceUser() *schema.Resource { return &schema.Resource{ ReadWithoutTimeout: dataSourceUserRead, @@ -61,12 +62,9 @@ func dataSourceUser() *schema.Resource { func dataSourceUserRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).MemoryDBClient(ctx) - ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig(ctx) userName := d.Get(names.AttrUserName).(string) - user, err := findUserByName(ctx, conn, userName) if err != nil { @@ -74,33 +72,20 @@ func dataSourceUserRead(ctx context.Context, d *schema.ResourceData, meta interf } d.SetId(aws.ToString(user.Name)) - d.Set("access_string", user.AccessString) d.Set(names.AttrARN, user.ARN) - if v := user.Authentication; v != nil { - authenticationMode := map[string]interface{}{ + tfMap := map[string]interface{}{ "password_count": aws.ToInt32(v.PasswordCount), - names.AttrType: string(v.Type), + names.AttrType: v.Type, } - if err := d.Set("authentication_mode", []interface{}{authenticationMode}); err != nil { - return sdkdiag.AppendErrorf(diags, "failed to set authentication_mode of MemoryDB User (%s): %s", d.Id(), err) + if err := d.Set("authentication_mode", []interface{}{tfMap}); err != nil { + return sdkdiag.AppendErrorf(diags, "setting authentication_mode: %s", err) } } - d.Set("minimum_engine_version", user.MinimumEngineVersion) d.Set(names.AttrUserName, user.Name) - tags, err := listTags(ctx, conn, d.Get(names.AttrARN).(string)) - - if err != nil { - return sdkdiag.AppendErrorf(diags, "listing tags for MemoryDB User (%s): %s", d.Id(), err) - } - - if err := d.Set(names.AttrTags, tags.IgnoreAWS().IgnoreConfig(ignoreTagsConfig).Map()); err != nil { - return sdkdiag.AppendErrorf(diags, "setting tags: %s", err) - } - return diags } From 1a3875cabc8442c5be0908c21f878eab98321cc4 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 25 Nov 2024 10:33:42 -0500 Subject: [PATCH 098/118] Fix golangci-lint 'unparam'. --- internal/service/memorydb/acl.go | 2 +- internal/service/memorydb/cluster.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/service/memorydb/acl.go b/internal/service/memorydb/acl.go index 4c590cf78a3..ffd4b69606c 100644 --- a/internal/service/memorydb/acl.go +++ b/internal/service/memorydb/acl.go @@ -276,7 +276,7 @@ func statusACL(ctx context.Context, conn *memorydb.Client, name string) retry.St } } -func waitACLActive(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.ACL, error) { +func waitACLActive(ctx context.Context, conn *memorydb.Client, name string) (*awstypes.ACL, error) { //nolint:unparam const ( timeout = 5 * time.Minute ) diff --git a/internal/service/memorydb/cluster.go b/internal/service/memorydb/cluster.go index 6317a0eb66d..ec8b06cf70b 100644 --- a/internal/service/memorydb/cluster.go +++ b/internal/service/memorydb/cluster.go @@ -682,7 +682,7 @@ func statusClusterSecurityGroups(ctx context.Context, conn *memorydb.Client, nam } } -func waitClusterAvailable(ctx context.Context, conn *memorydb.Client, name string, timeout time.Duration) (*awstypes.Cluster, error) { +func waitClusterAvailable(ctx context.Context, conn *memorydb.Client, name string, timeout time.Duration) (*awstypes.Cluster, error) { //nolint:unparam stateConf := &retry.StateChangeConf{ Pending: []string{clusterStatusCreating, clusterStatusUpdating, clusterStatusSnapshotting}, Target: []string{clusterStatusAvailable}, From d6b5fccc1a3f8b4dfb5b3d168db918c94a65f8ee Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 25 Nov 2024 10:34:25 -0500 Subject: [PATCH 099/118] Fix golangci-lint 'staticcheck'. --- internal/service/memorydb/subnet_group_data_source.go | 6 ------ 1 file changed, 6 deletions(-) diff --git a/internal/service/memorydb/subnet_group_data_source.go b/internal/service/memorydb/subnet_group_data_source.go index abaa7740724..09251eed90f 100644 --- a/internal/service/memorydb/subnet_group_data_source.go +++ b/internal/service/memorydb/subnet_group_data_source.go @@ -63,12 +63,6 @@ func dataSourceSubnetGroupRead(ctx context.Context, d *schema.ResourceData, meta } d.SetId(aws.ToString(group.Name)) - - var subnetIds []*string - for _, subnet := range group.Subnets { - subnetIds = append(subnetIds, subnet.Identifier) - } - d.Set(names.AttrARN, group.ARN) d.Set(names.AttrDescription, group.Description) d.Set(names.AttrName, group.Name) From f719192ee7acd941a2aa283aa0556f4e81ff9884 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 25 Nov 2024 10:50:40 -0500 Subject: [PATCH 100/118] Fix tfproviderdocs errors. --- website/docs/cdktf/python/d/memorydb_acl.html.markdown | 2 +- website/docs/cdktf/python/d/memorydb_cluster.html.markdown | 2 +- .../docs/cdktf/python/d/memorydb_parameter_group.html.markdown | 2 +- website/docs/cdktf/python/d/memorydb_snapshot.html.markdown | 2 +- website/docs/cdktf/python/d/memorydb_subnet_group.html.markdown | 2 +- website/docs/cdktf/python/d/memorydb_user.html.markdown | 2 +- website/docs/cdktf/python/r/memorydb_acl.html.markdown | 2 +- website/docs/cdktf/python/r/memorydb_cluster.html.markdown | 2 +- .../docs/cdktf/python/r/memorydb_parameter_group.html.markdown | 2 +- website/docs/cdktf/python/r/memorydb_snapshot.html.markdown | 2 +- website/docs/cdktf/python/r/memorydb_subnet_group.html.markdown | 2 +- website/docs/cdktf/python/r/memorydb_user.html.markdown | 2 +- website/docs/cdktf/typescript/d/memorydb_acl.html.markdown | 2 +- website/docs/cdktf/typescript/d/memorydb_cluster.html.markdown | 2 +- .../cdktf/typescript/d/memorydb_parameter_group.html.markdown | 2 +- website/docs/cdktf/typescript/d/memorydb_snapshot.html.markdown | 2 +- .../docs/cdktf/typescript/d/memorydb_subnet_group.html.markdown | 2 +- website/docs/cdktf/typescript/d/memorydb_user.html.markdown | 2 +- website/docs/cdktf/typescript/r/memorydb_acl.html.markdown | 2 +- website/docs/cdktf/typescript/r/memorydb_cluster.html.markdown | 2 +- .../cdktf/typescript/r/memorydb_parameter_group.html.markdown | 2 +- website/docs/cdktf/typescript/r/memorydb_snapshot.html.markdown | 2 +- .../docs/cdktf/typescript/r/memorydb_subnet_group.html.markdown | 2 +- website/docs/cdktf/typescript/r/memorydb_user.html.markdown | 2 +- 24 files changed, 24 insertions(+), 24 deletions(-) diff --git a/website/docs/cdktf/python/d/memorydb_acl.html.markdown b/website/docs/cdktf/python/d/memorydb_acl.html.markdown index 8059f4a49bb..2df8b0a96c2 100644 --- a/website/docs/cdktf/python/d/memorydb_acl.html.markdown +++ b/website/docs/cdktf/python/d/memorydb_acl.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_acl" description: |- diff --git a/website/docs/cdktf/python/d/memorydb_cluster.html.markdown b/website/docs/cdktf/python/d/memorydb_cluster.html.markdown index 462a1c3a211..6a151a4a5f4 100644 --- a/website/docs/cdktf/python/d/memorydb_cluster.html.markdown +++ b/website/docs/cdktf/python/d/memorydb_cluster.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_cluster" description: |- diff --git a/website/docs/cdktf/python/d/memorydb_parameter_group.html.markdown b/website/docs/cdktf/python/d/memorydb_parameter_group.html.markdown index 563659f7095..83e501c8b0c 100644 --- a/website/docs/cdktf/python/d/memorydb_parameter_group.html.markdown +++ b/website/docs/cdktf/python/d/memorydb_parameter_group.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_parameter_group" description: |- diff --git a/website/docs/cdktf/python/d/memorydb_snapshot.html.markdown b/website/docs/cdktf/python/d/memorydb_snapshot.html.markdown index 0973826f709..f5cc69b2d54 100644 --- a/website/docs/cdktf/python/d/memorydb_snapshot.html.markdown +++ b/website/docs/cdktf/python/d/memorydb_snapshot.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_snapshot" description: |- diff --git a/website/docs/cdktf/python/d/memorydb_subnet_group.html.markdown b/website/docs/cdktf/python/d/memorydb_subnet_group.html.markdown index e564b6e0a34..a846abbd6ef 100644 --- a/website/docs/cdktf/python/d/memorydb_subnet_group.html.markdown +++ b/website/docs/cdktf/python/d/memorydb_subnet_group.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_subnet_group" description: |- diff --git a/website/docs/cdktf/python/d/memorydb_user.html.markdown b/website/docs/cdktf/python/d/memorydb_user.html.markdown index ab2343293f2..25f33a18759 100644 --- a/website/docs/cdktf/python/d/memorydb_user.html.markdown +++ b/website/docs/cdktf/python/d/memorydb_user.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_user" description: |- diff --git a/website/docs/cdktf/python/r/memorydb_acl.html.markdown b/website/docs/cdktf/python/r/memorydb_acl.html.markdown index 18dc7014090..d38813e1f7a 100644 --- a/website/docs/cdktf/python/r/memorydb_acl.html.markdown +++ b/website/docs/cdktf/python/r/memorydb_acl.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_acl" description: |- diff --git a/website/docs/cdktf/python/r/memorydb_cluster.html.markdown b/website/docs/cdktf/python/r/memorydb_cluster.html.markdown index 632f1cf8727..faa0d6ffad3 100644 --- a/website/docs/cdktf/python/r/memorydb_cluster.html.markdown +++ b/website/docs/cdktf/python/r/memorydb_cluster.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_cluster" description: |- diff --git a/website/docs/cdktf/python/r/memorydb_parameter_group.html.markdown b/website/docs/cdktf/python/r/memorydb_parameter_group.html.markdown index 851db30a96b..9ef0935b19f 100644 --- a/website/docs/cdktf/python/r/memorydb_parameter_group.html.markdown +++ b/website/docs/cdktf/python/r/memorydb_parameter_group.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_parameter_group" description: |- diff --git a/website/docs/cdktf/python/r/memorydb_snapshot.html.markdown b/website/docs/cdktf/python/r/memorydb_snapshot.html.markdown index 4394a68773a..78b138f4e10 100644 --- a/website/docs/cdktf/python/r/memorydb_snapshot.html.markdown +++ b/website/docs/cdktf/python/r/memorydb_snapshot.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_snapshot" description: |- diff --git a/website/docs/cdktf/python/r/memorydb_subnet_group.html.markdown b/website/docs/cdktf/python/r/memorydb_subnet_group.html.markdown index b7272bf1345..b485edc3908 100644 --- a/website/docs/cdktf/python/r/memorydb_subnet_group.html.markdown +++ b/website/docs/cdktf/python/r/memorydb_subnet_group.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_subnet_group" description: |- diff --git a/website/docs/cdktf/python/r/memorydb_user.html.markdown b/website/docs/cdktf/python/r/memorydb_user.html.markdown index 14803be73eb..305eee4aace 100644 --- a/website/docs/cdktf/python/r/memorydb_user.html.markdown +++ b/website/docs/cdktf/python/r/memorydb_user.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_user" description: |- diff --git a/website/docs/cdktf/typescript/d/memorydb_acl.html.markdown b/website/docs/cdktf/typescript/d/memorydb_acl.html.markdown index 66bf039e3d6..3578ddc564f 100644 --- a/website/docs/cdktf/typescript/d/memorydb_acl.html.markdown +++ b/website/docs/cdktf/typescript/d/memorydb_acl.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_acl" description: |- diff --git a/website/docs/cdktf/typescript/d/memorydb_cluster.html.markdown b/website/docs/cdktf/typescript/d/memorydb_cluster.html.markdown index 4f392d86846..36d07a60bf8 100644 --- a/website/docs/cdktf/typescript/d/memorydb_cluster.html.markdown +++ b/website/docs/cdktf/typescript/d/memorydb_cluster.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_cluster" description: |- diff --git a/website/docs/cdktf/typescript/d/memorydb_parameter_group.html.markdown b/website/docs/cdktf/typescript/d/memorydb_parameter_group.html.markdown index 30b075c724a..3ccc5f018b7 100644 --- a/website/docs/cdktf/typescript/d/memorydb_parameter_group.html.markdown +++ b/website/docs/cdktf/typescript/d/memorydb_parameter_group.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_parameter_group" description: |- diff --git a/website/docs/cdktf/typescript/d/memorydb_snapshot.html.markdown b/website/docs/cdktf/typescript/d/memorydb_snapshot.html.markdown index a801a761556..a4357ed2ea5 100644 --- a/website/docs/cdktf/typescript/d/memorydb_snapshot.html.markdown +++ b/website/docs/cdktf/typescript/d/memorydb_snapshot.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_snapshot" description: |- diff --git a/website/docs/cdktf/typescript/d/memorydb_subnet_group.html.markdown b/website/docs/cdktf/typescript/d/memorydb_subnet_group.html.markdown index 672234f3cfc..e177858a7ac 100644 --- a/website/docs/cdktf/typescript/d/memorydb_subnet_group.html.markdown +++ b/website/docs/cdktf/typescript/d/memorydb_subnet_group.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_subnet_group" description: |- diff --git a/website/docs/cdktf/typescript/d/memorydb_user.html.markdown b/website/docs/cdktf/typescript/d/memorydb_user.html.markdown index 6685762605f..ba9bf5c2ac3 100644 --- a/website/docs/cdktf/typescript/d/memorydb_user.html.markdown +++ b/website/docs/cdktf/typescript/d/memorydb_user.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_user" description: |- diff --git a/website/docs/cdktf/typescript/r/memorydb_acl.html.markdown b/website/docs/cdktf/typescript/r/memorydb_acl.html.markdown index 9048af183da..5f2a47d6b81 100644 --- a/website/docs/cdktf/typescript/r/memorydb_acl.html.markdown +++ b/website/docs/cdktf/typescript/r/memorydb_acl.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_acl" description: |- diff --git a/website/docs/cdktf/typescript/r/memorydb_cluster.html.markdown b/website/docs/cdktf/typescript/r/memorydb_cluster.html.markdown index bc0ff04e3d0..f8bbc650953 100644 --- a/website/docs/cdktf/typescript/r/memorydb_cluster.html.markdown +++ b/website/docs/cdktf/typescript/r/memorydb_cluster.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_cluster" description: |- diff --git a/website/docs/cdktf/typescript/r/memorydb_parameter_group.html.markdown b/website/docs/cdktf/typescript/r/memorydb_parameter_group.html.markdown index a505b1e3c06..e0131d96a65 100644 --- a/website/docs/cdktf/typescript/r/memorydb_parameter_group.html.markdown +++ b/website/docs/cdktf/typescript/r/memorydb_parameter_group.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_parameter_group" description: |- diff --git a/website/docs/cdktf/typescript/r/memorydb_snapshot.html.markdown b/website/docs/cdktf/typescript/r/memorydb_snapshot.html.markdown index fbdbf2de5b2..b37f0f406bf 100644 --- a/website/docs/cdktf/typescript/r/memorydb_snapshot.html.markdown +++ b/website/docs/cdktf/typescript/r/memorydb_snapshot.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_snapshot" description: |- diff --git a/website/docs/cdktf/typescript/r/memorydb_subnet_group.html.markdown b/website/docs/cdktf/typescript/r/memorydb_subnet_group.html.markdown index 5e7bbc98a00..68b390fe791 100644 --- a/website/docs/cdktf/typescript/r/memorydb_subnet_group.html.markdown +++ b/website/docs/cdktf/typescript/r/memorydb_subnet_group.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_subnet_group" description: |- diff --git a/website/docs/cdktf/typescript/r/memorydb_user.html.markdown b/website/docs/cdktf/typescript/r/memorydb_user.html.markdown index a27e6d8d615..4ea9d2ac35d 100644 --- a/website/docs/cdktf/typescript/r/memorydb_user.html.markdown +++ b/website/docs/cdktf/typescript/r/memorydb_user.html.markdown @@ -1,5 +1,5 @@ --- -subcategory: "MemoryDB for Redis" +subcategory: "MemoryDB" layout: "aws" page_title: "AWS: aws_memorydb_user" description: |- From 0c9edd45ad5b079fe7186bf8ac957371a964811c Mon Sep 17 00:00:00 2001 From: changelogbot Date: Mon, 25 Nov 2024 16:13:56 +0000 Subject: [PATCH 101/118] Update CHANGELOG.md for #40291 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd6b4697505..c6ee7ac9ada 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ BUG FIXES: * provider: Suppress `Warning: AWS account ID not found for provider` when `skip_requesting_account_id` is `true` ([#40264](https://github.com/hashicorp/terraform-provider-aws/issues/40264)) * resource/aws_batch_job_definition: Fix crash when specifying `eksProperties` or `ecsProperties` block ([#40172](https://github.com/hashicorp/terraform-provider-aws/issues/40172)) * resource/aws_chatbot_slack_channel_configuration: Fix inconsistent provider result when order of `sns_topic_arns`changes ([#40253](https://github.com/hashicorp/terraform-provider-aws/issues/40253)) +* resource/aws_chatbot_teams_channel_configuration: Fix inconsistent provider result when order of `sns_topic_arns`changes ([#40291](https://github.com/hashicorp/terraform-provider-aws/issues/40291)) * resource/aws_db_instance: When changing `storage_type` from `io1` or `io2` to `gp3`, fix bug causing error `InvalidParameterCombination: You must specify both the storage size and iops when modifying the storage size or iops on a DB instance that has iops` ([#37257](https://github.com/hashicorp/terraform-provider-aws/issues/37257)) * resource/aws_db_instance: When changing a `gp3` volume's `allocated_storage` to a value larger than the [threshold value for `engine`](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#gp3-storage), fix bug causing error `InvalidParameterCombination: You must specify both the storage size and iops when modifying the storage size or iops on a DB instance that has iops` ([#28847](https://github.com/hashicorp/terraform-provider-aws/issues/28847)) From 6354ec3cb9945906ce9fe4d0e38c4edf879c46d4 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 25 Nov 2024 12:17:03 -0500 Subject: [PATCH 102/118] Fix 'TestParameterChanges'. --- .../service/memorydb/parameter_group_test.go | 240 +++++++++--------- 1 file changed, 122 insertions(+), 118 deletions(-) diff --git a/internal/service/memorydb/parameter_group_test.go b/internal/service/memorydb/parameter_group_test.go index b0f3d1f2111..4e6d754d0f9 100644 --- a/internal/service/memorydb/parameter_group_test.go +++ b/internal/service/memorydb/parameter_group_test.go @@ -6,11 +6,12 @@ package memorydb_test import ( "context" "fmt" - "reflect" "testing" "github.com/aws/aws-sdk-go-v2/aws" awstypes "github.com/aws/aws-sdk-go-v2/service/memorydb/types" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" @@ -22,6 +23,126 @@ import ( "github.com/hashicorp/terraform-provider-aws/names" ) +func TestParameterChanges(t *testing.T) { + t.Parallel() + + cases := []struct { + Name string + Old *schema.Set + New *schema.Set + ExpectedRemove []awstypes.ParameterNameValue + ExpectedAddOrUpdate []awstypes.ParameterNameValue + }{ + { + Name: "Empty", + Old: new(schema.Set), + New: new(schema.Set), + ExpectedRemove: []awstypes.ParameterNameValue{}, + ExpectedAddOrUpdate: []awstypes.ParameterNameValue{}, + }, + { + Name: "Remove all", + Old: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ + map[string]interface{}{ + names.AttrName: "reserved-memory", + names.AttrValue: "0", + }, + }), + New: new(schema.Set), + ExpectedRemove: []awstypes.ParameterNameValue{ + { + ParameterName: aws.String("reserved-memory"), + ParameterValue: aws.String("0"), + }, + }, + ExpectedAddOrUpdate: []awstypes.ParameterNameValue{}, + }, + { + Name: "No change", + Old: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ + map[string]interface{}{ + names.AttrName: "reserved-memory", + names.AttrValue: "0", + }, + }), + New: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ + map[string]interface{}{ + names.AttrName: "reserved-memory", + names.AttrValue: "0", + }, + }), + ExpectedRemove: []awstypes.ParameterNameValue{}, + ExpectedAddOrUpdate: []awstypes.ParameterNameValue{}, + }, + { + Name: "Remove partial", + Old: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ + map[string]interface{}{ + names.AttrName: "reserved-memory", + names.AttrValue: "0", + }, + map[string]interface{}{ + names.AttrName: "appendonly", + names.AttrValue: "yes", + }, + }), + New: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ + map[string]interface{}{ + names.AttrName: "appendonly", + names.AttrValue: "yes", + }, + }), + ExpectedRemove: []awstypes.ParameterNameValue{ + { + ParameterName: aws.String("reserved-memory"), + ParameterValue: aws.String("0"), + }, + }, + ExpectedAddOrUpdate: []awstypes.ParameterNameValue{}, + }, + { + Name: "Add to existing", + Old: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ + map[string]interface{}{ + names.AttrName: "appendonly", + names.AttrValue: "yes", + }, + }), + New: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ + map[string]interface{}{ + names.AttrName: "appendonly", + names.AttrValue: "yes", + }, + map[string]interface{}{ + names.AttrName: "appendfsync", + names.AttrValue: "always", + }, + }), + ExpectedRemove: []awstypes.ParameterNameValue{}, + ExpectedAddOrUpdate: []awstypes.ParameterNameValue{ + { + ParameterName: aws.String("appendfsync"), + ParameterValue: aws.String("always"), + }, + }, + }, + } + + ignoreExportedOpts := cmpopts.IgnoreUnexported( + awstypes.ParameterNameValue{}, + ) + + for _, tc := range cases { + remove, addOrUpdate := tfmemorydb.ParameterChanges(tc.Old, tc.New) + if diff := cmp.Diff(remove, tc.ExpectedRemove, ignoreExportedOpts); diff != "" { + t.Errorf("unexpected Remove diff (+wanted, -got): %s", diff) + } + if diff := cmp.Diff(addOrUpdate, tc.ExpectedAddOrUpdate, ignoreExportedOpts); diff != "" { + t.Errorf("unexpected AddOrUpdate diff (+wanted, -got): %s", diff) + } + } +} + func TestAccMemoryDBParameterGroup_basic(t *testing.T) { ctx := acctest.Context(t) rName := "tf-test-" + sdkacctest.RandString(8) @@ -415,120 +536,3 @@ resource "aws_memorydb_parameter_group" "test" { } `, rName, tagKey1, tagValue1, tagKey2, tagValue2) } - -// TestParameterChanges was copy-pasted from the ElastiCache implementation. -func TestParameterChanges(t *testing.T) { - t.Parallel() - - cases := []struct { - Name string - Old *schema.Set - New *schema.Set - ExpectedRemove []*awstypes.ParameterNameValue - ExpectedAddOrUpdate []*awstypes.ParameterNameValue - }{ - { - Name: "Empty", - Old: new(schema.Set), - New: new(schema.Set), - ExpectedRemove: []*awstypes.ParameterNameValue{}, - ExpectedAddOrUpdate: []*awstypes.ParameterNameValue{}, - }, - { - Name: "Remove all", - Old: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ - map[string]interface{}{ - names.AttrName: "reserved-memory", - names.AttrValue: "0", - }, - }), - New: new(schema.Set), - ExpectedRemove: []*awstypes.ParameterNameValue{ - { - ParameterName: aws.String("reserved-memory"), - ParameterValue: aws.String("0"), - }, - }, - ExpectedAddOrUpdate: []*awstypes.ParameterNameValue{}, - }, - { - Name: "No change", - Old: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ - map[string]interface{}{ - names.AttrName: "reserved-memory", - names.AttrValue: "0", - }, - }), - New: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ - map[string]interface{}{ - names.AttrName: "reserved-memory", - names.AttrValue: "0", - }, - }), - ExpectedRemove: []*awstypes.ParameterNameValue{}, - ExpectedAddOrUpdate: []*awstypes.ParameterNameValue{}, - }, - { - Name: "Remove partial", - Old: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ - map[string]interface{}{ - names.AttrName: "reserved-memory", - names.AttrValue: "0", - }, - map[string]interface{}{ - names.AttrName: "appendonly", - names.AttrValue: "yes", - }, - }), - New: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ - map[string]interface{}{ - names.AttrName: "appendonly", - names.AttrValue: "yes", - }, - }), - ExpectedRemove: []*awstypes.ParameterNameValue{ - { - ParameterName: aws.String("reserved-memory"), - ParameterValue: aws.String("0"), - }, - }, - ExpectedAddOrUpdate: []*awstypes.ParameterNameValue{}, - }, - { - Name: "Add to existing", - Old: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ - map[string]interface{}{ - names.AttrName: "appendonly", - names.AttrValue: "yes", - }, - }), - New: schema.NewSet(tfmemorydb.ParameterHash, []interface{}{ - map[string]interface{}{ - names.AttrName: "appendonly", - names.AttrValue: "yes", - }, - map[string]interface{}{ - names.AttrName: "appendfsync", - names.AttrValue: "always", - }, - }), - ExpectedRemove: []*awstypes.ParameterNameValue{}, - ExpectedAddOrUpdate: []*awstypes.ParameterNameValue{ - { - ParameterName: aws.String("appendfsync"), - ParameterValue: aws.String("always"), - }, - }, - }, - } - - for _, tc := range cases { - remove, addOrUpdate := tfmemorydb.ParameterChanges(tc.Old, tc.New) - if !reflect.DeepEqual(remove, tc.ExpectedRemove) { - t.Errorf("Case %q: Remove did not match\n%#v\n\nGot:\n%#v", tc.Name, tc.ExpectedRemove, remove) - } - if !reflect.DeepEqual(addOrUpdate, tc.ExpectedAddOrUpdate) { - t.Errorf("Case %q: AddOrUpdate did not match\n%#v\n\nGot:\n%#v", tc.Name, tc.ExpectedAddOrUpdate, addOrUpdate) - } - } -} From 42429096ce4dfedb2ecdc3ddf1df0df2d6c096c5 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 25 Nov 2024 15:06:40 -0500 Subject: [PATCH 103/118] 'aws_iam_organization_features' -> 'aws_iam_organizations_features'. --- .changelog/40164.txt | 2 +- internal/service/iam/exports_test.go | 1 + ..._features.go => organizations_features.go} | 22 +++---- ...test.go => organizations_features_test.go} | 22 +++---- internal/service/iam/service_package_gen.go | 8 +-- .../r/iam_organization_features.html.markdown | 58 ------------------- .../iam_organizations_features.html.markdown | 58 +++++++++++++++++++ 7 files changed, 86 insertions(+), 85 deletions(-) rename internal/service/iam/{organization_features.go => organizations_features.go} (84%) rename internal/service/iam/{organization_features_test.go => organizations_features_test.go} (77%) delete mode 100644 website/docs/r/iam_organization_features.html.markdown create mode 100644 website/docs/r/iam_organizations_features.html.markdown diff --git a/.changelog/40164.txt b/.changelog/40164.txt index 80ec3b01777..34a1c10947f 100644 --- a/.changelog/40164.txt +++ b/.changelog/40164.txt @@ -1,3 +1,3 @@ ```release-note:new-resource -aws_iam_organization_features +aws_iam_organizations_features ``` diff --git a/internal/service/iam/exports_test.go b/internal/service/iam/exports_test.go index 41cd72221c9..1bd5afbbf7c 100644 --- a/internal/service/iam/exports_test.go +++ b/internal/service/iam/exports_test.go @@ -14,6 +14,7 @@ var ( ResourceGroupPolicyAttachment = resourceGroupPolicyAttachment ResourceInstanceProfile = resourceInstanceProfile ResourceOpenIDConnectProvider = resourceOpenIDConnectProvider + ResourceOrganizationsFeatures = newOrganizationsFeaturesResource ResourcePolicy = resourcePolicy ResourcePolicyAttachment = resourcePolicyAttachment ResourceRolePolicy = resourceRolePolicy diff --git a/internal/service/iam/organization_features.go b/internal/service/iam/organizations_features.go similarity index 84% rename from internal/service/iam/organization_features.go rename to internal/service/iam/organizations_features.go index fc2b8a4cf36..6ccc06f32eb 100644 --- a/internal/service/iam/organization_features.go +++ b/internal/service/iam/organizations_features.go @@ -22,9 +22,9 @@ import ( "github.com/hashicorp/terraform-provider-aws/names" ) -// @FrameworkResource("aws_iam_organization_features", name="Organization Features") -func newResourceOrganizationFeatures(_ context.Context) (resource.ResourceWithConfigure, error) { - r := &resourceOrganizationFeatures{} +// @FrameworkResource("aws_iam_organizations_features", name="Organizations Features") +func newOrganizationsFeaturesResource(context.Context) (resource.ResourceWithConfigure, error) { + r := &organizationsFeaturesResource{} return r, nil } @@ -32,15 +32,15 @@ const ( ResNameOrganizationFeatures = "IAM Organization Features" ) -type resourceOrganizationFeatures struct { +type organizationsFeaturesResource struct { framework.ResourceWithConfigure } -func (r *resourceOrganizationFeatures) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { +func (*organizationsFeaturesResource) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { resp.TypeName = "aws_iam_organization_features" } -func (r *resourceOrganizationFeatures) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { +func (r *organizationsFeaturesResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { resp.Schema = schema.Schema{ Attributes: map[string]schema.Attribute{ names.AttrID: schema.StringAttribute{ @@ -60,7 +60,7 @@ func (r *resourceOrganizationFeatures) Schema(ctx context.Context, req resource. } } -func (r *resourceOrganizationFeatures) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { +func (r *organizationsFeaturesResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { conn := r.Meta().IAMClient(ctx) var plan resourceOrganizationFeaturesModel @@ -92,7 +92,7 @@ func (r *resourceOrganizationFeatures) Create(ctx context.Context, req resource. resp.Diagnostics.Append(resp.State.Set(ctx, plan)...) } -func (r *resourceOrganizationFeatures) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { +func (r *organizationsFeaturesResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { conn := r.Meta().IAMClient(ctx) var state resourceOrganizationFeaturesModel @@ -119,7 +119,7 @@ func (r *resourceOrganizationFeatures) Read(ctx context.Context, req resource.Re resp.Diagnostics.Append(resp.State.Set(ctx, &state)...) } -func (r *resourceOrganizationFeatures) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { +func (r *organizationsFeaturesResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { conn := r.Meta().IAMClient(ctx) var plan, state resourceOrganizationFeaturesModel @@ -152,7 +152,7 @@ func (r *resourceOrganizationFeatures) Update(ctx context.Context, req resource. resp.Diagnostics.Append(resp.State.Set(ctx, &plan)...) } -func (r *resourceOrganizationFeatures) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { +func (r *organizationsFeaturesResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { conn := r.Meta().IAMClient(ctx) var state resourceOrganizationFeaturesModel @@ -175,7 +175,7 @@ func (r *resourceOrganizationFeatures) Delete(ctx context.Context, req resource. } } -func (r *resourceOrganizationFeatures) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { +func (r *organizationsFeaturesResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { resource.ImportStatePassthroughID(ctx, path.Root(names.AttrID), req, resp) } diff --git a/internal/service/iam/organization_features_test.go b/internal/service/iam/organizations_features_test.go similarity index 77% rename from internal/service/iam/organization_features_test.go rename to internal/service/iam/organizations_features_test.go index cf46f21570f..54c18b2941c 100644 --- a/internal/service/iam/organization_features_test.go +++ b/internal/service/iam/organizations_features_test.go @@ -20,7 +20,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/names" ) -func TestAccIAMOrganizationFeatures_basic(t *testing.T) { +func TestAccIAMOrganizationsFeatures_basic(t *testing.T) { ctx := acctest.Context(t) var organizationfeatures iam.ListOrganizationsFeaturesOutput resourceName := "aws_iam_organization_features.test" @@ -33,12 +33,12 @@ func TestAccIAMOrganizationFeatures_basic(t *testing.T) { }, ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, - CheckDestroy: testAccCheckOrganizationFeaturesDestroy(ctx), + CheckDestroy: testAccCheckOrganizationsFeaturesDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccOrganizationFeaturesConfig_basic([]string{"RootCredentialsManagement", "RootSessions"}), + Config: testAccOrganizationsFeaturesConfig_basic([]string{"RootCredentialsManagement", "RootSessions"}), Check: resource.ComposeTestCheckFunc( - testAccCheckOrganizationFeaturesExists(ctx, resourceName, &organizationfeatures), + testAccCheckOrganizationsFeaturesExists(ctx, resourceName, &organizationfeatures), resource.TestCheckResourceAttr(resourceName, "features.0", "RootCredentialsManagement"), resource.TestCheckResourceAttr(resourceName, "features.1", "RootSessions"), ), @@ -49,9 +49,9 @@ func TestAccIAMOrganizationFeatures_basic(t *testing.T) { ImportStateVerify: false, }, { - Config: testAccOrganizationFeaturesConfig_basic([]string{"RootCredentialsManagement"}), + Config: testAccOrganizationsFeaturesConfig_basic([]string{"RootCredentialsManagement"}), Check: resource.ComposeTestCheckFunc( - testAccCheckOrganizationFeaturesExists(ctx, resourceName, &organizationfeatures), + testAccCheckOrganizationsFeaturesExists(ctx, resourceName, &organizationfeatures), resource.TestCheckResourceAttr(resourceName, "features.0", "RootCredentialsManagement"), ), }, { @@ -60,9 +60,9 @@ func TestAccIAMOrganizationFeatures_basic(t *testing.T) { ImportStateVerify: false, }, { - Config: testAccOrganizationFeaturesConfig_basic([]string{"RootSessions"}), + Config: testAccOrganizationsFeaturesConfig_basic([]string{"RootSessions"}), Check: resource.ComposeTestCheckFunc( - testAccCheckOrganizationFeaturesExists(ctx, resourceName, &organizationfeatures), + testAccCheckOrganizationsFeaturesExists(ctx, resourceName, &organizationfeatures), resource.TestCheckResourceAttr(resourceName, "features.0", "RootSessions"), ), }, @@ -70,7 +70,7 @@ func TestAccIAMOrganizationFeatures_basic(t *testing.T) { }) } -func testAccCheckOrganizationFeaturesDestroy(ctx context.Context) resource.TestCheckFunc { +func testAccCheckOrganizationsFeaturesDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { conn := acctest.Provider.Meta().(*conns.AWSClient).IAMClient(ctx) @@ -94,7 +94,7 @@ func testAccCheckOrganizationFeaturesDestroy(ctx context.Context) resource.TestC } } -func testAccCheckOrganizationFeaturesExists(ctx context.Context, name string, organizationfeatures *iam.ListOrganizationsFeaturesOutput) resource.TestCheckFunc { +func testAccCheckOrganizationsFeaturesExists(ctx context.Context, name string, organizationfeatures *iam.ListOrganizationsFeaturesOutput) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[name] if !ok { @@ -113,7 +113,7 @@ func testAccCheckOrganizationFeaturesExists(ctx context.Context, name string, or } } -func testAccOrganizationFeaturesConfig_basic(features []string) string { +func testAccOrganizationsFeaturesConfig_basic(features []string) string { return fmt.Sprintf(` resource "aws_iam_organization_features" "test" { features = [%[1]s] diff --git a/internal/service/iam/service_package_gen.go b/internal/service/iam/service_package_gen.go index 1f2f876168c..d16f91c483a 100644 --- a/internal/service/iam/service_package_gen.go +++ b/internal/service/iam/service_package_gen.go @@ -20,6 +20,10 @@ func (p *servicePackage) FrameworkDataSources(ctx context.Context) []*types.Serv func (p *servicePackage) FrameworkResources(ctx context.Context) []*types.ServicePackageFrameworkResource { return []*types.ServicePackageFrameworkResource{ + { + Factory: newOrganizationsFeaturesResource, + Name: "Organizations Features", + }, { Factory: newResourceGroupPoliciesExclusive, Name: "Group Policies Exclusive", @@ -28,10 +32,6 @@ func (p *servicePackage) FrameworkResources(ctx context.Context) []*types.Servic Factory: newResourceGroupPolicyAttachmentsExclusive, Name: "Group Policy Attachments Exclusive", }, - { - Factory: newResourceOrganizationFeatures, - Name: "Organization Features", - }, { Factory: newResourceRolePoliciesExclusive, Name: "Role Policies Exclusive", diff --git a/website/docs/r/iam_organization_features.html.markdown b/website/docs/r/iam_organization_features.html.markdown deleted file mode 100644 index 110de505444..00000000000 --- a/website/docs/r/iam_organization_features.html.markdown +++ /dev/null @@ -1,58 +0,0 @@ ---- -subcategory: "IAM (Identity & Access Management)" -layout: "aws" -page_title: "AWS: aws_iam_organization_features" -description: |- - Terraform resource for managing an AWS IAM (Identity & Access Management) Organization Features. ---- - -# Resource: aws_iam_organization_features - -Manages a IAM Organization Features for centralized root access for member accounts.. More information about managing root access in IAM can be found in the [Centralize root access for member accounts](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-enable-root-access.html). - -~> **NOTE:** Before managing IAM Organization features, the AWS account utilizing this resource must be an Organizations management account. Also, you must enable trusted access for AWS Identity and Access Management in AWS Organizations. - -## Example Usage - -```terraform -resource "aws_organizations_organization" "example" { - aws_service_access_principals = ["iam.amazonaws.com"] - feature_set = "ALL" -} - -resource "aws_iam_organization_features" "example" { - features = [ - "RootCredentialsManagement", - "RootSessions" - ] -} -``` - -## Argument Reference - -The following arguments are required: - -* `features` - (Required) List of IAM features to enable. Valid values are `RootCredentialsManagement` and `RootSessions` - -## Attribute Reference - -This resource exports the following attributes in addition to the arguments above: - -* `id` - AWS Organization identifier. - -## Import - -In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import IAM (Identity & Access Management) Organization Features using the `id`. For example: - -```terraform -import { - to = aws_iam_organization_features.example - id = "o-1234567" -} -``` - -Using `terraform import`, import IAM (Identity & Access Management) Organization Features using the `id`. For example: - -```console -% terraform import aws_iam_organization_features.example o-1234567 -``` diff --git a/website/docs/r/iam_organizations_features.html.markdown b/website/docs/r/iam_organizations_features.html.markdown new file mode 100644 index 00000000000..8b738d354c3 --- /dev/null +++ b/website/docs/r/iam_organizations_features.html.markdown @@ -0,0 +1,58 @@ +--- +subcategory: "IAM (Identity & Access Management)" +layout: "aws" +page_title: "AWS: aws_iam_organizations_features" +description: |- + Manages centralized root access features. +--- + +# Resource: aws_iam_organizations_features + +Manages centralized root access features across AWS member accounts managed using AWS Organizations. More information about managing root access in IAM can be found in the [Centralize root access for member accounts](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-enable-root-access.html). + +~> **NOTE:** The AWS account utilizing this resource must be an Organizations management account. Also, you must enable trusted access for AWS Identity and Access Management in AWS Organizations. + +## Example Usage + +```terraform +resource "aws_organizations_organization" "example" { + aws_service_access_principals = ["iam.amazonaws.com"] + feature_set = "ALL" +} + +resource "aws_iam_organizations_features" "example" { + features = [ + "RootCredentialsManagement", + "RootSessions" + ] +} +``` + +## Argument Reference + +The following arguments are required: + +* `features` - (Required) List of IAM features to enable. Valid values are `RootCredentialsManagement` and `RootSessions`. + +## Attribute Reference + +This resource exports the following attributes in addition to the arguments above: + +* `id` - AWS Organization identifier. + +## Import + +In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import root access features using the `id`. For example: + +```terraform +import { + to = aws_iam_organizations_features.example + id = "o-1234567" +} +``` + +Using `terraform import`, import root access features using the `id`. For example: + +```console +% terraform import aws_iam_organizations_features.example o-1234567 +``` From 0958acff8e288172b12307fed9f059ee75a1b46a Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 25 Nov 2024 15:22:57 -0500 Subject: [PATCH 104/118] 'PreCheckOrganizationsTrustedServicePrincipalAccess' -> 'PreCheckOrganizationsEnabledServicePrincipal'. --- internal/acctest/acctest.go | 33 +++++++------------ .../iam/organizations_features_test.go | 2 +- 2 files changed, 13 insertions(+), 22 deletions(-) diff --git a/internal/acctest/acctest.go b/internal/acctest/acctest.go index 7f1835ac5e7..231d50bbeb6 100644 --- a/internal/acctest/acctest.go +++ b/internal/acctest/acctest.go @@ -12,8 +12,8 @@ import ( "net" "os" "os/exec" - "reflect" "regexp" + "slices" "strconv" "strings" "sync" @@ -31,10 +31,8 @@ import ( dstypes "github.com/aws/aws-sdk-go-v2/service/directoryservice/types" ec2types "github.com/aws/aws-sdk-go-v2/service/ec2/types" "github.com/aws/aws-sdk-go-v2/service/iam" - iamtypes "github.com/aws/aws-sdk-go-v2/service/iam/types" "github.com/aws/aws-sdk-go-v2/service/inspector2" inspector2types "github.com/aws/aws-sdk-go-v2/service/inspector2/types" - "github.com/aws/aws-sdk-go-v2/service/organizations" organizationstypes "github.com/aws/aws-sdk-go-v2/service/organizations/types" "github.com/aws/aws-sdk-go-v2/service/outposts" "github.com/aws/aws-sdk-go-v2/service/pinpoint" @@ -1123,25 +1121,18 @@ func PreCheckOrganizationsEnabled(ctx context.Context, t *testing.T) *organizati return PreCheckOrganizationsEnabledWithProvider(ctx, t, func() *schema.Provider { return Provider }) } -func PreCheckOrganizationsTrustedServicePrincipalAccess(ctx context.Context, t *testing.T, servicePrincipal string) { +func PreCheckOrganizationsEnabledServicePrincipal(ctx context.Context, t *testing.T, servicePrincipalName string) { t.Helper() - conn := Provider.Meta().(*conns.AWSClient).OrganizationsClient(ctx) + servicePrincipalNames, err := tforganizations.FindEnabledServicePrincipalNames(ctx, Provider.Meta().(*conns.AWSClient).OrganizationsClient(ctx)) - paginator := organizations.NewListAWSServiceAccessForOrganizationPaginator(conn, &organizations.ListAWSServiceAccessForOrganizationInput{}) - for paginator.HasMorePages() { - page, err := paginator.NextPage(ctx) - if err != nil { - t.Fatalf("Listing AWS Organization Service Access: %s", err) - } + if err != nil { + t.Fatalf("reading Organization service principals: %s", err) + } - for _, service := range page.EnabledServicePrincipals { - if aws.ToString(service.ServicePrincipal) == servicePrincipal { - return - } - } + if !slices.Contains(servicePrincipalNames, servicePrincipalName) { + t.Skipf("trusted access for %s must be enabled in AWS Organizations", servicePrincipalName) } - t.Skipf("skipping tests; The AWS Organization service principal trusted access for %s must be enabled.", servicePrincipal) } func PreCheckOrganizationsEnabledWithProvider(ctx context.Context, t *testing.T, providerF ProviderFunc) *organizationstypes.Organization { @@ -1292,7 +1283,7 @@ func PreCheckIAMServiceLinkedRoleWithProvider(ctx context.Context, t *testing.T, input := &iam.ListRolesInput{ PathPrefix: aws.String(pathPrefix), } - var role iamtypes.Role + var roleFound bool pages := iam.NewListRolesPaginator(conn, input) for pages.HasMorePages() { @@ -1304,13 +1295,13 @@ func PreCheckIAMServiceLinkedRoleWithProvider(ctx context.Context, t *testing.T, t.Fatalf("listing IAM roles: %s", err) } - for _, r := range page.Roles { - role = r + if len(page.Roles) > 0 { + roleFound = true break } } - if reflect.ValueOf(role).IsZero() { + if !roleFound { t.Skipf("skipping tests; missing IAM service-linked role %s. Please create the role and retry", pathPrefix) } } diff --git a/internal/service/iam/organizations_features_test.go b/internal/service/iam/organizations_features_test.go index 54c18b2941c..f27803302e9 100644 --- a/internal/service/iam/organizations_features_test.go +++ b/internal/service/iam/organizations_features_test.go @@ -29,7 +29,7 @@ func TestAccIAMOrganizationsFeatures_basic(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckOrganizationsEnabled(ctx, t) - acctest.PreCheckOrganizationsTrustedServicePrincipalAccess(ctx, t, "iam.amazonaws.com") + acctest.PreCheckOrganizationsEnabledServicePrincipal(ctx, t, "iam.amazonaws.com") }, ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, From de609fb8fb21cc8d124cd70fb38762246433e56c Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 25 Nov 2024 17:12:21 -0500 Subject: [PATCH 105/118] r/aws_iam_organizations_features: Tidy up. --- internal/service/iam/exports_test.go | 1 + .../service/iam/organizations_features.go | 255 +++++++++++------- .../iam/organizations_features_test.go | 134 ++++++--- .../iam_organizations_features.html.markdown | 4 +- 4 files changed, 265 insertions(+), 129 deletions(-) diff --git a/internal/service/iam/exports_test.go b/internal/service/iam/exports_test.go index 1bd5afbbf7c..d75fb25008c 100644 --- a/internal/service/iam/exports_test.go +++ b/internal/service/iam/exports_test.go @@ -46,6 +46,7 @@ var ( FindGroupPolicyAttachmentsByName = findGroupPolicyAttachmentsByName FindInstanceProfileByName = findInstanceProfileByName FindOpenIDConnectProviderByARN = findOpenIDConnectProviderByARN + FindOrganizationsFeatures = findOrganizationsFeatures FindPolicyByARN = findPolicyByARN FindRolePoliciesByName = findRolePoliciesByName FindRolePolicyAttachmentsByName = findRolePolicyAttachmentsByName diff --git a/internal/service/iam/organizations_features.go b/internal/service/iam/organizations_features.go index 6ccc06f32eb..7839636612d 100644 --- a/internal/service/iam/organizations_features.go +++ b/internal/service/iam/organizations_features.go @@ -5,183 +5,201 @@ package iam import ( "context" + "fmt" "slices" "github.com/aws/aws-sdk-go-v2/service/iam" awstypes "github.com/aws/aws-sdk-go-v2/service/iam/types" - "github.com/hashicorp/terraform-plugin-framework-validators/setvalidator" - "github.com/hashicorp/terraform-plugin-framework/path" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/resource/schema" - "github.com/hashicorp/terraform-plugin-framework/schema/validator" "github.com/hashicorp/terraform-plugin-framework/types" - "github.com/hashicorp/terraform-provider-aws/internal/create" - "github.com/hashicorp/terraform-provider-aws/internal/enum" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" + "github.com/hashicorp/terraform-provider-aws/internal/errs" + "github.com/hashicorp/terraform-provider-aws/internal/errs/fwdiag" "github.com/hashicorp/terraform-provider-aws/internal/framework" - "github.com/hashicorp/terraform-provider-aws/internal/framework/flex" + fwflex "github.com/hashicorp/terraform-provider-aws/internal/framework/flex" + fwtypes "github.com/hashicorp/terraform-provider-aws/internal/framework/types" + "github.com/hashicorp/terraform-provider-aws/internal/tfresource" + itypes "github.com/hashicorp/terraform-provider-aws/internal/types" "github.com/hashicorp/terraform-provider-aws/names" ) // @FrameworkResource("aws_iam_organizations_features", name="Organizations Features") func newOrganizationsFeaturesResource(context.Context) (resource.ResourceWithConfigure, error) { r := &organizationsFeaturesResource{} + return r, nil } -const ( - ResNameOrganizationFeatures = "IAM Organization Features" -) - type organizationsFeaturesResource struct { framework.ResourceWithConfigure + framework.WithImportByID } -func (*organizationsFeaturesResource) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { - resp.TypeName = "aws_iam_organization_features" +func (*organizationsFeaturesResource) Metadata(_ context.Context, request resource.MetadataRequest, response *resource.MetadataResponse) { + response.TypeName = "aws_iam_organizations_features" } -func (r *organizationsFeaturesResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { - resp.Schema = schema.Schema{ +func (r *organizationsFeaturesResource) Schema(ctx context.Context, request resource.SchemaRequest, response *resource.SchemaResponse) { + response.Schema = schema.Schema{ Attributes: map[string]schema.Attribute{ - names.AttrID: schema.StringAttribute{ - Computed: true, - }, - "features": schema.SetAttribute{ - ElementType: types.StringType, + "enabled_features": schema.SetAttribute{ + CustomType: fwtypes.NewSetTypeOf[fwtypes.StringEnum[awstypes.FeatureType]](ctx), Required: true, - Validators: []validator.Set{ - setvalidator.SizeAtLeast(1), - setvalidator.ValueStringsAre( - enum.FrameworkValidate[awstypes.FeatureType](), - ), - }, + ElementType: fwtypes.StringEnumType[awstypes.FeatureType](), }, + names.AttrID: framework.IDAttribute(), }, } } -func (r *organizationsFeaturesResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { +func (r *organizationsFeaturesResource) Create(ctx context.Context, request resource.CreateRequest, response *resource.CreateResponse) { + var data organizationsFeaturesResourceModel + response.Diagnostics.Append(request.Plan.Get(ctx, &data)...) + if response.Diagnostics.HasError() { + return + } + conn := r.Meta().IAMClient(ctx) - var plan resourceOrganizationFeaturesModel - resp.Diagnostics.Append(req.Plan.Get(ctx, &plan)...) - if resp.Diagnostics.HasError() { + var enabledFeatures []awstypes.FeatureType + response.Diagnostics.Append(fwflex.Expand(ctx, data.EnabledFeatures, &enabledFeatures)...) + if response.Diagnostics.HasError() { return } - var planFeatures []string - resp.Diagnostics.Append(plan.EnabledFeatures.ElementsAs(ctx, &planFeatures, false)...) - if resp.Diagnostics.HasError() { + if err := updateOrganizationFeatures(ctx, conn, enabledFeatures, []awstypes.FeatureType{}); err != nil { + response.Diagnostics.AddError("creating IAM Organizations Features", err.Error()) + return } - out, err := manageOrganizationFeatures(ctx, conn, planFeatures, []string{}) + output, err := findOrganizationsFeatures(ctx, conn) + if err != nil { - resp.Diagnostics.AddError( - create.ProblemStandardMessage(names.IAM, create.ErrActionCreating, ResNameOrganizationFeatures, plan.OrganizationId.String(), err), - err.Error(), - ) - return - } + response.Diagnostics.AddError("reading IAM Organizations Features", err.Error()) - resp.Diagnostics.Append(flex.Flatten(ctx, out, &plan)...) - if resp.Diagnostics.HasError() { return } - resp.Diagnostics.Append(resp.State.Set(ctx, plan)...) + // Set values for unknowns. + data.OrganizationID = fwflex.StringToFramework(ctx, output.OrganizationId) + + response.Diagnostics.Append(response.State.Set(ctx, data)...) } -func (r *organizationsFeaturesResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { +func (r *organizationsFeaturesResource) Read(ctx context.Context, request resource.ReadRequest, response *resource.ReadResponse) { + var data organizationsFeaturesResourceModel + response.Diagnostics.Append(request.State.Get(ctx, &data)...) + if response.Diagnostics.HasError() { + return + } + conn := r.Meta().IAMClient(ctx) - var state resourceOrganizationFeaturesModel - resp.Diagnostics.Append(req.State.Get(ctx, &state)...) - if resp.Diagnostics.HasError() { + output, err := findOrganizationsFeatures(ctx, conn) + + if tfresource.NotFound(err) { + response.Diagnostics.Append(fwdiag.NewResourceNotFoundWarningDiagnostic(err)) + response.State.RemoveResource(ctx) + return } - var input iam.ListOrganizationsFeaturesInput - out, err := conn.ListOrganizationsFeatures(ctx, &input) if err != nil { - resp.Diagnostics.AddError( - create.ProblemStandardMessage(names.IAM, create.ErrActionReading, ResNameOrganizationFeatures, "", err), - err.Error(), - ) + response.Diagnostics.AddError(fmt.Sprintf("reading IAM Organizations Features (%s)", data.OrganizationID.ValueString()), err.Error()) + return } - resp.Diagnostics.Append(flex.Flatten(ctx, out, &state)...) - if resp.Diagnostics.HasError() { + response.Diagnostics.Append(fwflex.Flatten(ctx, output.EnabledFeatures, &data.EnabledFeatures)...) + if response.Diagnostics.HasError() { return } - resp.Diagnostics.Append(resp.State.Set(ctx, &state)...) + response.Diagnostics.Append(response.State.Set(ctx, &data)...) } -func (r *organizationsFeaturesResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { - conn := r.Meta().IAMClient(ctx) - - var plan, state resourceOrganizationFeaturesModel - resp.Diagnostics.Append(req.Plan.Get(ctx, &plan)...) - resp.Diagnostics.Append(req.State.Get(ctx, &state)...) - if resp.Diagnostics.HasError() { +func (r *organizationsFeaturesResource) Update(ctx context.Context, request resource.UpdateRequest, response *resource.UpdateResponse) { + var old, new organizationsFeaturesResourceModel + response.Diagnostics.Append(request.Plan.Get(ctx, &new)...) + if response.Diagnostics.HasError() { + return + } + response.Diagnostics.Append(request.State.Get(ctx, &old)...) + if response.Diagnostics.HasError() { return } - var stateFeatures, planFeatures []string - resp.Diagnostics.Append(plan.EnabledFeatures.ElementsAs(ctx, &planFeatures, false)...) - if resp.Diagnostics.HasError() { + var oldFeatures, newFeatures []awstypes.FeatureType + response.Diagnostics.Append(fwflex.Expand(ctx, old.EnabledFeatures, &oldFeatures)...) + if response.Diagnostics.HasError() { return } - resp.Diagnostics.Append(state.EnabledFeatures.ElementsAs(ctx, &stateFeatures, false)...) - if resp.Diagnostics.HasError() { + response.Diagnostics.Append(fwflex.Expand(ctx, new.EnabledFeatures, &newFeatures)...) + if response.Diagnostics.HasError() { return } - out, err := manageOrganizationFeatures(ctx, conn, planFeatures, stateFeatures) - if err != nil { - resp.Diagnostics.AddError( - create.ProblemStandardMessage(names.IAM, create.ErrActionCreating, ResNameOrganizationFeatures, plan.OrganizationId.String(), err), - err.Error(), - ) + conn := r.Meta().IAMClient(ctx) + + if err := updateOrganizationFeatures(ctx, conn, newFeatures, oldFeatures); err != nil { + response.Diagnostics.AddError(fmt.Sprintf("updating IAM Organizations Features (%s)", new.OrganizationID.ValueString()), err.Error()) + return } - plan.OrganizationId = flex.StringToFramework(ctx, out.OrganizationId) - resp.Diagnostics.Append(resp.State.Set(ctx, &plan)...) + response.Diagnostics.Append(response.State.Set(ctx, &new)...) } -func (r *organizationsFeaturesResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { - conn := r.Meta().IAMClient(ctx) - - var state resourceOrganizationFeaturesModel - resp.Diagnostics.Append(req.State.Get(ctx, &state)...) - if resp.Diagnostics.HasError() { +func (r *organizationsFeaturesResource) Delete(ctx context.Context, request resource.DeleteRequest, response *resource.DeleteResponse) { + var data organizationsFeaturesResourceModel + response.Diagnostics.Append(request.State.Get(ctx, &data)...) + if response.Diagnostics.HasError() { return } - var stateFeatures []string - resp.Diagnostics.Append(state.EnabledFeatures.ElementsAs(ctx, &stateFeatures, false)...) - if resp.Diagnostics.HasError() { + + conn := r.Meta().IAMClient(ctx) + + var enabledFeatures []awstypes.FeatureType + response.Diagnostics.Append(fwflex.Expand(ctx, data.EnabledFeatures, &enabledFeatures)...) + if response.Diagnostics.HasError() { return } - _, err := manageOrganizationFeatures(ctx, conn, []string{}, stateFeatures) - if err != nil { - resp.Diagnostics.AddError( - create.ProblemStandardMessage(names.IAM, create.ErrActionDeleting, ResNameOrganizationFeatures, state.OrganizationId.String(), err), - err.Error(), - ) + + if err := updateOrganizationFeatures(ctx, conn, []awstypes.FeatureType{}, enabledFeatures); err != nil { + response.Diagnostics.AddError(fmt.Sprintf("deleting IAM Organizations Features (%s)", data.OrganizationID.ValueString()), err.Error()) + return } } -func (r *organizationsFeaturesResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { - resource.ImportStatePassthroughID(ctx, path.Root(names.AttrID), req, resp) +type organizationsFeaturesResourceModel struct { + EnabledFeatures fwtypes.SetValueOf[fwtypes.StringEnum[awstypes.FeatureType]] `tfsdk:"enabled_features"` + OrganizationID types.String `tfsdk:"id"` } -type resourceOrganizationFeaturesModel struct { - OrganizationId types.String `tfsdk:"id"` - EnabledFeatures types.Set `tfsdk:"features"` +func findOrganizationsFeatures(ctx context.Context, conn *iam.Client) (*iam.ListOrganizationsFeaturesOutput, error) { + input := &iam.ListOrganizationsFeaturesInput{} + + output, err := conn.ListOrganizationsFeatures(ctx, input) + + if errs.IsA[*awstypes.OrganizationNotFoundException](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: input, + } + } + + if err != nil { + return nil, err + } + + if output == nil || len(output.EnabledFeatures) == 0 { + return nil, tfresource.NewEmptyResultError(input) + } + + return output, nil } func manageOrganizationFeatures(ctx context.Context, conn *iam.Client, planFeatures, stateFeatures []string) (*iam.ListOrganizationsFeaturesOutput, error) { @@ -231,3 +249,50 @@ func manageOrganizationFeatures(ctx context.Context, conn *iam.Client, planFeatu } return out, nil } + +func updateOrganizationFeatures(ctx context.Context, conn *iam.Client, new, old []awstypes.FeatureType) error { + toEnable := itypes.Set[awstypes.FeatureType](new).Difference(old) + toDisable := itypes.Set[awstypes.FeatureType](old).Difference(new) + + if slices.Contains(toEnable, awstypes.FeatureTypeRootCredentialsManagement) { + input := &iam.EnableOrganizationsRootCredentialsManagementInput{} + + _, err := conn.EnableOrganizationsRootCredentialsManagement(ctx, input) + + if err != nil { + return fmt.Errorf("enabling Organizations root credentials management: %w", err) + } + } + + if slices.Contains(toEnable, awstypes.FeatureTypeRootSessions) { + input := &iam.EnableOrganizationsRootSessionsInput{} + + _, err := conn.EnableOrganizationsRootSessions(ctx, input) + + if err != nil { + return fmt.Errorf("enabling Organizations root sessions: %w", err) + } + } + + if slices.Contains(toDisable, awstypes.FeatureTypeRootCredentialsManagement) { + input := &iam.DisableOrganizationsRootCredentialsManagementInput{} + + _, err := conn.DisableOrganizationsRootCredentialsManagement(ctx, input) + + if err != nil { + return fmt.Errorf("disabling Organizations root credentials management: %w", err) + } + } + + if slices.Contains(toDisable, awstypes.FeatureTypeRootSessions) { + input := &iam.DisableOrganizationsRootSessionsInput{} + + _, err := conn.DisableOrganizationsRootSessions(ctx, input) + + if err != nil { + return fmt.Errorf("disabling Organizations root sessions: %w", err) + } + } + + return nil +} diff --git a/internal/service/iam/organizations_features_test.go b/internal/service/iam/organizations_features_test.go index f27803302e9..8e477160777 100644 --- a/internal/service/iam/organizations_features_test.go +++ b/internal/service/iam/organizations_features_test.go @@ -5,30 +5,42 @@ package iam_test import ( "context" - "errors" "fmt" "strings" "testing" - "github.com/aws/aws-sdk-go-v2/service/iam" "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/knownvalue" + "github.com/hashicorp/terraform-plugin-testing/statecheck" "github.com/hashicorp/terraform-plugin-testing/terraform" + "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" "github.com/hashicorp/terraform-provider-aws/internal/acctest" "github.com/hashicorp/terraform-provider-aws/internal/conns" - "github.com/hashicorp/terraform-provider-aws/internal/create" tfiam "github.com/hashicorp/terraform-provider-aws/internal/service/iam" + "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/names" ) -func TestAccIAMOrganizationsFeatures_basic(t *testing.T) { +func TestAccIAMOrganizationsFeatures_serial(t *testing.T) { + t.Parallel() + + testCases := map[string]func(t *testing.T){ + acctest.CtBasic: testAccOrganizationsFeatures_basic, + acctest.CtDisappears: testAccOrganizationsFeatures_disappears, + "update": testAccOrganizationsFeatures_update, + } + + acctest.RunSerialTests1Level(t, testCases, 0) +} + +func testAccOrganizationsFeatures_basic(t *testing.T) { ctx := acctest.Context(t) - var organizationfeatures iam.ListOrganizationsFeaturesOutput resourceName := "aws_iam_organization_features.test" - resource.ParallelTest(t, resource.TestCase{ + resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckOrganizationsEnabled(ctx, t) + acctest.PreCheckOrganizationManagementAccount(ctx, t) acctest.PreCheckOrganizationsEnabledServicePrincipal(ctx, t, "iam.amazonaws.com") }, ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), @@ -38,23 +50,78 @@ func TestAccIAMOrganizationsFeatures_basic(t *testing.T) { { Config: testAccOrganizationsFeaturesConfig_basic([]string{"RootCredentialsManagement", "RootSessions"}), Check: resource.ComposeTestCheckFunc( - testAccCheckOrganizationsFeaturesExists(ctx, resourceName, &organizationfeatures), - resource.TestCheckResourceAttr(resourceName, "features.0", "RootCredentialsManagement"), - resource.TestCheckResourceAttr(resourceName, "features.1", "RootSessions"), + testAccCheckOrganizationsFeaturesExists(ctx, resourceName), ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("enabled_features"), knownvalue.SetSizeExact(2)), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("number_capabilities"), knownvalue.SetExact([]knownvalue.Check{ + knownvalue.StringExact("RootCredentialsManagement"), + knownvalue.StringExact("RootSessions"), + })), + }, }, { ResourceName: resourceName, ImportState: true, ImportStateVerify: false, }, + }, + }) +} + +func testAccOrganizationsFeatures_disappears(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_iam_organization_features.test" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckOrganizationManagementAccount(ctx, t) + acctest.PreCheckOrganizationsEnabledServicePrincipal(ctx, t, "iam.amazonaws.com") + }, + ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckOrganizationsFeaturesDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccOrganizationsFeaturesConfig_basic([]string{"RootCredentialsManagement", "RootSessions"}), + Check: resource.ComposeTestCheckFunc( + testAccCheckOrganizationsFeaturesExists(ctx, resourceName), + acctest.CheckFrameworkResourceDisappears(ctx, acctest.Provider, tfiam.ResourceOrganizationsFeatures, resourceName), + ), + ExpectNonEmptyPlan: true, + }, + }, + }) +} + +func testAccOrganizationsFeatures_update(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_iam_organization_features.test" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckOrganizationManagementAccount(ctx, t) + acctest.PreCheckOrganizationsEnabledServicePrincipal(ctx, t, "iam.amazonaws.com") + }, + ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckOrganizationsFeaturesDestroy(ctx), + Steps: []resource.TestStep{ { Config: testAccOrganizationsFeaturesConfig_basic([]string{"RootCredentialsManagement"}), Check: resource.ComposeTestCheckFunc( - testAccCheckOrganizationsFeaturesExists(ctx, resourceName, &organizationfeatures), - resource.TestCheckResourceAttr(resourceName, "features.0", "RootCredentialsManagement"), + testAccCheckOrganizationsFeaturesExists(ctx, resourceName), ), - }, { + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("enabled_features"), knownvalue.SetSizeExact(1)), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("number_capabilities"), knownvalue.SetExact([]knownvalue.Check{ + knownvalue.StringExact("RootCredentialsManagement"), + })), + }, + }, + { ResourceName: resourceName, ImportState: true, ImportStateVerify: false, @@ -62,9 +129,14 @@ func TestAccIAMOrganizationsFeatures_basic(t *testing.T) { { Config: testAccOrganizationsFeaturesConfig_basic([]string{"RootSessions"}), Check: resource.ComposeTestCheckFunc( - testAccCheckOrganizationsFeaturesExists(ctx, resourceName, &organizationfeatures), - resource.TestCheckResourceAttr(resourceName, "features.0", "RootSessions"), + testAccCheckOrganizationsFeaturesExists(ctx, resourceName), ), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("enabled_features"), knownvalue.SetSizeExact(1)), + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("number_capabilities"), knownvalue.SetExact([]knownvalue.Check{ + knownvalue.StringExact("RootSessions"), + })), + }, }, }, }) @@ -75,48 +147,46 @@ func testAccCheckOrganizationsFeaturesDestroy(ctx context.Context) resource.Test conn := acctest.Provider.Meta().(*conns.AWSClient).IAMClient(ctx) for _, rs := range s.RootModule().Resources { - if rs.Type != "aws_iam_organization_features" { + if rs.Type != "aws_iam_organizations_features" { continue } - out, err := conn.ListOrganizationsFeatures(ctx, &iam.ListOrganizationsFeaturesInput{}) - if err != nil { - return create.Error(names.IAM, create.ErrActionCheckingDestroyed, tfiam.ResNameOrganizationFeatures, rs.Primary.Attributes["organization_id"], err) + _, err := tfiam.FindOrganizationsFeatures(ctx, conn) + + if tfresource.NotFound(err) { + continue } - if len(out.EnabledFeatures) == 0 { - return nil + + if err != nil { + return err } - return create.Error(names.IAM, create.ErrActionCheckingDestroyed, tfiam.ResNameOrganizationFeatures, rs.Primary.Attributes["organization_id"], errors.New("not destroyed")) + return fmt.Errorf("IAM Organizations Features %s still exists", rs.Primary.ID) } return nil } } -func testAccCheckOrganizationsFeaturesExists(ctx context.Context, name string, organizationfeatures *iam.ListOrganizationsFeaturesOutput) resource.TestCheckFunc { +func testAccCheckOrganizationsFeaturesExists(ctx context.Context, n string) resource.TestCheckFunc { return func(s *terraform.State) error { - rs, ok := s.RootModule().Resources[name] + _, ok := s.RootModule().Resources[n] if !ok { - return create.Error(names.IAM, create.ErrActionCheckingExistence, tfiam.ResNameOrganizationFeatures, name, errors.New("not found")) + return fmt.Errorf("Not found: %s", n) } conn := acctest.Provider.Meta().(*conns.AWSClient).IAMClient(ctx) - resp, err := conn.ListOrganizationsFeatures(ctx, &iam.ListOrganizationsFeaturesInput{}) - if err != nil { - return create.Error(names.IAM, create.ErrActionCheckingExistence, tfiam.ResNameOrganizationFeatures, rs.Primary.Attributes["organization_id"], err) - } - *organizationfeatures = *resp + _, err := tfiam.FindOrganizationsFeatures(ctx, conn) - return nil + return err } } func testAccOrganizationsFeaturesConfig_basic(features []string) string { return fmt.Sprintf(` resource "aws_iam_organization_features" "test" { - features = [%[1]s] + enabled_features = [%[1]s] } `, fmt.Sprintf(`"%s"`, strings.Join(features, `", "`))) } diff --git a/website/docs/r/iam_organizations_features.html.markdown b/website/docs/r/iam_organizations_features.html.markdown index 8b738d354c3..d3995528a76 100644 --- a/website/docs/r/iam_organizations_features.html.markdown +++ b/website/docs/r/iam_organizations_features.html.markdown @@ -21,7 +21,7 @@ resource "aws_organizations_organization" "example" { } resource "aws_iam_organizations_features" "example" { - features = [ + enabled_features = [ "RootCredentialsManagement", "RootSessions" ] @@ -32,7 +32,7 @@ resource "aws_iam_organizations_features" "example" { The following arguments are required: -* `features` - (Required) List of IAM features to enable. Valid values are `RootCredentialsManagement` and `RootSessions`. +* `enabled_features` - (Required) List of IAM features to enable. Valid values are `RootCredentialsManagement` and `RootSessions`. ## Attribute Reference From 13d37a4455e14ea2d7a3f81c934b9d228d044f59 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 25 Nov 2024 17:23:08 -0500 Subject: [PATCH 106/118] Fix typos. --- .../service/iam/organizations_features_test.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/internal/service/iam/organizations_features_test.go b/internal/service/iam/organizations_features_test.go index 8e477160777..3f84d87ba93 100644 --- a/internal/service/iam/organizations_features_test.go +++ b/internal/service/iam/organizations_features_test.go @@ -35,7 +35,7 @@ func TestAccIAMOrganizationsFeatures_serial(t *testing.T) { func testAccOrganizationsFeatures_basic(t *testing.T) { ctx := acctest.Context(t) - resourceName := "aws_iam_organization_features.test" + resourceName := "aws_iam_organizations_features.test" resource.Test(t, resource.TestCase{ PreCheck: func() { @@ -54,7 +54,7 @@ func testAccOrganizationsFeatures_basic(t *testing.T) { ), ConfigStateChecks: []statecheck.StateCheck{ statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("enabled_features"), knownvalue.SetSizeExact(2)), - statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("number_capabilities"), knownvalue.SetExact([]knownvalue.Check{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("enabled_features"), knownvalue.SetExact([]knownvalue.Check{ knownvalue.StringExact("RootCredentialsManagement"), knownvalue.StringExact("RootSessions"), })), @@ -71,7 +71,7 @@ func testAccOrganizationsFeatures_basic(t *testing.T) { func testAccOrganizationsFeatures_disappears(t *testing.T) { ctx := acctest.Context(t) - resourceName := "aws_iam_organization_features.test" + resourceName := "aws_iam_organizations_features.test" resource.Test(t, resource.TestCase{ PreCheck: func() { @@ -97,7 +97,7 @@ func testAccOrganizationsFeatures_disappears(t *testing.T) { func testAccOrganizationsFeatures_update(t *testing.T) { ctx := acctest.Context(t) - resourceName := "aws_iam_organization_features.test" + resourceName := "aws_iam_organizations_features.test" resource.Test(t, resource.TestCase{ PreCheck: func() { @@ -116,7 +116,7 @@ func testAccOrganizationsFeatures_update(t *testing.T) { ), ConfigStateChecks: []statecheck.StateCheck{ statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("enabled_features"), knownvalue.SetSizeExact(1)), - statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("number_capabilities"), knownvalue.SetExact([]knownvalue.Check{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("enabled_features"), knownvalue.SetExact([]knownvalue.Check{ knownvalue.StringExact("RootCredentialsManagement"), })), }, @@ -133,7 +133,7 @@ func testAccOrganizationsFeatures_update(t *testing.T) { ), ConfigStateChecks: []statecheck.StateCheck{ statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("enabled_features"), knownvalue.SetSizeExact(1)), - statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("number_capabilities"), knownvalue.SetExact([]knownvalue.Check{ + statecheck.ExpectKnownValue(resourceName, tfjsonpath.New("enabled_features"), knownvalue.SetExact([]knownvalue.Check{ knownvalue.StringExact("RootSessions"), })), }, @@ -185,7 +185,7 @@ func testAccCheckOrganizationsFeaturesExists(ctx context.Context, n string) reso func testAccOrganizationsFeaturesConfig_basic(features []string) string { return fmt.Sprintf(` -resource "aws_iam_organization_features" "test" { +resource "aws_iam_organizations_features" "test" { enabled_features = [%[1]s] } `, fmt.Sprintf(`"%s"`, strings.Join(features, `", "`))) From 39d10afce9d5778bf9211930ebad16099759e999 Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Mon, 25 Nov 2024 17:35:12 -0800 Subject: [PATCH 107/118] Converts `content_policy_config.filters_config` to Set --- internal/service/bedrock/guardrail.go | 6 +++--- internal/service/bedrock/guardrail_test.go | 2 ++ website/docs/r/bedrock_guardrail.html.markdown | 3 ++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/internal/service/bedrock/guardrail.go b/internal/service/bedrock/guardrail.go index 04e3c61c219..f2c70aa5a19 100644 --- a/internal/service/bedrock/guardrail.go +++ b/internal/service/bedrock/guardrail.go @@ -135,8 +135,8 @@ func (r *resourceGuardrail) Schema(ctx context.Context, req resource.SchemaReque }, NestedObject: schema.NestedBlockObject{ Blocks: map[string]schema.Block{ - "filters_config": schema.ListNestedBlock{ - CustomType: fwtypes.NewListNestedObjectTypeOf[filtersConfig](ctx), + "filters_config": schema.SetNestedBlock{ + CustomType: fwtypes.NewSetNestedObjectTypeOf[filtersConfig](ctx), NestedObject: schema.NestedBlockObject{ Attributes: map[string]schema.Attribute{ "input_strength": schema.StringAttribute{ @@ -667,7 +667,7 @@ type resourceGuardrailData struct { } type contentPolicyConfig struct { - Filters fwtypes.ListNestedObjectValueOf[filtersConfig] `tfsdk:"filters_config"` + Filters fwtypes.SetNestedObjectValueOf[filtersConfig] `tfsdk:"filters_config"` } type filtersConfig struct { diff --git a/internal/service/bedrock/guardrail_test.go b/internal/service/bedrock/guardrail_test.go index 50b38161c06..c1e85f5eb9b 100644 --- a/internal/service/bedrock/guardrail_test.go +++ b/internal/service/bedrock/guardrail_test.go @@ -47,6 +47,8 @@ func TestAccBedrockGuardrail_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "blocked_outputs_messaging", "test"), resource.TestCheckResourceAttr(resourceName, "content_policy_config.#", "1"), resource.TestCheckResourceAttr(resourceName, "content_policy_config.0.filters_config.#", "2"), + resource.TestCheckResourceAttr(resourceName, "contextual_grounding_policy_config.#", "1"), + resource.TestCheckResourceAttr(resourceName, "contextual_grounding_policy_config.0.filters_config.#", "1"), resource.TestCheckResourceAttrSet(resourceName, names.AttrCreatedAt), resource.TestCheckResourceAttr(resourceName, names.AttrDescription, "test"), resource.TestCheckNoResourceAttr(resourceName, names.AttrKMSKeyARN), diff --git a/website/docs/r/bedrock_guardrail.html.markdown b/website/docs/r/bedrock_guardrail.html.markdown index 8aeefbfccf7..158d7f5ab89 100644 --- a/website/docs/r/bedrock_guardrail.html.markdown +++ b/website/docs/r/bedrock_guardrail.html.markdown @@ -86,7 +86,8 @@ The following arguments are optional: The `content_policy_config` configuration block supports the following arguments: -* `filters_config` - (Optional) List of content filter configs in content policy. See [Filters Config](#content-filters-config) for more information. +* `filters_config` - (Optional) Set of content filter configs in content policy. + See [Filters Config](#content-filters-config) for more information. #### Content Filters Config From cb010e33d773f0f0c343a1e5fddf4b36712457b5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 07:05:54 +0000 Subject: [PATCH 108/118] Bump github.com/golangci/golangci-lint in /.ci/tools Bumps [github.com/golangci/golangci-lint](https://github.com/golangci/golangci-lint) from 1.62.0 to 1.62.2. - [Release notes](https://github.com/golangci/golangci-lint/releases) - [Changelog](https://github.com/golangci/golangci-lint/blob/master/CHANGELOG.md) - [Commits](https://github.com/golangci/golangci-lint/compare/v1.62.0...v1.62.2) --- updated-dependencies: - dependency-name: github.com/golangci/golangci-lint dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .ci/tools/go.mod | 6 +++--- .ci/tools/go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.ci/tools/go.mod b/.ci/tools/go.mod index 9bf2dce54d5..4329feb8881 100644 --- a/.ci/tools/go.mod +++ b/.ci/tools/go.mod @@ -5,7 +5,7 @@ go 1.23.3 require ( github.com/YakDriver/tfproviderdocs v0.16.6 github.com/client9/misspell v0.3.4 - github.com/golangci/golangci-lint v1.62.0 + github.com/golangci/golangci-lint v1.62.2 github.com/hashicorp/copywrite v0.19.0 github.com/hashicorp/go-changelog v0.0.0-20241111140550-beb7aaabfbd1 github.com/katbyte/terrafmt v0.5.4 @@ -278,7 +278,7 @@ require ( github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect github.com/stretchr/objx v0.5.2 // indirect - github.com/stretchr/testify v1.9.0 // indirect + github.com/stretchr/testify v1.10.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/tdakkota/asciicheck v0.2.0 // indirect github.com/terraform-linters/tflint-plugin-sdk v0.21.0 // indirect @@ -294,7 +294,7 @@ require ( github.com/ultraware/funlen v0.1.0 // indirect github.com/ultraware/whitespace v0.1.1 // indirect github.com/uudashr/gocognit v1.1.3 // indirect - github.com/uudashr/iface v1.2.0 // indirect + github.com/uudashr/iface v1.2.1 // indirect github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect diff --git a/.ci/tools/go.sum b/.ci/tools/go.sum index f9bb56155b5..86602888b91 100644 --- a/.ci/tools/go.sum +++ b/.ci/tools/go.sum @@ -568,8 +568,8 @@ github.com/golangci/go-printf-func-name v0.1.0 h1:dVokQP+NMTO7jwO4bwsRwLWeudOVUP github.com/golangci/go-printf-func-name v0.1.0/go.mod h1:wqhWFH5mUdJQhweRnldEywnR5021wTdZSNgwYceV14s= github.com/golangci/gofmt v0.0.0-20240816233607-d8596aa466a9 h1:/1322Qns6BtQxUZDTAT4SdcoxknUki7IAoK4SAXr8ME= github.com/golangci/gofmt v0.0.0-20240816233607-d8596aa466a9/go.mod h1:Oesb/0uFAyWoaw1U1qS5zyjCg5NP9C9iwjnI4tIsXEE= -github.com/golangci/golangci-lint v1.62.0 h1:/G0g+bi1BhmGJqLdNQkKBWjcim8HjOPc4tsKuHDOhcI= -github.com/golangci/golangci-lint v1.62.0/go.mod h1:jtoOhQcKTz8B6dGNFyfQV3WZkQk+YvBDewDtNpiAJts= +github.com/golangci/golangci-lint v1.62.2 h1:b8K5K9PN+rZN1+mKLtsZHz2XXS9aYKzQ9i25x3Qnxxw= +github.com/golangci/golangci-lint v1.62.2/go.mod h1:ILWWyeFUrctpHVGMa1dg2xZPKoMUTc5OIMgW7HZr34g= github.com/golangci/misspell v0.6.0 h1:JCle2HUTNWirNlDIAUO44hUsKhOFqGPoC4LZxlaSXDs= github.com/golangci/misspell v0.6.0/go.mod h1:keMNyY6R9isGaSAu+4Q8NMBwMPkh15Gtc8UCVoDtAWo= github.com/golangci/modinfo v0.3.4 h1:oU5huX3fbxqQXdfspamej74DFX0kyGLkw1ppvXoJ8GA= @@ -1143,8 +1143,8 @@ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1F github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/tdakkota/asciicheck v0.2.0 h1:o8jvnUANo0qXtnslk2d3nMKTFNlOnJjRrNcj0j9qkHM= @@ -1184,8 +1184,8 @@ github.com/ultraware/whitespace v0.1.1 h1:bTPOGejYFulW3PkcrqkeQwOd6NKOOXvmGD9bo/ github.com/ultraware/whitespace v0.1.1/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8= github.com/uudashr/gocognit v1.1.3 h1:l+a111VcDbKfynh+airAy/DJQKaXh2m9vkoysMPSZyM= github.com/uudashr/gocognit v1.1.3/go.mod h1:aKH8/e8xbTRBwjbCkwZ8qt4l2EpKXl31KMHgSS+lZ2U= -github.com/uudashr/iface v1.2.0 h1:ECJjh5q/1Zmnv/2yFpWV6H3oMg5+Mo+vL0aqw9Gjazo= -github.com/uudashr/iface v1.2.0/go.mod h1:Ux/7d/rAF3owK4m53cTVXL4YoVHKNqnoOeQHn2xrlp0= +github.com/uudashr/iface v1.2.1 h1:vHHyzAUmWZ64Olq6NZT3vg/z1Ws56kyPdBOd5kTXDF8= +github.com/uudashr/iface v1.2.1/go.mod h1:4QvspiRd3JLPAEXBQ9AiZpLbJlrWWgRChOKDJEuQTdg= github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= From 5b0aa50f18303e5c57ce4eaf4d00b25f6cae892c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 07:10:20 +0000 Subject: [PATCH 109/118] Bump the aws-sdk-go-v2 group across 1 directory with 4 updates Bumps the aws-sdk-go-v2 group with 3 updates in the / directory: [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2), [github.com/aws/aws-sdk-go-v2/service/directconnect](https://github.com/aws/aws-sdk-go-v2) and [github.com/aws/aws-sdk-go-v2/service/networkmanager](https://github.com/aws/aws-sdk-go-v2). Updates `github.com/aws/aws-sdk-go-v2/feature/s3/manager` from 1.17.40 to 1.17.41 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/credentials/v1.17.40...credentials/v1.17.41) Updates `github.com/aws/aws-sdk-go-v2/service/directconnect` from 1.29.6 to 1.30.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/pi/v1.29.6...v1.30.0) Updates `github.com/aws/aws-sdk-go-v2/service/networkmanager` from 1.31.6 to 1.32.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/sns/v1.31.6...v1.32.0) Updates `github.com/aws/aws-sdk-go-v2/service/s3` from 1.68.0 to 1.69.0 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.68.0...service/s3/v1.69.0) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/feature/s3/manager dependency-type: direct:production update-type: version-update:semver-patch dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/directconnect dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/networkmanager dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 - dependency-name: github.com/aws/aws-sdk-go-v2/service/s3 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: aws-sdk-go-v2 ... Signed-off-by: dependabot[bot] --- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 3f49a3a54a9..9f310441dfc 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( github.com/aws/aws-sdk-go-v2/config v1.28.5 github.com/aws/aws-sdk-go-v2/credentials v1.17.46 github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.20 - github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.40 + github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.41 github.com/aws/aws-sdk-go-v2/service/accessanalyzer v1.36.1 github.com/aws/aws-sdk-go-v2/service/account v1.21.6 github.com/aws/aws-sdk-go-v2/service/acm v1.30.6 @@ -93,7 +93,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/detective v1.31.6 github.com/aws/aws-sdk-go-v2/service/devicefarm v1.28.6 github.com/aws/aws-sdk-go-v2/service/devopsguru v1.34.6 - github.com/aws/aws-sdk-go-v2/service/directconnect v1.29.6 + github.com/aws/aws-sdk-go-v2/service/directconnect v1.30.0 github.com/aws/aws-sdk-go-v2/service/directoryservice v1.30.7 github.com/aws/aws-sdk-go-v2/service/dlm v1.28.7 github.com/aws/aws-sdk-go-v2/service/docdb v1.39.5 @@ -174,7 +174,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/neptune v1.35.5 github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.15.0 github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.44.3 - github.com/aws/aws-sdk-go-v2/service/networkmanager v1.31.6 + github.com/aws/aws-sdk-go-v2/service/networkmanager v1.32.0 github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.7.6 github.com/aws/aws-sdk-go-v2/service/oam v1.15.6 github.com/aws/aws-sdk-go-v2/service/opensearch v1.44.1 @@ -213,7 +213,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/route53recoveryreadiness v1.21.6 github.com/aws/aws-sdk-go-v2/service/route53resolver v1.34.1 github.com/aws/aws-sdk-go-v2/service/rum v1.21.6 - github.com/aws/aws-sdk-go-v2/service/s3 v1.68.0 + github.com/aws/aws-sdk-go-v2/service/s3 v1.69.0 github.com/aws/aws-sdk-go-v2/service/s3control v1.50.1 github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.6 github.com/aws/aws-sdk-go-v2/service/sagemaker v1.168.0 diff --git a/go.sum b/go.sum index 38352b23b1c..f8e61e96cb0 100644 --- a/go.sum +++ b/go.sum @@ -33,8 +33,8 @@ github.com/aws/aws-sdk-go-v2/credentials v1.17.46 h1:AU7RcriIo2lXjUfHFnFKYsLCwgb github.com/aws/aws-sdk-go-v2/credentials v1.17.46/go.mod h1:1FmYyLGL08KQXQ6mcTlifyFXfJVCNJTVGuQP4m0d/UA= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.20 h1:sDSXIrlsFSFJtWKLQS4PUWRvrT580rrnuLydJrCQ/yA= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.20/go.mod h1:WZ/c+w0ofps+/OUqMwWgnfrgzZH1DZO1RIkktICsqnY= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.40 h1:CbalQNEYQljzAJ+3beY8FQBShdLNLpJzHL4h/5LSFMc= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.40/go.mod h1:1iYVr/urNWuZ7WZ1829FSE7RRTaXvzFdwrEQV8Z40cE= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.41 h1:hqcxMc2g/MwwnRMod9n6Bd+t+9Nf7d5qRg7RaXKPd6o= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.41/go.mod h1:d1eH0VrttvPmrCraU68LOyNdu26zFxQFjrVSb5vdhog= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.24 h1:4usbeaes3yJnCFC7kfeyhkdkPtoRYPa/hTmCqMpKpLI= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.24/go.mod h1:5CI1JemjVwde8m2WG3cz23qHKPOxbpkq0HaoreEgLIY= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.24 h1:N1zsICrQglfzaBnrfM0Ys00860C+QFwu6u/5+LomP+o= @@ -197,8 +197,8 @@ github.com/aws/aws-sdk-go-v2/service/devicefarm v1.28.6 h1:LMO26c9BpvBJU7TjkIOme github.com/aws/aws-sdk-go-v2/service/devicefarm v1.28.6/go.mod h1:/gu3tsu45lTMBDGOCMq+ff6R8xFJPJTmzG03GjsgNtI= github.com/aws/aws-sdk-go-v2/service/devopsguru v1.34.6 h1:ddoKgFm/1oBHo7u553A9KiaOGHps3vDDdW6l4mLOXSg= github.com/aws/aws-sdk-go-v2/service/devopsguru v1.34.6/go.mod h1:45NHbOfJAeqabfodRAD16xwtjiJmMdUNKNfF3o8i1nE= -github.com/aws/aws-sdk-go-v2/service/directconnect v1.29.6 h1:sXYEoFEo7GLwRwqY2RZxFs7VxpmW9+Kwsq0Z7Sz9wxg= -github.com/aws/aws-sdk-go-v2/service/directconnect v1.29.6/go.mod h1:E2hAfYPWIpsei0SCp8ykbHcXFON8Knf1oBVdlwUMuVE= +github.com/aws/aws-sdk-go-v2/service/directconnect v1.30.0 h1:Ynu1cxMflxgI2nG0LlS1EsCOhNCelAO24HgZCijyNw4= +github.com/aws/aws-sdk-go-v2/service/directconnect v1.30.0/go.mod h1:E2hAfYPWIpsei0SCp8ykbHcXFON8Knf1oBVdlwUMuVE= github.com/aws/aws-sdk-go-v2/service/directoryservice v1.30.7 h1:ZwecDiXujdrRm5C8UGwdcF9YpV83lgXfzBgUEF5KeME= github.com/aws/aws-sdk-go-v2/service/directoryservice v1.30.7/go.mod h1:ndWayMkDqmOHWM2OcX8Uno6i6gSNm2O8UBNkQjQHpFg= github.com/aws/aws-sdk-go-v2/service/dlm v1.28.7 h1:gcQxVPVOqGaltkiGow3KxZN4srjmJeVXt4xzY21VqdU= @@ -369,8 +369,8 @@ github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.15.0 h1:BhMpfPFW0vgobYTzfrM github.com/aws/aws-sdk-go-v2/service/neptunegraph v1.15.0/go.mod h1:Uade5ii2gNtKGSUZ2rXZBTSow50uCWh8mNLxsBeSppM= github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.44.3 h1:5gs6lyhGYupTMTE+sFsbh35W+XPCdCt4Pgg8qEUleGw= github.com/aws/aws-sdk-go-v2/service/networkfirewall v1.44.3/go.mod h1:RrSc7fUe1EX71WfWClFvg55tAdQJ0UdG1uCOBzAgFFo= -github.com/aws/aws-sdk-go-v2/service/networkmanager v1.31.6 h1:j1DzkC+I+mSVkgLXmXadU0bU1NKqLhtJC0VAnmvTvWE= -github.com/aws/aws-sdk-go-v2/service/networkmanager v1.31.6/go.mod h1:9xE0GXvKJ9L8YedscqsmKp2H5UI9luBqqQC2P8dxvf8= +github.com/aws/aws-sdk-go-v2/service/networkmanager v1.32.0 h1:oodO2q9rmUFricTJr5KnG5HD/6b7L2kfGEyHBD34oSE= +github.com/aws/aws-sdk-go-v2/service/networkmanager v1.32.0/go.mod h1:9xE0GXvKJ9L8YedscqsmKp2H5UI9luBqqQC2P8dxvf8= github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.7.6 h1:WnyUwcAeE6NYv8Zk1A/hrUsy5ypFpFFnD88dxNfpIx4= github.com/aws/aws-sdk-go-v2/service/networkmonitor v1.7.6/go.mod h1:obg4ub54CzsQSVt/Q5RMUPo48in9LO2KB/nDsuaQxZs= github.com/aws/aws-sdk-go-v2/service/oam v1.15.6 h1:rO6Yu1VrV7IvQcw7CaTxx+p3Z0IIGeY5U7iEjpM98rc= @@ -447,8 +447,8 @@ github.com/aws/aws-sdk-go-v2/service/route53resolver v1.34.1 h1:FlKzCc4JH3i87BpF github.com/aws/aws-sdk-go-v2/service/route53resolver v1.34.1/go.mod h1:Srhr/nWE3+IKKhOqUBc/hYmdgCgxt2Z91GMFFtJyOeE= github.com/aws/aws-sdk-go-v2/service/rum v1.21.6 h1:4U/ss6VTGPGvnSzDyojk/atrOWhJ9OPh4RHwYEm86aA= github.com/aws/aws-sdk-go-v2/service/rum v1.21.6/go.mod h1:kAUyICwBeSM4d/WWS2ZcRz9RLtd0ZuDEQbTf4YCmcbA= -github.com/aws/aws-sdk-go-v2/service/s3 v1.68.0 h1:bFpcqdwtAEsgpZXvkTxIThFQx/EM0oV6kXmfFIGjxME= -github.com/aws/aws-sdk-go-v2/service/s3 v1.68.0/go.mod h1:ralv4XawHjEMaHOWnTFushl0WRqim/gQWesAMF6hTow= +github.com/aws/aws-sdk-go-v2/service/s3 v1.69.0 h1:Q2ax8S21clKOnHhhr933xm3JxdJebql+R7aNo7p7GBQ= +github.com/aws/aws-sdk-go-v2/service/s3 v1.69.0/go.mod h1:ralv4XawHjEMaHOWnTFushl0WRqim/gQWesAMF6hTow= github.com/aws/aws-sdk-go-v2/service/s3control v1.50.1 h1:WjVnnNd++hjjmuODULNfZaW2zEKZVrDGZvdQUK2dF8M= github.com/aws/aws-sdk-go-v2/service/s3control v1.50.1/go.mod h1:ymXHnBHIxM/iqrgGphFuoUfuczoy4inIr2LH8PRj8NQ= github.com/aws/aws-sdk-go-v2/service/s3outposts v1.28.6 h1:zzoRIW5fgL23XkMtW4eDNMvWreQLOJNeFCK2tmjfz1w= From 45d53e247569e49dd244299694c6f0b3de9bb97e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 07:10:25 +0000 Subject: [PATCH 110/118] Bump github.com/ProtonMail/go-crypto from 1.1.2 to 1.1.3 Bumps [github.com/ProtonMail/go-crypto](https://github.com/ProtonMail/go-crypto) from 1.1.2 to 1.1.3. - [Release notes](https://github.com/ProtonMail/go-crypto/releases) - [Commits](https://github.com/ProtonMail/go-crypto/compare/v1.1.2...v1.1.3) --- updated-dependencies: - dependency-name: github.com/ProtonMail/go-crypto dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 3f49a3a54a9..b5d2f39c128 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ go 1.23.3 godebug tlskyber=0 require ( - github.com/ProtonMail/go-crypto v1.1.2 + github.com/ProtonMail/go-crypto v1.1.3 github.com/YakDriver/go-version v0.1.0 github.com/YakDriver/regexache v0.24.0 github.com/aws/aws-sdk-go v1.55.5 diff --git a/go.sum b/go.sum index 38352b23b1c..2253c83b744 100644 --- a/go.sum +++ b/go.sum @@ -8,8 +8,8 @@ github.com/Masterminds/sprig/v3 v3.3.0 h1:mQh0Yrg1XPo6vjYXgtf5OtijNAKJRNcTdOOGZe github.com/Masterminds/sprig/v3 v3.3.0/go.mod h1:Zy1iXRYNqNLUolqCpL4uhk6SHUMAOSCzdgBfDb35Lz0= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= -github.com/ProtonMail/go-crypto v1.1.2 h1:A7JbD57ThNqh7XjmHE+PXpQ3Dqt3BrSAC0AL0Go3KS0= -github.com/ProtonMail/go-crypto v1.1.2/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= +github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk= +github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= github.com/YakDriver/go-version v0.1.0 h1:/x+Xg2+l89Mjtxl0VRf2+ue8cnHkw6jfYv49j6f7gZw= github.com/YakDriver/go-version v0.1.0/go.mod h1:LXwFAp1E3KBhS7FHO/FE8r3XCmvKizs/VXXXFWfoSYY= github.com/YakDriver/regexache v0.24.0 h1:zUKaixelkswzdqsqPc2sveiV//Mi/msJn0teG8zBDiA= From 36335828429188cc505b8620c4b1451559a52b10 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Tue, 26 Nov 2024 08:22:05 -0500 Subject: [PATCH 111/118] Fix 'TestAccMemoryDBCluster_Update_securityGroupIds'. --- internal/service/memorydb/cluster_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/service/memorydb/cluster_test.go b/internal/service/memorydb/cluster_test.go index 302e14aeeeb..1d4a8f03211 100644 --- a/internal/service/memorydb/cluster_test.go +++ b/internal/service/memorydb/cluster_test.go @@ -1511,7 +1511,7 @@ resource "aws_security_group" "test" { count = %[2]d vpc_id = aws_vpc.test.id - name = %[1]q + name = "%[1]s-${count.index}" tags = { Name = %[1]q From 1d07a94d9cddd60570b2b25fd7a15e878009d9cd Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Tue, 26 Nov 2024 08:24:46 -0500 Subject: [PATCH 112/118] Remove 'testAccOrganizationsFeatures_disappears'. --- .../iam/organizations_features_test.go | 31 ++----------------- 1 file changed, 2 insertions(+), 29 deletions(-) diff --git a/internal/service/iam/organizations_features_test.go b/internal/service/iam/organizations_features_test.go index 3f84d87ba93..38088d23dc1 100644 --- a/internal/service/iam/organizations_features_test.go +++ b/internal/service/iam/organizations_features_test.go @@ -25,9 +25,8 @@ func TestAccIAMOrganizationsFeatures_serial(t *testing.T) { t.Parallel() testCases := map[string]func(t *testing.T){ - acctest.CtBasic: testAccOrganizationsFeatures_basic, - acctest.CtDisappears: testAccOrganizationsFeatures_disappears, - "update": testAccOrganizationsFeatures_update, + acctest.CtBasic: testAccOrganizationsFeatures_basic, + "update": testAccOrganizationsFeatures_update, } acctest.RunSerialTests1Level(t, testCases, 0) @@ -69,32 +68,6 @@ func testAccOrganizationsFeatures_basic(t *testing.T) { }) } -func testAccOrganizationsFeatures_disappears(t *testing.T) { - ctx := acctest.Context(t) - resourceName := "aws_iam_organizations_features.test" - - resource.Test(t, resource.TestCase{ - PreCheck: func() { - acctest.PreCheck(ctx, t) - acctest.PreCheckOrganizationManagementAccount(ctx, t) - acctest.PreCheckOrganizationsEnabledServicePrincipal(ctx, t, "iam.amazonaws.com") - }, - ErrorCheck: acctest.ErrorCheck(t, names.IAMServiceID), - ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, - CheckDestroy: testAccCheckOrganizationsFeaturesDestroy(ctx), - Steps: []resource.TestStep{ - { - Config: testAccOrganizationsFeaturesConfig_basic([]string{"RootCredentialsManagement", "RootSessions"}), - Check: resource.ComposeTestCheckFunc( - testAccCheckOrganizationsFeaturesExists(ctx, resourceName), - acctest.CheckFrameworkResourceDisappears(ctx, acctest.Provider, tfiam.ResourceOrganizationsFeatures, resourceName), - ), - ExpectNonEmptyPlan: true, - }, - }, - }) -} - func testAccOrganizationsFeatures_update(t *testing.T) { ctx := acctest.Context(t) resourceName := "aws_iam_organizations_features.test" From eb6f0cb67c44e0ce9739bbf5a13e64932077ef30 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Tue, 26 Nov 2024 08:46:04 -0500 Subject: [PATCH 113/118] Fix golangci-lint 'func `manageOrganizationFeatures` is unused (unused)'. --- .../service/iam/organizations_features.go | 48 ------------------- 1 file changed, 48 deletions(-) diff --git a/internal/service/iam/organizations_features.go b/internal/service/iam/organizations_features.go index 7839636612d..43468a6c6e3 100644 --- a/internal/service/iam/organizations_features.go +++ b/internal/service/iam/organizations_features.go @@ -202,54 +202,6 @@ func findOrganizationsFeatures(ctx context.Context, conn *iam.Client) (*iam.List return output, nil } -func manageOrganizationFeatures(ctx context.Context, conn *iam.Client, planFeatures, stateFeatures []string) (*iam.ListOrganizationsFeaturesOutput, error) { - var featuresToEnable, featuresToDisable []string - for _, feature := range planFeatures { - if !slices.Contains(stateFeatures, feature) { - featuresToEnable = append(featuresToEnable, feature) - } - } - for _, feature := range stateFeatures { - if !slices.Contains(planFeatures, feature) { - featuresToDisable = append(featuresToDisable, feature) - } - } - if slices.Contains(featuresToEnable, string(awstypes.FeatureTypeRootCredentialsManagement)) { - var input iam.EnableOrganizationsRootCredentialsManagementInput - _, err := conn.EnableOrganizationsRootCredentialsManagement(ctx, &input) - if err != nil { - return nil, err - } - } - if slices.Contains(featuresToEnable, string(awstypes.FeatureTypeRootSessions)) { - var input iam.EnableOrganizationsRootSessionsInput - _, err := conn.EnableOrganizationsRootSessions(ctx, &input) - if err != nil { - return nil, err - } - } - if slices.Contains(featuresToDisable, string(awstypes.FeatureTypeRootCredentialsManagement)) { - var input iam.DisableOrganizationsRootCredentialsManagementInput - _, err := conn.DisableOrganizationsRootCredentialsManagement(ctx, &input) - if err != nil { - return nil, err - } - } - if slices.Contains(featuresToDisable, string(awstypes.FeatureTypeRootSessions)) { - var input iam.DisableOrganizationsRootSessionsInput - _, err := conn.DisableOrganizationsRootSessions(ctx, &input) - if err != nil { - return nil, err - } - } - var input iam.ListOrganizationsFeaturesInput - out, err := conn.ListOrganizationsFeatures(ctx, &input) - if err != nil { - return nil, err - } - return out, nil -} - func updateOrganizationFeatures(ctx context.Context, conn *iam.Client, new, old []awstypes.FeatureType) error { toEnable := itypes.Set[awstypes.FeatureType](new).Difference(old) toDisable := itypes.Set[awstypes.FeatureType](old).Difference(new) From 38f33e476a85de45360f520d492790dcbdda9749 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Tue, 26 Nov 2024 10:27:43 -0500 Subject: [PATCH 114/118] r/aws_db_proxy: Skip 'InvalidAction: DescribeDBProxies is not available in this region' errors in sweeper. --- internal/sweep/awsv2/skip.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/internal/sweep/awsv2/skip.go b/internal/sweep/awsv2/skip.go index 670bb617dff..bc2569aaf0f 100644 --- a/internal/sweep/awsv2/skip.go +++ b/internal/sweep/awsv2/skip.go @@ -41,6 +41,10 @@ func SkipSweepError(err error) bool { if tfawserr.ErrCodeEquals(err, "ForbiddenException") { return true } + // Example (GovCloud): InvalidAction: DescribeDBProxies is not available in this region + if tfawserr.ErrMessageContains(err, "InvalidAction", "is not available") { + return true + } // Example: InvalidAction: InvalidAction: Operation (ListPlatformApplications) is not supported in this region if tfawserr.ErrMessageContains(err, "InvalidAction", "is not supported") { return true From 523ac850e658a36c6569ca746c6ef72c1f6a1fef Mon Sep 17 00:00:00 2001 From: changelogbot Date: Tue, 26 Nov 2024 17:05:27 +0000 Subject: [PATCH 115/118] Update CHANGELOG.md for #40312 --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c6ee7ac9ada..e623f73bbda 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,17 @@ NOTES: * resource/aws_s3_bucket_lifecycle_configuration: Lifecycle configurations can now be applied to directory buckets ([#40268](https://github.com/hashicorp/terraform-provider-aws/issues/40268)) +FEATURES: + +* **New Resource:** `aws_iam_organizations_features` ([#40164](https://github.com/hashicorp/terraform-provider-aws/issues/40164)) + +ENHANCEMENTS: + +* data-source/aws_memorydb_cluster: Add `engine` attribute ([#40224](https://github.com/hashicorp/terraform-provider-aws/issues/40224)) +* data-source/aws_memorydb_snapshot: Add `cluster_configuration.engine` attribute ([#40224](https://github.com/hashicorp/terraform-provider-aws/issues/40224)) +* resource/aws_memorydb_cluster: Add `engine` argument ([#40224](https://github.com/hashicorp/terraform-provider-aws/issues/40224)) +* resource/aws_memorydb_snapshot: Add `cluster_configuration.engine` attribute ([#40224](https://github.com/hashicorp/terraform-provider-aws/issues/40224)) + BUG FIXES: * data-source/aws_rds_reserved_instance_offering: When `product_description` (e.g., "postgresql") is a substring of multiple products, fix `Error: multiple RDS Reserved Instance Offerings matched; use additional constraints to reduce matches to a single RDS Reserved Instance Offering` ([#40281](https://github.com/hashicorp/terraform-provider-aws/issues/40281)) From cb58eb066d921a81e5119523f4033a9180093366 Mon Sep 17 00:00:00 2001 From: Graham Davison Date: Tue, 26 Nov 2024 09:57:01 -0800 Subject: [PATCH 116/118] Adds CHANGELOG entry --- .changelog/40304.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/40304.txt diff --git a/.changelog/40304.txt b/.changelog/40304.txt new file mode 100644 index 00000000000..955eb174739 --- /dev/null +++ b/.changelog/40304.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_bedrock_guardrail: Fix perpetual diff if multiple `content_policy_config.filters_config`s are specified. +``` From ed4d7f5ef981f42ea7de09d440af3507d0cba081 Mon Sep 17 00:00:00 2001 From: changelogbot Date: Tue, 26 Nov 2024 18:46:53 +0000 Subject: [PATCH 117/118] Update CHANGELOG.md for #40304 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e623f73bbda..2346428ed49 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ BUG FIXES: * data-source/aws_rds_reserved_instance_offering: When `product_description` (e.g., "postgresql") is a substring of multiple products, fix `Error: multiple RDS Reserved Instance Offerings matched; use additional constraints to reduce matches to a single RDS Reserved Instance Offering` ([#40281](https://github.com/hashicorp/terraform-provider-aws/issues/40281)) * provider: Suppress `Warning: AWS account ID not found for provider` when `skip_requesting_account_id` is `true` ([#40264](https://github.com/hashicorp/terraform-provider-aws/issues/40264)) * resource/aws_batch_job_definition: Fix crash when specifying `eksProperties` or `ecsProperties` block ([#40172](https://github.com/hashicorp/terraform-provider-aws/issues/40172)) +* resource/aws_bedrock_guardrail: Fix perpetual diff if multiple `content_policy_config.filters_config`s are specified. ([#40304](https://github.com/hashicorp/terraform-provider-aws/issues/40304)) * resource/aws_chatbot_slack_channel_configuration: Fix inconsistent provider result when order of `sns_topic_arns`changes ([#40253](https://github.com/hashicorp/terraform-provider-aws/issues/40253)) * resource/aws_chatbot_teams_channel_configuration: Fix inconsistent provider result when order of `sns_topic_arns`changes ([#40291](https://github.com/hashicorp/terraform-provider-aws/issues/40291)) * resource/aws_db_instance: When changing `storage_type` from `io1` or `io2` to `gp3`, fix bug causing error `InvalidParameterCombination: You must specify both the storage size and iops when modifying the storage size or iops on a DB instance that has iops` ([#37257](https://github.com/hashicorp/terraform-provider-aws/issues/37257)) From a497fd74f536e5a7b17f7aeb62abc30a9a1c1c3f Mon Sep 17 00:00:00 2001 From: coveobot Date: Wed, 27 Nov 2024 12:11:23 +0000 Subject: [PATCH 118/118] chore: checkout .github/ files from main branch --- ...{dependabot.yml => dependabot.yml.disable} | 1 + .../acctest-terraform-embedded-lint.yml | 0 .../acctest-terraform-lint.yml | 0 .../changelog.yml | 0 .../changelog_misspell.yml | 0 .../comments-feed.yml | 6 +- .../copyright.yml | 0 .../dependencies.yml | 0 .../documentation.yml | 0 .../examples.yml | 0 .../gen-teamcity.yml | 0 .../generate_changelog.yml | 0 .../golangci-lint.yml | 0 .../issue_comment.yml | 0 .../issues.yml | 0 .../label-notifications.yml | 7 +- .../lock.yml | 0 .../milestone.yml | 0 .../mkdocs.yml | 0 .github/workflows.disabled/post_publish.yml | 53 ++++++++ .../provider.yml | 0 .../providerlint.yml | 0 .../pull_request_feed.yml | 14 +- .../pull_request_review.yml | 6 +- .../pull_request_target.yml | 2 +- .../release-tag.yml | 7 +- .../release.yml | 0 .../resource-counts.yml | 0 .../semgrep-ci.yml | 0 .../skaff.yml | 0 .../snapshot.yml | 0 .../stale.yml | 0 .../website.yml | 0 .github/workflows/firewatch.yml | 25 ---- .github/workflows/post_publish.yml | 125 ------------------ .github/workflows/tag.yml | 37 ++++++ .github/workflows/team_slack_bot.yml | 24 ---- .github/workflows/update.yml | 110 +++++++++++++++ 38 files changed, 220 insertions(+), 197 deletions(-) rename .github/{dependabot.yml => dependabot.yml.disable} (98%) rename .github/{workflows => workflows.disabled}/acctest-terraform-embedded-lint.yml (100%) rename .github/{workflows => workflows.disabled}/acctest-terraform-lint.yml (100%) rename .github/{workflows => workflows.disabled}/changelog.yml (100%) rename .github/{workflows => workflows.disabled}/changelog_misspell.yml (100%) rename .github/{workflows => workflows.disabled}/comments-feed.yml (88%) rename .github/{workflows => workflows.disabled}/copyright.yml (100%) rename .github/{workflows => workflows.disabled}/dependencies.yml (100%) rename .github/{workflows => workflows.disabled}/documentation.yml (100%) rename .github/{workflows => workflows.disabled}/examples.yml (100%) rename .github/{workflows => workflows.disabled}/gen-teamcity.yml (100%) rename .github/{workflows => workflows.disabled}/generate_changelog.yml (100%) rename .github/{workflows => workflows.disabled}/golangci-lint.yml (100%) rename .github/{workflows => workflows.disabled}/issue_comment.yml (100%) rename .github/{workflows => workflows.disabled}/issues.yml (100%) rename .github/{workflows => workflows.disabled}/label-notifications.yml (91%) rename .github/{workflows => workflows.disabled}/lock.yml (100%) rename .github/{workflows => workflows.disabled}/milestone.yml (100%) rename .github/{workflows => workflows.disabled}/mkdocs.yml (100%) create mode 100644 .github/workflows.disabled/post_publish.yml rename .github/{workflows => workflows.disabled}/provider.yml (100%) rename .github/{workflows => workflows.disabled}/providerlint.yml (100%) rename .github/{workflows => workflows.disabled}/pull_request_feed.yml (83%) rename .github/{workflows => workflows.disabled}/pull_request_review.yml (88%) rename .github/{workflows => workflows.disabled}/pull_request_target.yml (99%) rename .github/{workflows => workflows.disabled}/release-tag.yml (75%) rename .github/{workflows => workflows.disabled}/release.yml (100%) rename .github/{workflows => workflows.disabled}/resource-counts.yml (100%) rename .github/{workflows => workflows.disabled}/semgrep-ci.yml (100%) rename .github/{workflows => workflows.disabled}/skaff.yml (100%) rename .github/{workflows => workflows.disabled}/snapshot.yml (100%) rename .github/{workflows => workflows.disabled}/stale.yml (100%) rename .github/{workflows => workflows.disabled}/website.yml (100%) delete mode 100644 .github/workflows/firewatch.yml delete mode 100644 .github/workflows/post_publish.yml create mode 100644 .github/workflows/tag.yml delete mode 100644 .github/workflows/team_slack_bot.yml create mode 100644 .github/workflows/update.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml.disable similarity index 98% rename from .github/dependabot.yml rename to .github/dependabot.yml.disable index a3e92a1002a..44574223b4d 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml.disable @@ -47,6 +47,7 @@ updates: - "/.ci/providerlint" - "/.ci/tools" - "/skaff" + - "/tools/awssdkpatch" - "/tools/tfsdk2fw" schedule: interval: "daily" diff --git a/.github/workflows/acctest-terraform-embedded-lint.yml b/.github/workflows.disabled/acctest-terraform-embedded-lint.yml similarity index 100% rename from .github/workflows/acctest-terraform-embedded-lint.yml rename to .github/workflows.disabled/acctest-terraform-embedded-lint.yml diff --git a/.github/workflows/acctest-terraform-lint.yml b/.github/workflows.disabled/acctest-terraform-lint.yml similarity index 100% rename from .github/workflows/acctest-terraform-lint.yml rename to .github/workflows.disabled/acctest-terraform-lint.yml diff --git a/.github/workflows/changelog.yml b/.github/workflows.disabled/changelog.yml similarity index 100% rename from .github/workflows/changelog.yml rename to .github/workflows.disabled/changelog.yml diff --git a/.github/workflows/changelog_misspell.yml b/.github/workflows.disabled/changelog_misspell.yml similarity index 100% rename from .github/workflows/changelog_misspell.yml rename to .github/workflows.disabled/changelog_misspell.yml diff --git a/.github/workflows/comments-feed.yml b/.github/workflows.disabled/comments-feed.yml similarity index 88% rename from .github/workflows/comments-feed.yml rename to .github/workflows.disabled/comments-feed.yml index 67a0678e83d..78755206bf7 100644 --- a/.github/workflows/comments-feed.yml +++ b/.github/workflows.disabled/comments-feed.yml @@ -27,16 +27,16 @@ jobs: if: | steps.community_check.outputs.maintainer == 'true' && github.actor != 'dependabot[bot]' - uses: slackapi/slack-github-action@485a9d42d3a73031f12ec201c457e2162c45d02d # v2.0.0 + uses: slackapi/slack-github-action@37ebaef184d7626c5f204ab8d3baff4262dd30f0 # v1.27.0 env: COMMENT_AUTHOR_URL: ${{ github.event.comment.user.html_url }} COMMENT_AUTHOR_LOGIN: ${{ github.event.comment.user.login }} COMMENT_URL: ${{ github.event.comment.html_url }} ISSUE_URL: ${{ github.event.issue.html_url }} ISSUE_TITLE: ${{ github.event.issue.title }} + SLACK_WEBHOOK_URL: ${{ secrets.FEED_SLACK_WEBHOOK_URL }} + SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK with: - webhook: ${{ secrets.FEED_SLACK_WEBHOOK_URL }} - webhook-type: incoming-webhook payload: | { "blocks": [ diff --git a/.github/workflows/copyright.yml b/.github/workflows.disabled/copyright.yml similarity index 100% rename from .github/workflows/copyright.yml rename to .github/workflows.disabled/copyright.yml diff --git a/.github/workflows/dependencies.yml b/.github/workflows.disabled/dependencies.yml similarity index 100% rename from .github/workflows/dependencies.yml rename to .github/workflows.disabled/dependencies.yml diff --git a/.github/workflows/documentation.yml b/.github/workflows.disabled/documentation.yml similarity index 100% rename from .github/workflows/documentation.yml rename to .github/workflows.disabled/documentation.yml diff --git a/.github/workflows/examples.yml b/.github/workflows.disabled/examples.yml similarity index 100% rename from .github/workflows/examples.yml rename to .github/workflows.disabled/examples.yml diff --git a/.github/workflows/gen-teamcity.yml b/.github/workflows.disabled/gen-teamcity.yml similarity index 100% rename from .github/workflows/gen-teamcity.yml rename to .github/workflows.disabled/gen-teamcity.yml diff --git a/.github/workflows/generate_changelog.yml b/.github/workflows.disabled/generate_changelog.yml similarity index 100% rename from .github/workflows/generate_changelog.yml rename to .github/workflows.disabled/generate_changelog.yml diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows.disabled/golangci-lint.yml similarity index 100% rename from .github/workflows/golangci-lint.yml rename to .github/workflows.disabled/golangci-lint.yml diff --git a/.github/workflows/issue_comment.yml b/.github/workflows.disabled/issue_comment.yml similarity index 100% rename from .github/workflows/issue_comment.yml rename to .github/workflows.disabled/issue_comment.yml diff --git a/.github/workflows/issues.yml b/.github/workflows.disabled/issues.yml similarity index 100% rename from .github/workflows/issues.yml rename to .github/workflows.disabled/issues.yml diff --git a/.github/workflows/label-notifications.yml b/.github/workflows.disabled/label-notifications.yml similarity index 91% rename from .github/workflows/label-notifications.yml rename to .github/workflows.disabled/label-notifications.yml index 12d64ca02ab..9dc2ef177cf 100644 --- a/.github/workflows/label-notifications.yml +++ b/.github/workflows.disabled/label-notifications.yml @@ -21,15 +21,14 @@ jobs: steps: - name: Send Slack Notification - uses: slackapi/slack-github-action@485a9d42d3a73031f12ec201c457e2162c45d02d # v2.0.0 + uses: slackapi/slack-github-action@37ebaef184d7626c5f204ab8d3baff4262dd30f0 # v1.27.0 env: ISSUE_TITLE: ${{ toJSON(github.event.issue.title || github.event.pull_request.title) }} + SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} with: - method: chat.postMessage - token: ${{ secrets.SLACK_BOT_TOKEN }} + channel-id: ${{ secrets.SLACK_CHANNEL }} payload: | { - "channel" : "${{ secrets.SLACK_CHANNEL }}", "blocks": [ { "type": "section", diff --git a/.github/workflows/lock.yml b/.github/workflows.disabled/lock.yml similarity index 100% rename from .github/workflows/lock.yml rename to .github/workflows.disabled/lock.yml diff --git a/.github/workflows/milestone.yml b/.github/workflows.disabled/milestone.yml similarity index 100% rename from .github/workflows/milestone.yml rename to .github/workflows.disabled/milestone.yml diff --git a/.github/workflows/mkdocs.yml b/.github/workflows.disabled/mkdocs.yml similarity index 100% rename from .github/workflows/mkdocs.yml rename to .github/workflows.disabled/mkdocs.yml diff --git a/.github/workflows.disabled/post_publish.yml b/.github/workflows.disabled/post_publish.yml new file mode 100644 index 00000000000..ac25ff35c0f --- /dev/null +++ b/.github/workflows.disabled/post_publish.yml @@ -0,0 +1,53 @@ +name: Post Publish +on: + workflow_dispatch: + inputs: + release-tag: + type: string + description: 'Semver release tag e.g. v1.1.0' + required: true + workflow_run: + workflows: [Release] + types: + - completed +jobs: + on-success-or-workflow-dispatch: + runs-on: ubuntu-latest + if: github.event.workflow_run.conclusion == 'success' || github.event_name == 'workflow_dispatch' + outputs: + release-tag: ${{ steps.release-tag.outputs.tag }} + steps: + - if: github.event_name == 'workflow_run' + name: Download Artifact from Release workflow + uses: dawidd6/action-download-artifact@bf251b5aa9c2f7eeb574a96ee720e24f801b7c11 # v6 + with: + workflow: release.yml + name: release-tag + - name: Output Release Tag + id: release-tag + run: | + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + echo "tag=${{ github.event.inputs.release-tag }}" >> "$GITHUB_OUTPUT" + else + value=`cat release-tag.data` + echo "tag=$value" >> "$GITHUB_OUTPUT" + fi + tidy-jira: + needs: [on-success-or-workflow-dispatch] + runs-on: ubuntu-latest + steps: + - name: Tidy Jira + uses: breathingdust/github-jira-tidy@b503407f09af5564fd806924bdf4495510d848b6 # v0.10.0 + with: + jira_host: 'hashicorp.atlassian.net' + jira_username: 'sdavis@hashicorp.com' + jira_password: ${{ secrets.jira_password }} + jira_jql_filter: ${{ secrets.jira_jql_filter }} + jira_github_url_field_id: 'cf[10089]' + github_release_name: ${{ needs.on-success-or-workflow-dispatch.outputs.release-tag }} + github_token: ${{ secrets.GITHUB_TOKEN }} + on-failure: + runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'failure' }} + steps: + - run: echo 'The triggering workflow failed' diff --git a/.github/workflows/provider.yml b/.github/workflows.disabled/provider.yml similarity index 100% rename from .github/workflows/provider.yml rename to .github/workflows.disabled/provider.yml diff --git a/.github/workflows/providerlint.yml b/.github/workflows.disabled/providerlint.yml similarity index 100% rename from .github/workflows/providerlint.yml rename to .github/workflows.disabled/providerlint.yml diff --git a/.github/workflows/pull_request_feed.yml b/.github/workflows.disabled/pull_request_feed.yml similarity index 83% rename from .github/workflows/pull_request_feed.yml rename to .github/workflows.disabled/pull_request_feed.yml index e266324bc52..1c02074b241 100644 --- a/.github/workflows/pull_request_feed.yml +++ b/.github/workflows.disabled/pull_request_feed.yml @@ -8,6 +8,8 @@ permissions: contents: read env: + SLACK_WEBHOOK_URL: ${{ secrets.FEED_SLACK_WEBHOOK_URL }} + SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK PR_HTML_URL: ${{ github.event.pull_request.html_url }} PR_TITLE: ${{ github.event.pull_request.title }} @@ -31,13 +33,11 @@ jobs: - name: Pull Request Merged if: github.event.pull_request.merged - uses: slackapi/slack-github-action@485a9d42d3a73031f12ec201c457e2162c45d02d # v2.0.0 + uses: slackapi/slack-github-action@37ebaef184d7626c5f204ab8d3baff4262dd30f0 # v1.27.0 env: MERGED_BY_URL: ${{ github.event.pull_request.merged_by.html_url }} MERGED_BY_LOGIN: ${{ github.event.pull_request.merged_by.login }} with: - webhook: ${{ secrets.FEED_SLACK_WEBHOOK_URL }} - webhook-type: incoming-webhook payload: | { "blocks": [ @@ -56,13 +56,11 @@ jobs: github.event.action == 'opened' && steps.community_check.outputs.maintainer == 'true' && github.actor != 'dependabot[bot]' - uses: slackapi/slack-github-action@485a9d42d3a73031f12ec201c457e2162c45d02d # v2.0.0 + uses: slackapi/slack-github-action@37ebaef184d7626c5f204ab8d3baff4262dd30f0 # v1.27.0 env: PR_AUTHOR_URL: ${{ github.event.pull_request.user.html_url }} PR_AUTHOR_LOGIN: ${{ github.event.pull_request.user.login }} with: - webhook: ${{ secrets.FEED_SLACK_WEBHOOK_URL }} - webhook-type: incoming-webhook payload: | { "blocks": [ @@ -80,13 +78,11 @@ jobs: if: | github.event.action == 'opened' && steps.community_check.outputs.partner == 'true' - uses: slackapi/slack-github-action@485a9d42d3a73031f12ec201c457e2162c45d02d # v2.0.0 + uses: slackapi/slack-github-action@37ebaef184d7626c5f204ab8d3baff4262dd30f0 # v1.27.0 env: PR_AUTHOR_URL: ${{ github.event.pull_request.user.html_url }} PR_AUTHOR_LOGIN: ${{ github.event.pull_request.user.login }} with: - webhook: ${{ secrets.FEED_SLACK_WEBHOOK_URL }} - webhook-type: incoming-webhook payload: | { "blocks": [ diff --git a/.github/workflows/pull_request_review.yml b/.github/workflows.disabled/pull_request_review.yml similarity index 88% rename from .github/workflows/pull_request_review.yml rename to .github/workflows.disabled/pull_request_review.yml index 4f6c4ee6564..11794c3db9f 100644 --- a/.github/workflows/pull_request_review.yml +++ b/.github/workflows.disabled/pull_request_review.yml @@ -28,15 +28,15 @@ jobs: if: | github.event.review.state == 'approved' && (steps.community_check.outputs.maintainer == 'true' || steps.community_check.outputs.partner == 'true') - uses: slackapi/slack-github-action@485a9d42d3a73031f12ec201c457e2162c45d02d # v2.0.0 + uses: slackapi/slack-github-action@37ebaef184d7626c5f204ab8d3baff4262dd30f0 # v1.27.0 env: REVIEW_AUTHOR_URL: ${{ github.event.review.user.html_url }} REVIEW_AUTHOR_LOGIN: ${{ github.event.review.user.login }} PR_HTML_URL: ${{ github.event.pull_request.html_url }} PR_TITLE: ${{ github.event.pull_request.title }} + SLACK_WEBHOOK_URL: ${{ secrets.FEED_SLACK_WEBHOOK_URL }} + SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK with: - webhook: ${{ secrets.FEED_SLACK_WEBHOOK_URL }} - webhook-type: incoming-webhook payload: | { "blocks": [ diff --git a/.github/workflows/pull_request_target.yml b/.github/workflows.disabled/pull_request_target.yml similarity index 99% rename from .github/workflows/pull_request_target.yml rename to .github/workflows.disabled/pull_request_target.yml index 16ede6f2207..fb25e93a871 100644 --- a/.github/workflows/pull_request_target.yml +++ b/.github/workflows.disabled/pull_request_target.yml @@ -35,7 +35,7 @@ jobs: - name: Apply Size Labels if: contains(fromJSON('["opened", "edited"]'), github.event.action) - uses: codelytv/pr-size-labeler@1c3422395d899286d5ee2c809fd5aed264d5eb9b # v1.10.2 + uses: codelytv/pr-size-labeler@c7a55a022747628b50f3eb5bf863b9e796b8f274 # v1.10.1 with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} xs_label: "size/XS" diff --git a/.github/workflows/release-tag.yml b/.github/workflows.disabled/release-tag.yml similarity index 75% rename from .github/workflows/release-tag.yml rename to .github/workflows.disabled/release-tag.yml index ef60bb4f23d..e94d8be304d 100644 --- a/.github/workflows/release-tag.yml +++ b/.github/workflows.disabled/release-tag.yml @@ -9,10 +9,8 @@ jobs: steps: - name: Notify Slack id: slack - uses: slackapi/slack-github-action@485a9d42d3a73031f12ec201c457e2162c45d02d # v2.0.0 + uses: slackapi/slack-github-action@37ebaef184d7626c5f204ab8d3baff4262dd30f0 # v1.27.0 with: - webhook: ${{ secrets.FEED_SLACK_WEBHOOK_URL }} - webhook-type: incoming-webhook payload: | { "blocks": [ @@ -25,3 +23,6 @@ jobs: } ] } + env: + SLACK_WEBHOOK_URL: ${{ secrets.FEED_SLACK_WEBHOOK_URL }} + SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK diff --git a/.github/workflows/release.yml b/.github/workflows.disabled/release.yml similarity index 100% rename from .github/workflows/release.yml rename to .github/workflows.disabled/release.yml diff --git a/.github/workflows/resource-counts.yml b/.github/workflows.disabled/resource-counts.yml similarity index 100% rename from .github/workflows/resource-counts.yml rename to .github/workflows.disabled/resource-counts.yml diff --git a/.github/workflows/semgrep-ci.yml b/.github/workflows.disabled/semgrep-ci.yml similarity index 100% rename from .github/workflows/semgrep-ci.yml rename to .github/workflows.disabled/semgrep-ci.yml diff --git a/.github/workflows/skaff.yml b/.github/workflows.disabled/skaff.yml similarity index 100% rename from .github/workflows/skaff.yml rename to .github/workflows.disabled/skaff.yml diff --git a/.github/workflows/snapshot.yml b/.github/workflows.disabled/snapshot.yml similarity index 100% rename from .github/workflows/snapshot.yml rename to .github/workflows.disabled/snapshot.yml diff --git a/.github/workflows/stale.yml b/.github/workflows.disabled/stale.yml similarity index 100% rename from .github/workflows/stale.yml rename to .github/workflows.disabled/stale.yml diff --git a/.github/workflows/website.yml b/.github/workflows.disabled/website.yml similarity index 100% rename from .github/workflows/website.yml rename to .github/workflows.disabled/website.yml diff --git a/.github/workflows/firewatch.yml b/.github/workflows/firewatch.yml deleted file mode 100644 index c3c10f4ebea..00000000000 --- a/.github/workflows/firewatch.yml +++ /dev/null @@ -1,25 +0,0 @@ -on: - schedule: - - cron: '0 * * * *' - workflow_dispatch: -name: Firewatch -jobs: - FirewatchJob: - if: github.repository_owner == 'hashicorp' - runs-on: ubuntu-latest - steps: - - name: Firewatch - uses: breathingdust/firewatch@7d8033475a379d86f7affd1f6a228f3a6e3f7ffb # v2.0.6 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - alert_threshold: 10 - issue_age_months: 3 - slack_token: ${{ secrets.SLACK_BOT_TOKEN }} - slack_channel: ${{ secrets.SLACK_CHANNEL }} - - name: UploadArtifact - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 - with: - name: firewatch - path: firewatch.data - if-no-files-found: error - retention-days: 1 diff --git a/.github/workflows/post_publish.yml b/.github/workflows/post_publish.yml deleted file mode 100644 index 84ada517445..00000000000 --- a/.github/workflows/post_publish.yml +++ /dev/null @@ -1,125 +0,0 @@ -name: Post Publish -on: - workflow_dispatch: - inputs: - release-tag: - type: string - description: 'Semver release tag e.g. v1.1.0' - required: true - workflow_run: - workflows: [Release] - types: - - completed -jobs: - on-success-or-workflow-dispatch: - runs-on: ubuntu-latest - if: github.event.workflow_run.conclusion == 'success' || github.event_name == 'workflow_dispatch' - outputs: - release-tag: ${{ steps.release-tag.outputs.tag }} - steps: - - if: github.event_name == 'workflow_run' - name: Download Artifact from Release workflow - uses: dawidd6/action-download-artifact@bf251b5aa9c2f7eeb574a96ee720e24f801b7c11 # v6 - with: - workflow: release.yml - name: release-tag - - name: Output Release Tag - id: release-tag - run: | - if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then - echo "tag=${{ github.event.inputs.release-tag }}" >> "$GITHUB_OUTPUT" - else - value=`cat release-tag.data` - echo "tag=$value" >> "$GITHUB_OUTPUT" - fi - tidy-jira: - needs: [on-success-or-workflow-dispatch] - runs-on: ubuntu-latest - steps: - - name: Tidy Jira - uses: breathingdust/github-jira-tidy@b503407f09af5564fd806924bdf4495510d848b6 # v0.10.0 - with: - jira_host: 'hashicorp.atlassian.net' - jira_username: 'sdavis@hashicorp.com' - jira_password: ${{ secrets.jira_password }} - jira_jql_filter: ${{ secrets.jira_jql_filter }} - jira_github_url_field_id: 'cf[10089]' - github_release_name: ${{ needs.on-success-or-workflow-dispatch.outputs.release-tag }} - github_token: ${{ secrets.GITHUB_TOKEN }} - on-failure: - runs-on: ubuntu-latest - if: ${{ github.event.workflow_run.conclusion == 'failure' }} - steps: - - run: echo 'The triggering workflow failed' - - registry-check: - runs-on: ubuntu-latest - needs: [on-success-or-workflow-dispatch] - outputs: - latest-version: ${{ steps.registry_latest_ver.outputs.current }} - steps: - - name: Registry Version Check - id: registry_latest_ver - shell: bash - run: | - for i in 1 2 - do - LATEST_VERSION=$(curl -s "https://registry.terraform.io/v2/providers/323/provider-versions/latest" | jq -r '.data.attributes.version') - if [[ "${{ needs.on-success-or-workflow-dispatch.outputs.release-tag }}" != ${LATEST_VERSION} ]]; then - sleep 1h - else - echo "Registry and Github Version matches" - echo "current=$LATEST_VERSION" >> "$GITHUB_OUTPUT" - fi - done - - echo "Registry does not contain ${{ needs.on-success-or-workflow-dispatch.outputs.release-tag }}" - exit 1 - - os-version-init: - name: Run terraform init On Supported Platforms - strategy: - matrix: - os: [ubuntu-latest, windows-latest, macOS-latest] - runs-on: ${{ matrix.os }} - needs: [registry-check] - steps: - - name: Specify Provider Version in TF Configuration - run: | - cat < main.tf - terraform { - required_providers { - aws = { - source = "hashicorp/aws" - version = ${{ needs.registry-check.outputs.latest-version }} - } - } - } - - provider "aws" { - region = "us-east-1" - } - EOF - - - name: Initialize the AWS Provider - run: terraform init -upgrade - - - name: Send Slack Notification Upon Failure - if: ${{ failure() }} - uses: slackapi/slack-github-action@485a9d42d3a73031f12ec201c457e2162c45d02d # v2.0.0 - with: - method: chat.postMessage - token: ${{ secrets.SLACK_BOT_TOKEN }} - payload: | - { - "channel" : "${{ secrets.SLACK_CHANNEL }}", - "blocks": [ - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": "ERROR: Registry Provder Initiation Failure on ${{ matrix.os }}" - } - } - ] - } diff --git a/.github/workflows/tag.yml b/.github/workflows/tag.yml new file mode 100644 index 00000000000..4bc6ef94f9c --- /dev/null +++ b/.github/workflows/tag.yml @@ -0,0 +1,37 @@ +name: Release +on: + push: + tags: + - "*" + +permissions: + contents: write + +jobs: + build: + name: Build + runs-on: ubuntu-latest + steps: + - name: Setup Go + uses: actions/setup-go@v5 + with: + go-version: 1.23.2 + id: go + + - name: Checkout + uses: actions/checkout@v4 + - name: Download dependencies + run: go mod download + - name: Free space # Otherwise, runner runs out of space. + run: | + sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc /opt/hostedtoolcache/CodeQL + sudo docker image prune --all --force + sudo docker builder prune -a + - name: Release + uses: goreleaser/goreleaser-action@7ec5c2b0c6cdda6e8bbb49444bc797dd33d74dd8 + with: + distribution: goreleaser + version: latest + args: release --clean + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/team_slack_bot.yml b/.github/workflows/team_slack_bot.yml deleted file mode 100644 index ccc30e282c4..00000000000 --- a/.github/workflows/team_slack_bot.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: team-slack-bot - -on: - schedule: - - cron: '0 15 * * 1-5' - -jobs: - open-pr-stats: - runs-on: ubuntu-latest - name: open-pr-stats - if: github.repository_owner == 'hashicorp' - steps: - - uses: actions/create-github-app-token@5d869da34e18e7287c1daad50e0b8ea0f506ce69 # v1.11.0 - id: app-token - with: - app-id: ${{ secrets.APP_ID }} - private-key: ${{ secrets.APP_PEM }} - - name: open-pr-stats - uses: breathingdust/github-team-slackbot@3519d5c7bdd556317b6158aeff5ae9c93c960bdd # v18.5.2 - with: - github_token: ${{ steps.app-token.outputs.token }} - team_slug: terraform-aws - slack_token: ${{ secrets.SLACK_BOT_TOKEN }} - slack_channel: ${{ secrets.SLACK_CHANNEL }} diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml new file mode 100644 index 00000000000..9edf3a760ba --- /dev/null +++ b/.github/workflows/update.yml @@ -0,0 +1,110 @@ +name: Check Fork for Latest Release + +on: + schedule: + - cron: '0 12 * * *' # Runs daily at 12:00 UTC + workflow_dispatch: # Allows manual triggering of the workflow + +permissions: {} + +jobs: + check-latest-release: + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Fetch Latest Release from Upstream + id: latest-release + run: | + # Replace with the owner/repo of the upstream repository + UPSTREAM_OWNER="hashicorp" + UPSTREAM_REPO="terraform-provider-aws" + + # Use GitHub API to get the latest release + LATEST_RELEASE=$(curl -s https://api.github.com/repos/$UPSTREAM_OWNER/$UPSTREAM_REPO/releases/latest) + + # Extract the tag name and commit SHA from the release data + LATEST_RELEASE_TAG=$(echo "$LATEST_RELEASE" | jq -r .tag_name) + LATEST_RELEASE_COMMIT=$(curl -s https://api.github.com/repos/$UPSTREAM_OWNER/$UPSTREAM_REPO/commits/$LATEST_RELEASE_TAG | jq -r .sha) + + echo "Latest release tag: $LATEST_RELEASE_TAG" + echo "Latest release commit: $LATEST_RELEASE_COMMIT" + + echo "LATEST_RELEASE_TAG=$LATEST_RELEASE_TAG" >> $GITHUB_ENV + echo "LATEST_RELEASE_COMMIT=$LATEST_RELEASE_COMMIT" >> $GITHUB_ENV + echo "UPSTREAM_OWNER=$UPSTREAM_OWNER" >> $GITHUB_ENV + echo "UPSTREAM_REPO=$UPSTREAM_REPO" >> $GITHUB_ENV + + - name: Check if Fork Contains Latest Release Commit + run: | + if git merge-base --is-ancestor $LATEST_RELEASE_COMMIT HEAD; then + echo "Your fork contains the latest release commit from the upstream repository ($LATEST_RELEASE_COMMIT)." + else + echo "Your fork does NOT contain the latest release commit from the upstream repository ($LATEST_RELEASE_COMMIT)." + echo "UPDATE=true" >> $GITHUB_ENV + fi + - name: Add upstream repository + if: env.UPDATE + run: | + git remote add upstream https://github.com/$UPSTREAM_OWNER/$UPSTREAM_REPO.git + git fetch upstream --tags + + - name: Create branch from upstream tag + if: env.UPDATE + run: | + git fetch upstream $LATEST_RELEASE_TAG + git checkout $LATEST_RELEASE_TAG + new_branch="pr-from-$LATEST_RELEASE_TAG" + git checkout -b "$new_branch" + echo "NEW_BRANCH=$new_branch" >> $GITHUB_ENV + + - name: Exclude workflow files from the branch + if: env.UPDATE + run: | + git config --global user.email "githubcoveord@coveo.com" + git config --global user.name "coveobot" + git restore --source=origin/main -- .github + git add .github/ + git commit -m "chore: checkout .github/ files from main branch" + + - name: Push branch to fork + if: env.UPDATE + run: | + git push origin $NEW_BRANCH + + - name: Open pull request + if: env.UPDATE + id: open-pull-request + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7 + with: + github-token: ${{ github.token }} + result-encoding: string + script: | + const {data} = await github.rest.pulls.create({ + owner: 'coveooss', + repo: '${{ env.UPSTREAM_REPO }}', + head: '${{ env.NEW_BRANCH }}', + base: 'main', + title: "chore: Update from ${{ env.UPSTREAM_OWNER }}/${{ env.UPSTREAM_REPO }} (${{ env.LATEST_RELEASE_TAG }})", + body: "A new tag (${{ env.LATEST_RELEASE_TAG }}) has been released in the upstream repository (${{ env.UPSTREAM_OWNER }}/${{ env.UPSTREAM_REPO }}). This PR updates the main branch to this version. " + }) + + return data.html_url + + - name: Slack Notify + uses: slackapi/slack-github-action@v2.0.0 + if: env.UPDATE + with: + method: chat.postMessage + token: ${{ secrets.RELEASE_SLACK_BOT_TOKEN }} + errors: true + payload: | + channel: "C05H5DA6CE8" + text: "New pull request in https://github.com/${{ github.repository }} \n ${{ steps.open-pull-request.outputs.result}}" +